[Android] 読み上げ TTS (Text To Speech) の設定

iPhone には Siri を使っての読み上げが可能ですが、Androidにもないかと思ったところTTS (TextToSpeech) というのがありました。

TTSを使うには、実機に音声データがインストールされていないといけないのですが、デフォルトでは「Pico TTS」という英語版が一応あり、その他の言語もネットワーク経由で使えるようです。

tts_2

Android Studio 2.1.1
Android 6.0

 

sponsored link

Text To Speech

 
昔のデフォルトの「Pico TTS」ですが、これはロボットのような音声でしたが、ネットワーク経由での音声変換は結構使えそうな気もします。

サードパーティ製もあります。自分で色々な音声データをインストールでき、日本語ではKDDIの「N2 TTS」がフリーで使えます。
https://play.google.com/store/apps/details?id=jp.kddilabs.n2tts&hl=ja
 
英語でもSVOXという有料ですが男女の音声データがあります。
SVOXの設定
 

TTS 設定

 
とりあえずデフォルトの設定でTTSを試してみましょう。

TTSの音声データを確認するには
「設定」->「言語と入力」->「テキスト読み上げ」に入ると
Pico TTS があります。サンプル再生で音声を試せます。(実機でテストしましょう)
 
tts_3
 
コーディングは大まかにこのようになります。

  1. TestTo Speech インスタンス生成
    • TestTo Speech tts = new TextToSpeech(this, this)
  2. onInit() で初期化の結果ステータスを取得
  3. speak() メソッドで読み上げ開始
    • tts.speak(string, TextToSpeech.QUEUE_FLUSH, null)

 
今回は、読み上げの開始と終了タイミングを取得するために、setOnUtteranceProgressListener() を使います。
また、再生スピードやピッチも変更できるようにしてみました。
 
MainActivity.java

 
activity_main.xml