我試圖開發一個很酷的應用程序,它使用TTS
引擎和語音識別。到目前爲止沒關係,但我想要更多。我想創建一個服務(我認爲服務是正確的方式),它總是在「傾聽」,當有人說"ok google"
或別的什麼的時候,語音識別就開始了,就像google現在一樣。例如,如果您說"ok google"
谷歌現在開始。我不知道從哪裏開始,所以如果可能的話,我直接問這裏。正如我想的那樣,我嘗試着看着這個主題[here](Listening for keywords at all times, like "Ok google" on 4.4),最後一個回答提到了服務。有人可以用我的代碼幫助我嗎?開發類似於「Google now」的應用程序 - 是否可以在沒有按鍵輸入的情況下使用語音識別?
例如,這是通過按一個按鈕就開始語音識別代碼:
/**
* Instruct the app to listen for user speech input
*/
private void listenToSpeech() {
//start the speech recognition intent passing required data
Intent listenIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//indicate package
listenIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
//message to display while listening
listenIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say a word!");
//set speech model
listenIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//specify number of results to retrieve
listenIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10);
//start listening
startActivityForResult(listenIntent, VR_REQUEST);
}
你覺得有可能啓動listenIntent
只是針對語音和不按任何按鈕?這就是我的意思。
確實有一種好的想法,但我覺得寫一種感覺像「OK Google」這樣的服務的服務也不過是一種語音識別技術,你無法繼續24X7的運行。相反,你可以擔保一個主屏幕小部件,並在它的水龍頭,你可以啓動這個後臺服務,這將最終啓動你的應用程序,是的,你可以開始意圖在一個if塊,你的情況就像檢查你的語音輸入像「OK Google」這樣的硬編碼值。 –
是的,它是一個不錯的主意。但是,你有沒有想法如何用代碼創建這種服務?我的意思是..應用程序如何認識到,如果我說「好的谷歌」必須啓動該意圖?這是我真正的問題。 –
當您創建一個小部件時,您可以將活動映射到其啓動。因此,您可以編寫一個代碼,在其中啓動小部件「XYZ」活動,並且該活動直接採用與在應用程序中採用語音輸入相同的方式進行語音輸入。現在,在輸入語音輸入之後,將其轉換爲文本,並檢查它是否與「OK GOOGLE」匹配,如果是,則只需創建Intent即可。 –