2013-08-16 28 views
2

使用Android TextToSpeech时,有没有什么办法可以指定语音的性别,例如tts.setGender(TextToSpeech.MALE)tts.speak("<voice gender='male'>Hello </voice>")Android TextToSpeech,设置性别?

谢谢您的时间,

最好的问候,

詹姆斯

回答

0

我一直在寻找相同的,但做一些研究之后,有没有办法来配置声音。无论音高,速度也没有性别

2

您可以设置tts.setLanguageLocale.UK女性和Locale.US男性

if(myTTS.isLanguageAvailable(Locale.ENGLISH)==TextToSpeech.LANG_AVAILABLE) 
myTTS.setLanguage(Locale.UK); 

或者

if(myTTS.isLanguageAvailable(Locale.ENGLISH)==TextToSpeech.LANG_AVAILABLE) 
myTTS.setLanguage(Locale.US); 

唯一需要注意的是,这仅与新的Android版本的作品,我认为4.0及以上。这个博客post有更多关于它的信息。

+0

对于英语来说这是一个好主意,但不幸的是我需要使用德语声音,这是女性使用的DefaultEngine。我将尝试下载另一个引擎(带有男性声音),并查看是否可以在声音之间切换。 Das ist eine gute IdeefürEnglisch,aber leider muss ich eine deutsche Stimme benutzen,die weiblich ist mit DefaultEngine。 Ich werde versuchen,ein anderes Engine herunterladen(mitmännlicherStimme),und sehe,ob ich zwischen Stimmen umschalten kann。 – James

2

语音数据(用于生成语音)对于特定语音非常具体,数据量非常大 - 移动设备更为明智。所以你不能随意切换男性/女性。以Ivona voices为例,您可以下载美国英语(Kendra,女性)或英国英语(Amy,女性)的语音数据,每个数据大小为〜150 MB。

您可以尝试播放不同的语言(美国与英国),取决于用户的语音数据加载,它可能是男性,可能是女性。

至于音高和速度,是的,你可以改变TTS音高和速度。虽然我尝试过,但听起来不太好,但可能取决于您使用的是哪种语音数据。

这些API:

tts.setPitch(float pitch); 
tts.setSpeechRate(float speechRate); 

在两种情况下,参数1.0表示 '正常的' 俯仰/速率。