我使用 Nuance TTS 发现了这个奇怪的问题。 startSpeakingString:
和 startSpeakingString:toURL:
工作找到,但 stopSpeakingAtBoundary
似乎在 startSpeakingString:toURL:
中失败案例。
为了测试这一点,我实现了委托(delegate),并在 willSpeakWord...
中放置了一个简单的 NSLog()
方法来查看将要说出的单词。调用 stopSpeakingAtBoundary
后,NSLog()
继续被调用,这意味着 TTS 引擎没有响应停止命令。
此问题似乎仅在使用 Nuance 语音时出现,例如 Alice(IT)或 Daniel(美国,如果我记得的话)。使用紧凑版本的语音也会发生这种情况。
例如,使用 Alex,当我调用 stop 方法时,文字打印过程也会立即停止
代码很简单
NSSpeechSynthesizer* synth;
synth = [NSSpeechSynthesizer alloc] init];
// setting voice parameters
[synth startSpeakingString:@"a quite long message..." toURL:aURL];
在另一种方法中,将文本转换为音频...
[synth stopSpeakingAtBoundary:NSSpeechImmediateBoundary];
大家有遇到过这个问题吗?你知道如何修复它吗?或者你们中的任何人都可以建议我一个解决方法吗?
非常感谢您的帮助...
最佳答案
嗯,这解决了我的问题...该问题是由 NSSpeechImmediateBoundary
停止样式触发的。使用 NSSpeechWordBoundary
代替,Nuance 和 infoVox iVox 语音也将正确停止说话。
关于objective-c - NSSpeechSynthesizer、stopSpeaking 和 Nuance 语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25308489/