Запускать TTS в NSArray последовательно - PullRequest
0 голосов
/ 17 июня 2019

У меня есть 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 Ответ

2 голосов
/ 17 июня 2019

Лучший способ выделить вокализованное слово - использовать метод speechSynthesizer:willSpeakRangeOfSpeechString:utterance: протокола AVSpeechSynthesizerDelegate.

Если вы не используете этот метод делегата, вы не сможете достичь своей цели.

Взгляните на этот полный и полезный пример (ObjC и Swift) , который отображает каждое вокализованное слово жирным шрифтом с синтезом речи.

...