2016-07-25 64 views
1

我有錄製的聲音,我有一個任務將錄製的聲音轉換成文本而不使用互聯網。演講到Android中的文本API

我怎樣才能做到這一點,我試圖象下面這樣:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
     RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo..."); 
startActivityForResult(intent, REQUEST_CODE); 

但我沒有得到,我怎麼發送記錄文件,並獲取文本作爲結果。

回答

0

RecognizerIntent僅適用於不適合您的情況,帶有Internet連接的現場語音輸入。

有一個答案here這可能有助於進一步。

1

在android中有一個可用的RecognizerIntent。

步驟1:啓動RecognizerIntent首先,我們需要設置必要的標誌,如ACTION_RECOGNIZE_SPEECH創建RecognizerIntent - 只需花費用戶的語音輸入,並將其返回到相同的活動LANGUAGE_MODEL_FREE_FORM - 慮輸入以遊離形式英文EXTRA_PROMPT - 文字提示以示當用戶要求他們說話時

第2步:接收語音響應一旦語音輸入完成,此意圖返回OnActivityResult中的所有可能結果。像往常一樣,我們可以將第一個結果視爲最準確並採取可能的行動無論我們需要做什麼。

請參考以下代碼片段和鏈接以獲得完整的參考。

LINK:http://www.androidhive.info/2014/07/android-speech-to-text-tutorial/

/** 
* Showing google speech input dialog 
* */ 
private void promptSpeechInput() { 
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, 
    getString(R.string.speech_prompt)); 
try { 
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); 
} catch (ActivityNotFoundException a) { 
Toast.makeText(getApplicationContext(), 
     getString(R.string.speech_not_supported), 
     Toast.LENGTH_SHORT).show(); 
} 
} 
/** 
* Receiving speech input 
* */ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
switch (requestCode) { 
case REQ_CODE_SPEECH_INPUT: { 
    if (resultCode == RESULT_OK && null != data) { 
     ArrayList<String> result = data 
          .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
     txtSpeechInput.setText(result.get(0)); 
    } 
    break; 
} 
} 
}