我在使用IBM語音轉文本服務獲取轉錄以在我的android應用程序上工作而苦苦掙扎。以下是記錄文件和轉錄文件的代碼。ibm watson對文本轉錄問題的語音轉換問題
示例代碼我把沃森從github link
媒體記錄輸出
mediaRecorder = new MediaRecorder();
mediaRecorder.setMaxDuration(MAX_DURATION);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
文件不具有清晰的聲音,當我聽。
沃森代碼
private void startWatson() {
service = new SpeechToText();
String userName = String.valueOf(R.string.speech_text_username);
String password = String.valueOf(R.string.speech_text_password);
service.setUsernameAndPassword(userName, password);
service.setEndPoint(String.valueOf(R.string.speech_text_url));
}
我從我的bluemix帳戶的用戶名,密碼和網址。
private void transcribe() throws IOException {
final InputStream inputStream = FileUtils.openInputStream(files[spnRecordingList.getSelectedItemPosition()]);
recognizeOptions = new RecognizeOptions.Builder().contentType(HttpMediaType.AUDIO_OGG).interimResults(true).build();
new Thread(new Runnable() {
@Override
public void run() {
try {
service.recognizeUsingWebSocket(inputStream, recognizeOptions, new playback());
} catch (Exception e) {
}
}
}).start();
}
我選擇Audio_OGG因爲文件說:音頻/ OGG(該服務自動檢測輸入音頻的編解碼器。)
這可能是錯了,所以如果是這樣,請解釋爲什麼,因爲例子我發現沒有那麼多的幫助。
播放類
private class playback extends BaseRecognizeCallback {
@Override
public void onTranscription(SpeechResults speechResults) {
if (speechResults.getResults() != null && !speechResults.getResults().isEmpty()) {
String text = speechResults.getResults().get(0).getAlternatives().get(0).getTranscript();
txtbox.setText(text);
}
}
@Override
public void onError(Exception e) {
txtbox.setText("on error");
}
@Override
public void onDisconnected() {
txtbox.setText("on disconnected");
}
}
播放類是我的活動類中的一類
public class RecordingActivity extends AppCompatActivity implements
RecordingListFragment.OnFragmentInteractionListener {
"on create and etc code"
"start watson function"
"transcribe function"
playback class {}
}
我接過類和線程代碼的形式我在GitHub上發現沃森語音到文本的例子。
嗨內森,謝謝你的提示。我也發現了我的一個問題。啓動watson需要getApplicationContext()。getResources()。getString(R.string.speech_text_username); – lostknight