Android文字转语音配置和变体

时间:2013-06-20 09:13:59

标签: android text-to-speech speech-synthesis

我目前正在开发一个大量使用文字转语音的应用程序(我正在使用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);
    }

1 个答案:

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

如果此引擎有多个美国语音,您的应用程序将使用默认语音(在手机首选项中选择)