さまざまな言語でテキストを読み取るアプリを実装しようとしています。驚いたことに、メソッドisLanguageAvailable(Locale loc)を使用すると、まだダウンロードされていない Google TTS リストの言語に対してtrueが返されます。speak()メソッドを呼び出したときにも再生されます。私は、これはオンラインの声であるために起こると結論付けました。
ドキュメントには、Voice オブジェクトに対してメソッドgetFeatures()を使用して、音声がオンラインかどうかを知ることができることが示されています。ただし、Voiceクラスは API >= 21 で実装されています。API < 21 では、 TextToSpeechクラスに加えてgetFeatures(Locale loc)メソッドがあり、さまざまな機能の説明を含む文字列配列を返すことになっています。さまざまなエンジンとロケールでこの最後の方法を試しましたが、通常は空の配列が得られます。おそらく、これは TTS 開発者が入力できるかどうかにかかわらず追加情報です...
では、tts-locale が API < 21 のオンライン ロケールであるかどうかをどのように知ることができますか?