Hello everybody! In my app I allow the user to change TTS voices and English Alex voice is one of possible options. However, there are some cases when it's treated as available when it's actually not. It results in pronouncing the TTS utterance with another voice. To prepare the list of available voices I use next code: NSMutableArray *voices = [NSMutableArray new]; for (AVSpeechSynthesisVoice *voice in [AVSpeechSynthesisVoice speechVoices]) { tt[voices addObject:@{ tttt@id: voice.identifier, tttt@name: voice.name, tttt@language: voice.language, tttt@quality: (voice.quality == AVSpeechSynthesisVoiceQualityEnhanced) ? @500 : @300 tt}]; } To start the playback I use the next code (here it's simplified a bit): AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:text]; utterance.voice = [AVSpeechSynthesisVoice voiceWithIdentifier:voice]; [AVSpeechSynthesizer speakUtterance:utterance]; Cases when AVSpeechSynthesisVoice returns Alex as available when it's not: The easiest way to reproduce it is
3
0
2.7k