[Android]TextToSpeechでテキストを読み上げる

Androidでテキストを音声で読み上げるのは以下で行います。
※端末によっては日本語の読み上げに対応していないことがあるようです。

TextToSpeechの保持変数を定義します。

//TTSインスタンス
public static final String TTS_SPEAK_ID = "ALAM_SPEAKING";
private TextToSpeech mTTS;
private boolean mTTSInit = false;

TextToSpeechのイベントを受け取るリスナーを定義します。

//////////////////////////////////////////////////////////////////////////
//TextToSpeech.OnInitListener
//初期化完了を受け取るリスナー
private final TextToSpeech.OnInitListener mTTSOnInitListener = status -> {
    // TTS初期化
    if (TextToSpeech.SUCCESS == status) {
        //初期化完了したことを保存する
        mTTSInit = true;
    } else {
        //エラー時の処理
    }
};

//再生開始、停止、エラーを受け取るリスナー
private final UtteranceProgressListener mUtteranceProgressListener = new UtteranceProgressListener(){

    @Override
    public void onStart(String s) {

    }

    @Override
    public void onDone(String s) {
    }

    @Override
    public void onError(String s) {

    }
};

onCreateハンドラなどで初期化します。

@Override
public void onCreate() {

    super.onCreate();

    // TTS インスタンス生成
    mTTS = new TextToSpeech(this, mTTSOnInitListener);
    mTTS.setOnUtteranceProgressListener(mUtteranceProgressListener);

}

任意の個所で再生します。

if(mTTSInit){
    //初期化済みなら音声を再生する
    mTTS.speak("テスト音声", TextToSpeech.QUEUE_FLUSH, null, "TTS_SPEAK_ID");
}

0 件のコメント :

コメントを投稿