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
是否可以在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