如何在swift中添加/更改语音语音性别到iOS应用程序?我正在使用AVSpeechSynthesisvoice Class来获取语音

时间:2016-03-09 21:04:00

标签: ios swift text-to-speech speech-synthesis avspeechsynthesizer

我使用AVSpeechSynthesizer&创建了一个带语音功能的应用。在TableView中显示AVSpeechSynthesisVoice: speechVoices()函数的语言列表。用户可以从TableView中选择语音语言。

我想要实现的下一个目标是添加语音性别,以便用户可以在 Siri 之类的默认男性女性语音之间切换应用程序。我不想让它变得复杂,只是寻找默认的男性或女性声音。

speechVoices()返回的声音具有特定于每个声音的默认男声或女声。

无论如何我可以改变吗?我在应用设置页面上放置了UIPickerView,以便在男声和女声之间进行选择。

然而,我做了一些研究,但找不到任何文件。似乎在最新的iOS版本之前没有这样的支持。

到目前为止,有没有人尝试过这样的功能?

1 个答案:

答案 0 :(得分:0)

    //NSArray* voices = AVSpeechSynthesisVoice.speechVoices;
    //voice identifier inspection reports
    //com.apple.ttsbundle.Samantha-compact
    //com.apple.speech.synthesis.voice
    //AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:text];
    //Replace hard-coded name with any available in the list pulled from the speechVoices array

    NSUInteger idx = [AVSpeechSynthesisVoice.speechVoices indexOfObjectPassingTest:^BOOL(AVSpeechSynthesisVoice * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
      return [obj.identifier containsString:@"Samantha"];
    }];
    if (idx > -1) {
      AVSpeechSynthesisVoice* voice = AVSpeechSynthesisVoice.speechVoices[idx];
      utterance.voice = voice;
    }