运行 NSArray 中的 TTS 按顺序
Run TTS in NSArray sequentially
我有 NSArray 里面有文字。
我想应用程序按顺序读取 tts 并在 UILabel 中打印应用程序所说的文本。
但是标签上的字显示在最后一个。
我试过时间暂停等
for (Word * w in ttswords) {
[self speechword:w];
}
-(void)speechword:(Word*)w{
utterance = [[AVSpeechUtterance alloc] initWithString:[w.title stringByReplacingOccurrencesOfString:@"~" withString:@""]];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
[synthesizer speakUtterance:utterance];
_lb_title.text = w.title;
}
我要一一执行
突出发音单词的最佳方法是使用 AVSpeechSynthesizerDelegate
协议的 speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
方法。
如果你不使用这个委托方法,你将无法达到你的目标。
看看 this complete and useful example (ObjC 和 Swift),它通过语音合成以粗体显示每个发音的单词。
我有 NSArray 里面有文字。 我想应用程序按顺序读取 tts 并在 UILabel 中打印应用程序所说的文本。 但是标签上的字显示在最后一个。
我试过时间暂停等
for (Word * w in ttswords) {
[self speechword:w];
}
-(void)speechword:(Word*)w{
utterance = [[AVSpeechUtterance alloc] initWithString:[w.title stringByReplacingOccurrencesOfString:@"~" withString:@""]];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
[synthesizer speakUtterance:utterance];
_lb_title.text = w.title;
}
我要一一执行
突出发音单词的最佳方法是使用 AVSpeechSynthesizerDelegate
协议的 speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
方法。
如果你不使用这个委托方法,你将无法达到你的目标。
看看 this complete and useful example (ObjC 和 Swift),它通过语音合成以粗体显示每个发音的单词。