6

数年前にTexttoSpeech APIを使用してアプリに音声プロンプトを追加しましたが、正常に機能しています。最近、Android 4.2 Jelly Beanにアップグレードしたユーザーから、音声プロンプトが機能せず、音声データが欠落しているためダウンロードする必要があるというメッセージが表示されるというメールを受信し始めました。クリックしてダウンロードすると、英語以外の言語をダウンロードするオプションが表示されます。

Androidデベロッパーブログのこの投稿に続いて、テキスト読み上げを実装しました。インテントを呼び出しており、返されたTextToSpeech.Engine.ACTION_CHECK_TTS_DATA以外のものがあれば、インテントを呼び出します。TextToSpeech.Engine.CHECK_VOICE_DATA_PASSTextToSpeech.Engine.ACTION_INSTALL_TTS_DATA

4.2を実行しているデバイスにアクセスできません。今日、地元の店に行って、4.2がインストールされているNexus 7タブレットにアプリをダウンロードし、問題を再現することができました。ただし、Nexus 7に基づいてAVDを作成し、エミュレーターを実行すると、音声プロンプトが正常に機能し、問題を再現できません。

4

3 に答える 3

7

AndroidOS4.1とOS4.2でのTTSチェックは、丁寧で、異なります。

OS 4.1は、データをインストールする意図を正しく処理しません*

TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA

OS 4.2は、音声データをチェックする意図を正しく処理しません*

TextToSpeech.Engine.ACTION_CHECK_TTS_DATA

*これは、古いバージョンのように正しいステータスコードを返さないことを意味します。たとえば、CHECK_TTS_DATAはCHECK_VOICE_DATA_MISSING_DATA、音声データが明確にインストールされている場合に返されます。他に渡す必要のあるインテントデータがある可能性がありますが、これがどこに文書化されているかはわかりません。

私のアプリでは、新しいOSバージョンに対してこれらのチェックを無効にする必要がありました。Androidの使用条件でTTSが義務付けられているため、Googleがこれを行ったのではないかと思います(ただし、これを確認することはできません。「Android」と呼ばれるために実装する必要があるものを正確に説明しているサイトがあると確信しています)

アップデート

私が推測したように、Android OS 4.1では、すべてのAndroidデバイスにText-to-Speechを含めることが義務付けられているため、チェックはやや冗長になっています。このリンクから:Android4.1互換性の定義

3.11 Text-to-Speech
Android 4.1には、アプリケーションがText-to-Speech(TTS)サービスを利用できるようにするAPIが含まれており、サービスプロバイダーがTTSサービスの実装を提供できるようにします[リソース、32]。デバイスの実装は、AndroidTTSフレームワークに関連する次の要件を満たしている必要があります。

  • デバイスの実装はAndroidTTSフレームワークAPIをサポートする必要があり、デバイスで使用可能な言語をサポートするTTSエンジンを含める必要があります。アップストリームのAndroidオープンソースソフトウェアには、フル機能のTTSエンジン実装が含まれていることに注意してください。
  • デバイスの実装は、サードパーティのTTSエンジンのインストールをサポートする必要があります。
  • デバイスの実装は、ユーザーがシステムレベルで使用するTTSエンジンを選択できるようにするユーザーアクセス可能なインターフェイスを提供する必要があります。

于 2012-11-29T20:02:43.703 に答える
3

コードへの直接リンク

グーグルプロジェクトホスティング

リンクコード

http://simple-jellybean-tts-example.googlecode.com/svn/trunk/%20simple-jellybean-tts-example/Sandbox/

于 2012-11-26T04:34:16.867 に答える
0

以下のコードデモをご覧になることをお勧めします。私はあなたを助けます。

http://code.google.com/p/simple-jellybean-tts-example/

見る

http://developer.android.com/reference/android/speech/tts/TextToSpeech.Engine.html#KEY_FEATURE_NETWORK_SYNTHESIS

http://developer.android.com/reference/android/speech/tts/TextToSpeech.html#speak(java.lang.String,int,java.util.HashMap)

-ジャティン

于 2012-11-26T04:22:47.393 に答える