为什么 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 编写的项目备份,但没有结果。

我不确定到底是什么导致了这个问题,但现在已经解决了。 OS X 的更新似乎解决了这个问题。我现在是 运行 OS X 10.10.5,程序运行完美。

感谢Aderstedt and Eric D.的建议。

如果其他人遇到此问题并找到不同的解决方案,请发表评论或回答,因为我会对其他解决方案感兴趣。