Android TTS男声

Android TTS male voices

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

不,目前没有。 enhancement request is needed so that the gender can be included in the Voice Feature Set,这样:

语音[名称:en-AU-afi-network,区域设置:en_AU,质量:500,延迟:400,要求网络:true,功能:[networkTimeoutMs,networkRetriesCount,男性]]

我已经向 Text to Speech 提供商发送了有关包含此内容的电子邮件 - 因为等待 Google 的增强功能可能还需要数年时间。

与此同时,您所能做的就是将引擎的名称硬编码为性别。这很耗时,而且不能保证他们不会更改名称....我必须这样做。

为了增强@brandall 的回答,可以使用 male/female 语音并从 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:您需要通过从 tts.getVoices() 硬编码 voice_name 来设置 _voiceName。例如:对于英国男性,它将是:"en-us-x-sfg#male_1-local"

我在这里发布使用 google 语音引擎的 select 男声或女声的代码。

    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);

这里最关心的是Voices名称。喜欢 "en-us-x-sfg#female_2-local"

您可以使用以下方法获取所有语音,并可以下载到文件中。

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.)
// 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