2011-09-18 17 views
3

一方面,這個問題很難,因爲我在3種不同的Android 2.2手機上使用完全相同的代碼,但不能在LG Optimus S上運行運行Android 2.2也是如此)。在LG Optimus S上收到並處理了TTS文本,但沒有聽到

另一方面,這個問題是可重複的,所以解決這個謎團的方式可能會有一些希望。

這個問題體現在傳遞給TTS引擎(Pico)的前兩個文本段在所有手機上正確處理(並通過揚聲器聽到),包括有問題的手機(LG Optimus S)。

但傳遞給TTS引擎,演講後的第三和第四部分RecognitionController公認的一步,結果完全良性的日誌中的所有手機,除了在有問題的手機沒有通過揚聲器聽到! - 儘管接收所有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 

相應的日誌手機上完美的作品看起來是這樣的:

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 

更新我:(只在LG擎天柱小號LS670)問題話音識別後只發生踢的第一次。我可以發送任意數量的文本片段,其中一些文本片段很長,並且TTS引擎可以完美地大聲說出來。但是一旦手機進入收聽狀態(當然不是與說話同時),TTS就會停止響亮地響起。就好像一些語音識別器一旦自動啓動但不能自動恢復,某些揚聲器會自動發生「靜音」,一旦語音識別完成。

我實際上繼續嘗試在RecognitionListener.onEndOfSpeech()中插入audioManager.setMicrophoneMute(false);但這並沒有幫助。

更新二:我甚至嘗試添加到RecognitionListener.onEndOfSpeech()以下,認爲prehaps重啓TTS引擎可以somwhere復位的錯誤 - 這並沒有幫助:

Intent checkIntent = new Intent(); 
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
startActivityForResult(checkIntent, TTS_STATCHECK);  

想法?建議?

回答

1

通過簡單接受從Android 2.2.2(Froyo)到Android 2.3.3(薑餅)的OTA固件更新解決了問題。

事實證明,這是一個在操作系統中的錯誤,在特定的ROM(LS670ZVD),而不是在我的代碼。

相關問題