0

我正在使用pocketsphinx在服務中持續查找關鍵字。問題是,它佔用大量電池,使得應用程序完全無法用於普通用戶。Pocketsphinx在Android上使用太多電池

好了,原來的代碼是在B4A,但是這是怎麼會看:

recognizer = defaultSetup() 
     .setAcousticModel(new File(assetsDir, "en-us-ptm")) 
     .setDictionary(new File(assetsDir, "cmudict-en-us.dict")) 
     .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f) 
     .getRecognizer(); 
recognizer.addListener(this); 

對於關鍵字:

// Create keyword-activation search. 
recognizer.addKeyphraseSearch(KWS_SEARCH, "extreme"); 

我甚至排除以下,以降低CPU消費。畢竟,我的主要目標是發現關鍵字。

// Create grammar-based searches. 
File menuGrammar = new File(assetsDir, "menu.gram"); 
recognizer.addGrammarSearch(MENU_SEARCH, menuGrammar); 
// Next search for digits 
File digitsGrammar = new File(assetsDir, "digits.gram"); 
recognizer.addGrammarSearch(DIGITS_SEARCH, digitsGrammar); 
// Create language model search. 
File languageModel = new File(assetsDir, "weather.dmp"); 
recognizer.addNgramSearch(FORECAST_SEARCH, languageModel); 

有沒有其他方式可以使用更少的電池服務?

+0

我不認爲持續傾聽關鍵字可能會以任何方式對電池友好。還是隻有當你的應用程序是開放的?像Alexa這樣的設備可能有一個硬件組件可以處理這個問題,讓設備幾乎不用電池就能休眠。 – Peterdk

+0

嗨,@Peterdk我已經給出了一個選項,只有當屏幕開啓時才能開始收聽(即使應用程序已關閉,即可從服務中收聽熱門詞彙)。相對節省更多的電池。那麼,谷歌的VR是積極的,每次都聽命令。它不像pocketphinx那樣使用電池和資源.. –

+0

我認爲只有Google收聽關鍵字的代碼纔會被高度優化。使用通用庫可能需要更多的處理時間。 – Peterdk

回答

0

由於您使用麥克風,因此程序代碼中的更改不會顯着解決電池耗盡問題。您可以設法在不需要的特定時間停止使用麥克風進行識別。

+0

嗨。那有幫助。我已經在我的應用程序中添加了一個選項,只有在屏幕打開時才能運行pocketsphinx。但是,它佔用了太多的資源和電池。 Google的熱詞識別服務幾乎始終處於活動狀態,並且不會以任何方式影響電池! –