为什么 NSSpeechSynthesizer 在 OS X 上输出空文件? (Swift 2)
Why is NSSpeechSynthesizer outputting empty files on OS X? (Swift 2)
我在 MacBook Pro 运行 OS X 10.10.4
上使用 Xcode 7(测试版 5)和 Swift 2.0
每当我尝试使用 "startSpeakingString:toURL:" 函数时,文件存在但为空。 (持续时间为“--”,大小为 "zero bytes")但是函数 "startSpeakingString:" 确实有效,并且音频按预期播放。
我尝试更改 "volume" 和 "rate" 变量,并且我尝试使用 "usleep" 之类的东西来确保进程不会中断。
初始化:
let mySynth: NSSpeechSynthesizer = NSSpeechSynthesizer(voice: NSSpeechSynthesizer.defaultVoice())!
let dirs : [String] = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as [String])
使用:
let documentsDir = dirs[0]
let audioDir = documentsDir.stringByAppendingString("/temp.aiff")
let audioURL = NSURL.fileURLWithPath(audioDir)
mySynth.startSpeakingString("Testing some more", toURL: audioURL)
我认为这可能与 Swift 2.0 不支持 "String.stringByAppendingPathComponent" 有关,但使用新功能打印出的完整路径完全相同。我也考虑过使用不同的文件扩展名代替“.aiff”,但我找不到任何指定新格式的文档。
我在项目的早期确实有过这个工作,但我一直无法查明是什么导致它崩溃。我尝试使用为 Swift 1.2 编写的项目备份,但没有结果。
我在 MacBook Pro 运行 OS X 10.10.4
上使用 Xcode 7(测试版 5)和 Swift 2.0每当我尝试使用 "startSpeakingString:toURL:" 函数时,文件存在但为空。 (持续时间为“--”,大小为 "zero bytes")但是函数 "startSpeakingString:" 确实有效,并且音频按预期播放。
我尝试更改 "volume" 和 "rate" 变量,并且我尝试使用 "usleep" 之类的东西来确保进程不会中断。
初始化:
let mySynth: NSSpeechSynthesizer = NSSpeechSynthesizer(voice: NSSpeechSynthesizer.defaultVoice())!
let dirs : [String] = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as [String])
使用:
let documentsDir = dirs[0]
let audioDir = documentsDir.stringByAppendingString("/temp.aiff")
let audioURL = NSURL.fileURLWithPath(audioDir)
mySynth.startSpeakingString("Testing some more", toURL: audioURL)
我认为这可能与 Swift 2.0 不支持 "String.stringByAppendingPathComponent" 有关,但使用新功能打印出的完整路径完全相同。我也考虑过使用不同的文件扩展名代替“.aiff”,但我找不到任何指定新格式的文档。
我在项目的早期确实有过这个工作,但我一直无法查明是什么导致它崩溃。我尝试使用为 Swift 1.2 编写的项目备份,但没有结果。