这是我的文本语音转换代码。在iOS 11下一切都很好。但是在iOS 11中,委托方法没有被调用。AVSpeechSynthesizerDelegate
设置准确。(因为它在iOS 11下工作)
按下按钮
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
synthesizer.delegate = self;
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:stringToSpeech];
[utterance setRate:AVSpeechUtteranceDefaultSpeechRate];
[utterance setPitchMultiplier:1];
[utterance setVolume:1];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
[synthesizer speakUtterance:utterance];
这些是我实现的委托方法。
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance {
NSLog(@"finished");
}
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance{
NSLog(@"Started");
}
有人遇到过这个问题吗?任何帮助都将不胜感激。
我在iOS 11.0.3上测试,使用Xcode 9.0
2条答案
按热度按时间db2dz4w81#
您的
synthesizer
对象必须是一个属性才能工作:)。或者创建
AVSpeechSynthesizer
示例,即synthesizer
,如下所示:或者像这样的读写。
如果管用就告诉我。
omqzjyyz2#
在我的例子中,我是用Swift写的。最后我发现委托方法必须标记为公共的,然后我得到了回调。