2017-10-20 6 views
2

Ich kämpfe mit Transkription zu bekommen, um auf meiner Android-Anwendung mit IBM Sprache zu Text-Service zu arbeiten. Im Folgenden finden Sie den Code zum Aufzeichnen der Dateien und zum Transkribieren der Dateien.Rede zur Texttranskription Frage mit ibm watson

Beispielcode Ich habe watson von github link

Medienrecorder Ausgänge

mediaRecorder = new MediaRecorder(); 
mediaRecorder.setMaxDuration(MAX_DURATION); 
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

die Datei klare Audio muss, wenn ich es hören.

Watson Code

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

bekam ich den Benutzernamen, das Passwort und die URL von meinem Bluemix Konto.

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

} 

Ich wählte Audio_OGG weil Dokumentation sagt: Audio/ogg (Der Dienst erkennt automatisch den Codec des Eingangsaudio.)

Dies könnte falsch sein, so wenn ja bitte erklären, warum denn die Beispiele, die ich gefunden habe war nicht so viel Hilfe.

Wiedergabe Klasse

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"); 

    } 
} 

die Wiedergabe-Klasse eine Klasse in meiner Aktivitätsklasse ist

public class RecordingActivity extends AppCompatActivity implements 
RecordingListFragment.OnFragmentInteractionListener { 

"on create and etc code" 
"start watson function" 
"transcribe function" 
playback class {} 
} 

ich die Klasse nahm und die Faden Codeform des Beispiel, das ich mit Watson Rede auf Github gefunden in Text .

Antwort

1

Ich wählte Audio_OGG weil Dokumentation sagt: Audio/ogg (Der Dienst erkennt automatisch den Codec des Eingangsaudio.)

Der Dienst, ob eine ogg Datei Vorbis oder Opus Audio enthält automatisch erfassen kann; aber das wird nicht funktionieren für mp4 eingabe.

Es sieht nicht wie der MediaRecorder unterstützt Ogg-Ausgang, aber man kann versuchen zu webm Umschalten von mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM); tun und dann HttpMediaType.AUDIO_WEBM Verwendung in den RecognizeOptions.

Watson unterstützt auch HttpMediaType.AUDIO_MPEG, obwohl ich denke, das ist nicht das gleiche wie der MediaRecorder MPEG_4.

Es gibt auch einige Arbeitsbeispiele an https://github.com/watson-developer-cloud/java-sdk/tree/develop/examples/src/main/java/com/ibm/watson/developer_cloud/speech_to_text/v1

+0

Hallo Nathan, Danke für den Tipp. Ich habe auch eines meiner Probleme herausgefunden. Start watson muss getApplicationContext() sein. GetResources(). GetString (R.string.speech_text_username); – lostknight