くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Android アプリでOS組み込みの音声合成エンジンを使ってTextToSpeechを行う

この前ハッカソンAndroid アプリでOS組み込みの音声合成エンジンを使って TextToSpeechを実装してたのでその時の知見を共有します。

実装方法

1. AndroidFramework に含まれている TextToSpeech Class を利用するだけです。

developer.android.com

2. ラッパークラスを作ってみた

    fun speach(text: String) {
       val  tts = TextToSpeech((context)) {
            tts.speak(text, TextToSpeech.QUEUE_ADD, null, null)
        }.apply {
            this.language = Locale.JAPAN
        }
    }

つまづきそうなところ

1. 音声合成エンジンの初期化タイミング問題

音声合成エンジンの初期化のタイミングの問題で Constructor に渡す Linstener の中で音声を発生するようにしないといけない
そのため、TextToSpeech を連続して呼び出すときに一つのインスタンスを使いまわそうとしてハマることがあると思います。