0

私は現在、Text-To-Speech を集中的に使用するアプリを開発しています (私は 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 に答える