2017-06-05 5 views
5

Ich benutze IBM Bluemix, um etwas Audio zu transkribieren, und ich möchte die APIs Sprechererkennung verwenden.Android Bluemix zeigt kein Speaker-Tag

stelle ich die die Erkennungs so zusammen:

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(); 
} 

Aber die zurück JSON umfaßt nicht die Lautsprecher-Tag. Wie kann ich die Lautsprecher-Tag auch mit der Bluemix Java API zurückgegeben bekommen?

Meine Audio-Recorder in Android sieht wie folgt aus:

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(); 
     } 
    } 
} 
+0

Ich glaube, Sie bedeuten, dass er die Sprache-zu-Text-Tag hinzufügen soll, nicht Text-zu-Sprache;) –

+0

@bear Was ist die Audiodatei und die Erkennungsmethode, die Sie verwenden? verwenden Sie WebSockets? –

+0

@GermanAttanasio Ich benutze die Watson Android Audio Streaming API, siehe mein aktualisierten Code-Snippet – bear

Antwort

0

Basierend auf Ihrem Beispiel schrieb ich eine Beispielanwendung und bekam die Lautsprecher Etiketten zu arbeiten.

Stellen Sie sicher, dass Sie die verwenden. In Ihrem build.gradle hinzufügen

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

Hier ist der Code-Schnipsel, die ein WAV file aus dem assets Ordner erkennt WebSockets, Zwischenergebnisse und Lautsprecher-Label verwenden.

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()); 
    } 
}); 

Wo loadInputStreamFromAssetFile() sind:

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; 
} 

Anwendungsprotokolle:

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: }]