依次在NSArray中运行TTS

时间:2019-06-17 04:57:00

标签: objective-c text-to-speech avspeechsynthesizer

我有一个带有单词的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;

}

我要一一执行。

1 个答案:

答案 0 :(得分:2)

突出显示发声单词的最佳方法是使用speechSynthesizer:willSpeakRangeOfSpeechString:utterance:协议的AVSpeechSynthesizerDelegate方法。

如果不使用此委托方法,将无法实现目标。

看看this complete and useful example (ObjC和Swift),它会以粗体显示带有语音合成的每个发声单词。