でTTSテキストが受信され処理されましたが、HEIGHTではありません同じ問題のコードが同じであるため、この問題は厳しいですは3種類のAndroid 2.2携帯電話で完璧ですが、LG Optimus S Android 2.2も走っている)。LGオプティマウスS
一方、この問題は再現性があるため、謎を解く途中で若干の希望があるかもしれません。
問題は、問題のある電話機(LG Optimus S)を含むすべての電話機で、TTSエンジン(Pico)に渡された最初の2つのテキストセグメントが正しく処理されてスピーカーで聞こえるようになります。
しかし、スピーチRecognitionControllerの認識ステップ後TTSエンジン、に渡された第三及び第四のセグメント、すべての電話機で完全に良性ログ内の結果、ことを除いて問題の携帯電話に何もスピーカーから聞こえません! - 問題のある電話機でもすべてOnUtteranceCompleted()を受信しましたが!
私はこのコードが正しいことを知っています。これは他の電話機でも完全に機能するため、これを引き起こす可能性があるのは困惑しています。
が、これは不十分なCPUリソースのだろうか?不十分なメモリリソース?
もしそうなら、なぜ最初の2つのテキストセグメントでは機能しますが、連続する2つのテキストセグメントでは機能しませんか?
それは、システムの動作中に「奇妙な」何かをスポッティングに役立つことができれば、私は問題の携帯電話に欠けているTTS音声のサンプルlogcatを含めています:
INFO/RecognitionController(1773): State change: RECOGNIZING -> RECOGNIZED
INFO/RecognitionController(1773): Final state: RECOGNIZED
INFO/ServerConnectorImpl(1773): ClientReport{session_id=040af29064d281350f1325c6a361f003,request_id=1,application_id=voice-search,client_perceived_request_status=0,request_ack_latency_ms=93,total_latency_ms=2179,user_perceived_latency_ms=213,network_type=1,endpoint_trigger_type=3,}
INFO/AudioService(121): AudioFocus abandonAudioFocus() from [email protected]
DEBUG/AppRecognizer(2167): Proceed.
INFO/TTS received:(2167): Speaking text segment number three but NOTHING is coming out of the speaker!!!
VERBOSE/TtsService(572): TTS service received Speaking text segment number three but NOTHING is coming out of the speaker!!!
VERBOSE/TtsService(572): TTS processing: Speaking text segment number three but NOTHING is coming out of the speaker!!!
VERBOSE/TtsService(572): TtsService.setLanguage(eng, USA,)
INFO/SVOX Pico Engine(572): Language already loaded (en-US == en-US)
INFO/SynthProxy(572): setting speech rate to 100
INFO/SynthProxy(572): setting pitch to 100
INFO/ClientReportSender(1773): Sending 1 client reports over HTTP
INFO/TTS received:(2167): Speaking text segment number four but NOTHING is coming out of the speaker!!!
VERBOSE/TtsService(572): TTS service received Speaking text segment number four but NOTHING is coming out of the speaker!!!
WARN/AudioTrack(572): obtainBuffer timed out (is the CPU pegged?) 0x5b3988 user=00062b40, server=00061b40
VERBOSE/TtsService(572): TTS callback: dispatch started
VERBOSE/TtsService(572): TTS callback: dispatch completed to 1
VERBOSE/TtsService(572): TTS processing: Speaking text segment number four but NOTHING is coming out of the speaker!!!
VERBOSE/onUtteranceCompleted(2167): segment #3
VERBOSE/TtsService(572): TtsService.setLanguage(eng, USA,)
INFO/SVOX Pico Engine(572): Language already loaded (en-US == en-US)
INFO/SynthProxy(572): setting speech rate to 100
INFO/SynthProxy(572): setting pitch to 100
WARN/AudioTrack(572): obtainBuffer timed out (is the CPU pegged?) 0x5b3988 user=0007dc00, server=0007cc00
VERBOSE/TtsService(572): TTS callback: dispatch started
VERBOSE/TtsService(572): TTS callback: dispatch completed to 1
VERBOSE/onUtteranceCompleted(2167): segment #4
対応するログの電話でその完全にこのようになります動作します:I
INFO/RecognitionController(1773): State change: RECOGNIZING -> RECOGNIZED
INFO/RecognitionController(1773): Final state: RECOGNIZED
INFO/ServerConnectorImpl(1773): ClientReport{session_id=040af29064d281350f1325c6a361f003,request_id=1,application_id=voice-search,client_perceived_request_status=0,request_ack_latency_ms=96,total_latency_ms=2449,user_perceived_latency_ms=140,network_type=1,endpoint_trigger_type=3,}
INFO/AudioService(121): AudioFocus abandonAudioFocus() from [email protected]
DEBUG/AppRecognizer(2167): Proceed.
INFO/TTS received:(2167): Speaking text segment number three (and I can hear it :)
VERBOSE/TtsService(572): TTS service received Speaking text segment number three (and I can hear it :)
VERBOSE/TtsService(572): TTS processing: Speaking text segment number three (and I can hear it :)
INFO/ClientReportSender(1773): Sending 1 client reports over HTTP
VERBOSE/TtsService(572): TtsService.setLanguage(eng, USA,)
INFO/SVOX Pico Engine(572): TtsEngine::setLanguage found matching language(eng) but not matching country().
INFO/SVOX Pico Engine(572): Language already loaded (en-US == en-US)
INFO/SynthProxy(572): setting speech rate to 100
INFO/SynthProxy(572): setting pitch to 100
INFO/TTS received:(2167): Speaking text segment number four (and I can hear it :)
VERBOSE/TtsService(572): TTS service received Speaking text segment number four (and I can hear it :)
INFO/AudioHardwareQSD(121): AudioHardware pcm playback is going to standby.
DEBUG/dalvikvm(3262): GC_EXPLICIT freed 6946 objects/326312 bytes in 76ms
WARN/AudioTrack(572): obtainBuffer timed out (is the CPU pegged?) 0x3ce730 user=00032e80, server=00031e80
WARN/AudioFlinger(121): write blocked for 170 msecs, 161 delayed writes, thread 0xdc08
VERBOSE/TtsService(572): TTS callback: dispatch started
VERBOSE/onUtteranceCompleted(2167): segment #3
VERBOSE/TtsService(572): TTS callback: dispatch completed to 1
VERBOSE/TtsService(572): TTS processing: Speaking text segment number four (and I can hear it :)
VERBOSE/TtsService(572): TtsService.setLanguage(eng, USA,)
INFO/SVOX Pico Engine(572): TtsEngine::setLanguage found matching language(eng) but not matching country().
INFO/SVOX Pico Engine(572): Language already loaded (en-US == en-US)
INFO/SynthProxy(572): setting speech rate to 100
INFO/SynthProxy(572): setting pitch to 100
WARN/KeyCharacterMap(2167): No keyboard for id 131074
WARN/KeyCharacterMap(2167): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
DEBUG/dalvikvm(7137): GC_EXPLICIT freed 1585 objects/93216 bytes in 67ms
DEBUG/dalvikvm(6697): GC_EXPLICIT freed 3108 objects/178688 bytes in 59ms
VERBOSE/TtsService(572): TTS callback: dispatch started
VERBOSE/onUtteranceCompleted(2167): segment #4
UPDATE:問題(唯一のLGオプティマスS LS670中)は初回のみのために音声認識後キックを発生します。任意の数のテキストセグメントを送信できますが、そのうちのいくつかは非常に長く、TTSエンジンは大声で完全に話します。しかし、電話がリスニングに入る瞬間(もちろん、話すのと同時にではない)、TTSは大きな音を鳴らしません。音声認識装置が起動しても自動的に復元されないとすぐにスピーカー「ミュート」が自動的に発生するように、音声認識が行われます。
実際に先に進んでをRecognitionListener.onEndOfSpeech()
に挿入しようとしましたが、それは助けになりませんでした。
UPDATE II: - :
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, TTS_STATCHECK);
アイデア私も、RecognitionListener.onEndOfSpeech()
に次を追加するTTSエンジンを再始動するprehapsがsomwhereバグをリセットすることができることを考えてみました、これはどちらかを助けていませんか?提案?