2017-06-18 10 views
8

私はAndroidのTextToSpeechクラスを使用しています。すべて正常に動作しています。しかし、デフォルトではインストールされていませんが、TTSエンジンでサポートされている言語/ロケールがあり、失われた音声データの状態を取得することはできません。Android TTSで、音声データが欠落/ダウンロードされていないサポートされているロケールがチェックされています

インターネットでは、音声データがダウンロードされていない新しいロケールにsetLanguageを設定しようとすると、単に音声データをダウンロードして通話方法を正常/正常に実行します。

ただし、インターネットを使用していない場合、音声データがダウンロードされていない新しいロケールにsetLanguageを設定しようとすると、音声データをダウンロードしようとします。しかし、インターネットがない場合は、選択されたロケールの「言語と入力」の下の「TTS音声データ」設定画面に進捗なしで「ダウンロード中」と表示されます。そして、音声データがダウンロードされていないので、speakメソッドは機能しません。これが起こると、TTSのメソッドsetLanguage/isLanguageAvailableは私にこの状態を取得するためにLANG_MISSING_DATAを返しますが、単にLANG_COUNTRY_AVAILABLEを返します。 enter image description here

選択されているロケールの音声データがダウンロード/欠落していないことを検出し、トーストメッセージまたは直接的なユーザーにダウンロードされたことを検出できるようにしたいと考えています。私は、このoneのようにisLanguageAvailableを使用することを提案するいくつかの投稿を見てきました。私もandroid documentationを見て、isLanguageAvailableの戻り値は、LANG_MISSING_DATAで失われた音声データの状態を取得する必要があるようです。

また、私がリンクしているAndroidドキュメントに示唆されているように、欠落しているデータをチェックする別の方法として、ACTION_CHECK_TTS_DATAでインテントを送信しようとしました。しかし、resultCodeは、音声データが欠落している(CHECK_VOICE_DATA_FAIL)とキャプチャ/表示しなかったが、代わりにCHECK_VOICE_DATA_PASSを返す。

この場合、音声データが失われた状態で、使用可能/サポートされている言語/ロケールの状態をどのようにキャプチャする必要がありますか?また、CHECK_VOICE_DATA_PASSとLANG_MISSING_DATAが返される値でない理由も不思議です。音声データが欠落している場合、これらの値を返すべきではありませんか?ありがとう! 以下は、音声データがダウンロードされていないロケールでsetLanguageおよびisLanguageAvailableを使用しようとするときの戻り値です(0および1はログに表示されるメソッドの戻り値、-1は欠落に対応するものです)。音声データ):enter image description here

答えて

5

次の機能を使用して、使用可能なすべてのロケールを見つけることができます。このコードがあなたに役立つことを願っています。

Locale loc = new Locale("en"); 
Locale[] availableLocales= loc.getAvailableLocales(); 
Boolean available=Boolean.FALSE; 
for (int i=0;i<availableLocales.length;i++) 
{ 
    if(availableLocales[i].getDisplayLanguage().equals("your_locale_language")) 
    { 
     available=Boolean.TRUE; 
     // TODO: 
    } 
} 
+0

ありがとうございました!しかし、それは私が探していたものではありません。 TTSインスタンスを使用して、エンジンによってサポートされているサポートされているすべての言語をより効果的に取得することさえできます。とにかく、あなたの入力に感謝! –

0

とにかく長い質問のようです。音声機能をチェックして調べる必要があるようです。

Set<String> features = voice.getFeatures(); 
if (features.contains(TextToSpeech.Engine.KEY_FEATURE_NOT_INSTALLED)) { 
//Voice data needs to be downloaded 
... 
} 
関連する問題