Android TTS男声

时间:2016-04-17 19:33:16

标签: android text-to-speech speech-synthesis google-voice

是否可以在android.speech.tts.Voice上安装和配置一些男声?我已经阅读了Android最近提供的一些新闻,但我无法找到或配置任何新闻。我尝试使用命令tts.setLanguage(Locale.ITALY);的所有内容都是女性。

4 个答案:

答案 0 :(得分:3)

不,不是现在。需要enhancement request才能将性别纳入Voice Feature Set,以便:{/ p>

语音[名称:en-AU-afi-network,locale:en_AU,质量:500,延迟:400,requiresNetwork:true,功能:[networkTimeoutMs,networkRetriesCount,男性]]

我已经向文字转语音提供商发送了一封电子邮件,内容包括此内容 - 因为等待谷歌的增强可能需要几年的时间。

您可以同时做的就是通过引用性别对引擎名称进行硬编码。这是耗时的,并且不能保证他们不会改变名称......需要我的。

答案 1 :(得分:3)

为了增强@brandall的答案,可以使用男/女声音并动态地从App UI更改它。像这样定义TTS(在构造函数中添加tts引擎):

tts = new TextToSpeech(context, this, "com.google.android.tts");
  

contex = activity / app

     

this = TextToSpeech.OnInitListener

tts.getVoices()列表中,按照以下名称选择所需的语音:

for (Voice tmpVoice : tts.getVoices()) {
            if (tmpVoice.getName().equals(_voiceName)) {
                return tmpVoice;
                break;
            }
}

N.B:你需要通过从_voiceName获取硬编码的voice_name来设置tts.getVoices()。例如:对于英国男性,它将是:“en-us-x-sfg#male_1-local”

答案 2 :(得分:1)

我在这里使用谷歌语音引擎发布选择男性或女性语音的代码。

    Set<String> a=new HashSet<>();
    a.add("female");//here you can give male if you want to select mail voice.

    Voice v=new Voice("en-us-x-sfg#female_2-local",new Locale("en","US"),400,200,true,a); 
    myTTS.setVoice(v);

这里大多数都关注音色名称。喜欢&#34; en-us-x-sfg#female_2-local&#34;

您可以使用以下方法获取所有声音,您可以在文件中下载。

myTTS.getVoices() // you can get all voices of male female related information which we can set in Voice.whoever voice we want to listen.(male /female.)

答案 3 :(得分:0)

// use this code after onInit success assuming you have initilaised text to speech as tts

Set<Voice> voices = tts.getVoices();
for (Voice tmpVoice : tts.getVoices()) {
    if (tmpVoice.getName().contains("#male") && tmpVoice.getName().contains("en-us")) {
        voice = tmpVoice;
        break;
    }
    else {
        voice = null;
    }
}
if (voice != null) {
    tts.setVoice(voice);
}

on_init成功之后继续使用此代码,请进行版本检查,因为getVoices()已添加到API级别21