我使用Nuance TTS发现了这个奇怪的问题。 startSpeakingString:
和startSpeakingString:toURL:
可以找到,但是stopSpeakingAtBoundary
在startSpeakingString:toURL:
情况下似乎失败。
为了测试这一点,我实现了委托,并在willSpeakWord...
中放置了一个简单的NSLog()
方法来查看要说的单词。调用stopSpeakingAtBoundary
后,将继续调用NSLog()
,这意味着TTS引擎未响应stop命令。
似乎仅使用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语音也将正确停止讲话。