0

我目前正在开发一个密集使用文本到语音的应用程序(我正在使用 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);
    }
4

1 回答 1

3

几年前我曾与 TTS 合作过,并记得,没有太多的配置可能性。

有一个有用的方法setEngineByPackageName(String packageName)

一些 TTS 引擎对每个声音都有单独的包名称。例如,使用 Loquendo,您需要编写tts.setEngineByPackageName("com.loquendo.tts.susan"),您的应用程序将使用美国语音 Susan 说话。

但是一些 TTS 引擎有共同的应用程序和声音作为插件。因此,您只能通过以下方式配置它:

tts.setEngineByPackageName("com.svox.pico");
tts.setLanguage(Locale.US);

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

于 2013-06-20T09:53:06.393 回答