Java ibm watson的语音到文本转录问题
我正在努力让我的android应用程序使用IBM语音到文本服务进行转录。下面是记录文件和转录文件的代码 我从沃森那里得到的示例代码 媒体记录器输出Java ibm watson的语音到文本转录问题,java,android,speech-to-text,watson,Java,Android,Speech To Text,Watson,我正在努力让我的android应用程序使用IBM语音到文本服务进行转录。下面是记录文件和转录文件的代码 我从沃森那里得到的示例代码 媒体记录器输出 mediaRecorder = new MediaRecorder(); mediaRecorder.setMaxDuration(MAX_DURATION); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(Medi
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帐户获得了用户名、密码和URL
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是因为文档上写着:Audio/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 speech to text示例中获取了类和线程代码
我选择Audio_OGG是因为文档上写着:Audio/OGG(服务会自动检测输入音频的编解码器)
该服务可以自动检测ogg文件是否包含vorbis或opus音频;但这对mp4输入不起作用
看起来MediaRecorder不支持ogg输出,但您可以尝试通过执行MediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.webm)切换到webm编码>然后使用识别选项中的HttpMediaType.AUDIO\u WEBM
Watson还支持HttpMediaType.AUDIO\u MPEG
,尽管我认为这与MediaRecorder的MPEG\u 4
不同
在上还有几个工作示例,你好,Nathan,谢谢你的提示。我还发现了我的一个问题。Start watson需要是getApplicationContext().getResources().getString(R.string.speech\u text\u用户名);