我正在使用IBM bluemix转录一些音频,并且我想使用API​​说话者识别。

我像这样设置识别器:

private RecognizeOptions getRecognizeOptions() {
    return new RecognizeOptions.Builder()
            .continuous(true)
            .contentType(ContentType.OPUS.toString())
            //.model("en-US")
            .model("en-US_BroadbandModel")
            .timestamps(true)
            .smartFormatting(true)
            .interimResults(true)
            .speakerLabels(true)
            .build();
}

但是返回的JSON不包含Speaker标签。如何获得bluemix java API也返回的Speaker标签?

我在Android中的录音机如下所示:
private void recordMessage() {
    //mic.setEnabled(false);
    speechService = new SpeechToText();
    speechService.setUsernameAndPassword("usr", "pwd");
    if(listening != true) {
        capture = new MicrophoneInputStream(true);
        new Thread(new Runnable() {
            @Override public void run() {
                try {
                    speechService.recognizeUsingWebSocket(capture, getRecognizeOptions(), new MicrophoneRecognizeDelegate());
                } catch (Exception e) {
                    showError(e);
                }
            }
        }).start();
        Log.v("TAG",getRecognizeOptions().toString());
        listening = true;
        Toast.makeText(MainActivity.this,"Listening....Click to Stop", Toast.LENGTH_LONG).show();
    } else {
        try {
            capture.close();
            listening = false;
            Toast.makeText(MainActivity.this,"Stopped Listening....Click to Start", Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

最佳答案

根据您的示例,我编写了一个示例应用程序,并启用了扬声器标签。

确保您正在使用Java-SDK 4.2.1。在您的build.gradle中添加

compile 'com.ibm.watson.developer_cloud:java-sdk:4.2.1'

这是使用WebSockets,临时结果和发言人标签从assets文件夹中识别WAV file的代码段。
RecognizeOptions options = new RecognizeOptions.Builder()
  .contentType("audio/wav")
  .model(SpeechModel.EN_US_NARROWBANDMODEL.getName())
  .interimResults(true)
  .speakerLabels(true)
  .build();

SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("SPEECH-TO-TEXT-USERNAME", "SPEECH-TO-TEXT-PASSWORD");

InputStream audio = loadInputStreamFromAssetFile("speaker_label.wav");

service.recognizeUsingWebSocket(audio, options, new BaseRecognizeCallback() {
    @Override
    public void onTranscription(SpeechResults speechResults) {
        Assert.assertNotNull(speechResults);
        System.out.println(speechResults.getResults().get(0).getAlternatives().get(0).getTranscript());
        System.out.println(speechResults.getSpeakerLabels());
    }
});

其中loadInputStreamFromAssetFile()是:
public static InputStream loadInputStreamFromAssetFile(String fileName){
  AssetManager assetManager = getAssets(); // From Context
  try {
    InputStream is = assetManager.open(fileName);
    return is;
  } catch (IOException e) {
    e.printStackTrace();
  }
  return null;
}

应用程序日志:
I/System.out: so how are you doing these days
I/System.out: so how are you doing these days things are going very well glad to hear
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned before that there's a company now that I'm
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned before that there's a company now that I'm working with which is very much
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned before that there's a company now that I'm working with which is very much just just myself and Chris now
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned before that there's a company now that I'm working with which is very much just just myself and Chris now you had mentioned that %HESITATION okay
I/System.out: so how are you doing these days things are going very well glad to hear I think I mentioned before that there's a company now that I'm working with which is very much just just myself and Chris now you had mentioned that %HESITATION okay
I/System.out: [{
I/System.out:   "confidence": 0.487,
I/System.out:   "final": false,
I/System.out:   "from": 0.03,
I/System.out:   "speaker": 0,
I/System.out:   "to": 0.34
I/System.out: }, {
I/System.out:   "confidence": 0.487,
I/System.out:   "final": false,
I/System.out:   "from": 0.34,
I/System.out:   "speaker": 0,
I/System.out:   "to": 0.54
I/System.out: }, {
I/System.out:   "confidence": 0.487,
I/System.out:   "final": false,
I/System.out:   "from": 0.54,
I/System.out:   "speaker": 0,
I/System.out:   "to": 0.63
I/System.out: }, {
...... blah blah blah
I/System.out: }, {
I/System.out:   "confidence": 0.343,
I/System.out:   "final": false,
I/System.out:   "from": 13.39,
I/System.out:   "speaker": 1,
I/System.out:   "to": 13.84
I/System.out: }]

关于Android Bluemix不显示扬声器标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44361853/

10-12 00:12
查看更多