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