我有一个带有单词的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;
}
我要一一执行。
答案 0 :(得分:2)
突出显示发声单词的最佳方法是使用speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
协议的AVSpeechSynthesizerDelegate
方法。
如果不使用此委托方法,将无法实现目标。
看看this complete and useful example (ObjC和Swift),它会以粗体显示带有语音合成的每个发声单词。