我目前正在开发一个大量使用文字转语音的应用程序(我正在使用android.speech.tts.TextToSpeech)我已经能够将TTS集成到我的语音中,目前是默认的美国美国语音是大声朗读我的文字。
我想知道如何对语音引擎进行配置更改。例如,我想降低文本读取的速度,在男性和女性之间交换声音,甚至提供对不同语言的支持。任何人都可以帮我提供这些信息。在此先感谢:)
[以下是我目前正在使用的代码(礼貌:一个关于android TTS的非常好的基本博客),所有变量都已声明我没有复制整个代码,而且这段代码片段工作正常。]
btnSpeak = (ImageButton) findViewById(R.id.ttsIB);
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
speakOut();
}
});
@Override
public void onDestroy() {
// to shutdown TTS
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onInit(int status)
{
if (status == TextToSpeech.SUCCESS)
{
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
{
Log.e("TTS", "This Language is not supported");
}
else
{
btnSpeak.setEnabled(true);
speakOut();
}
}
else
{
Log.e("TTS", "Initilization Failed!");
}
}
private void speakOut()
{
String text = textVal.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
答案 0 :(得分:2)
几年前我和TTS合作过,并且记住,配置的可能性不大。
有一种有用的方法setEngineByPackageName(String packageName)
。
某些TTS引擎为每个语音都有单独的包名称。例如,使用Loquendo,您需要编写tts.setEngineByPackageName("com.loquendo.tts.susan")
,您的应用将与美国语音Susan对话。
但是一些TTS引擎具有常见的应用和声音作为插件。因此,您只能以这种方式配置它:
tts.setEngineByPackageName("com.svox.pico");
tts.setLanguage(Locale.US);
如果此引擎有多个美国语音,您的应用程序将使用默认语音(在手机首选项中选择)