Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ibm watson的语音到文本转录问题_Java_Android_Speech To Text_Watson - Fatal编程技术网

Java ibm watson的语音到文本转录问题

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

我正在努力让我的android应用程序使用IBM语音到文本服务进行转录。下面是记录文件和转录文件的代码

我从沃森那里得到的示例代码

媒体记录器输出

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用户名);