繁体   English   中英

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

[英]speech to text transcription issue with ibm watson

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

我从github 链接中获取了 watson 的示例代码

媒体记录器输出

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 语音到文本的示例中学习了课程和线程代码。

我选择 Audio_OGG 是因为文档说:audio/ogg(服务会自动检测输入音频的编解码器。)

该服务可以自动检测一个ogg文件是否包含vorbis或opus音频; 但这不适用于 mp4 输入。

看起来 MediaRecorder 不支持 ogg 输出,但是您可以尝试通过执行mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM);切换到 webm mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM); 然后在RecognizeOptions使用HttpMediaType.AUDIO_WEBM

Watson 还支持HttpMediaType.AUDIO_MPEG ,尽管我认为这与 MediaRecorder 的MPEG_4

https://github.com/watson-developer-cloud/java-sdk/tree/develop/examples/src/main/java/com/ibm/watson/developer_cloud/speech_to_text/v1还有几个工作示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM