2017-10-20 27 views
2

Je suis aux prises avec le fait que la transcription fonctionne sur mon application androïde en utilisant le service de messagerie vocale IBM. Voici le code pour enregistrer les fichiers et transcrire les fichiers.problème de transcription de texte à texte avec ibm watson

code exemple, je pris watson de github link

sorties de l'enregistreur multimédia

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

le fichier ne dispose audio clair quand je l'écoute.

Code Watson

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

J'ai obtenu le nom d'utilisateur, mot de passe et URL de mon compte bluemix.

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

} 

J'ai choisi Audio_OGG parce que la documentation dit: audio/ogg (Le service détecte automatiquement le codec de l'audio d'entrée.)

Cela pourrait se tromper si donc s'il vous plaît expliquer pourquoi parce que les exemples que j'ai trouvé Je n'ai pas beaucoup aidé.

classe de lecture

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

    } 
} 

la classe de lecture est une classe dans ma classe d'activité

public class RecordingActivity extends AppCompatActivity implements 
RecordingListFragment.OnFragmentInteractionListener { 

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

Je pris la classe et la forme de code fil l'exemple que je trouve sur github avec la parole Watson au texte .

Répondre

1

J'ai choisi Audio_OGG parce que la documentation dit: audio/ogg (Le service détecte automatiquement le codec de l'entrée audio.)

Le service peut détecter automatiquement si un fichier ogg contient Vorbis ou audio opus; mais cela ne fonctionnera pas pour l'entrée mp4.

Il ne ressemble pas à la sortie MediaRecorder supporte ogg, mais vous pouvez essayer de passer à WebM en faisant mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM);, puis en utilisant HttpMediaType.AUDIO_WEBM dans le RecognizeOptions. Watson prend également en charge HttpMediaType.AUDIO_MPEG, bien que je ne pense pas que ce soit la même que MPEG_4 du MediaRecorder.

Il y a aussi plusieurs exemples de travail à https://github.com/watson-developer-cloud/java-sdk/tree/develop/examples/src/main/java/com/ibm/watson/developer_cloud/speech_to_text/v1

+0

Salut Nathan, Je vous remercie de la pointe. J'ai également découvert l'un de mes problèmes. Démarrer watson doit être getApplicationContext(). GetResources(). GetString (R.string.speech_text_username); – lostknight