2017-10-20 10 views
2

IBMの音声対話を使用して、自分のアンドロイド・アプリケーションで動作するように転写に苦労しています。以下は、ファイルを記録し、ファイルを転記するためのコードです。ibm watsonによるテキストの文字化けの問題

のコード例Iは、ファイルが、私はそれに耳を傾けたときにクリアな音声を持っていgithub link

メディアレコーダー出力から

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を選択しました:(。サービスが自動的に入力された音声のコーデックを検出)オーディオ/ OGGを

例は、私が発見したので、その理由を説明してくださいので、もしこれが間違っている可能性がそれほど助けにはならなかった。

再生クラスは、私はクラスとスレッドコードフォームIをテキストにワトソンのスピーチでgithubの上で見つかった例を取っ

public class RecordingActivity extends AppCompatActivity implements 
RecordingListFragment.OnFragmentInteractionListener { 

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

私の活動のクラスの内部クラスがある

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

    } 
} 

再生クラス。

答えて

1

ドキュメントが言うので、私はAudio_OGGを選んだ:オーディオ/ OGGを

サービスが自動的にOGGファイルをVorbisのか、作品のオーディオが含まれているかどうかを検出することができ;(サービスが自動的に入力された音声のコーデックを検出します。) mp4入力では機能しません。

MediaRecorderはoggの出力をサポートしていますが、あなたはmediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.WEBM);をやって、その後RecognizeOptionsHttpMediaType.AUDIO_WEBMを使用してWEBMへの切り替えを試みることができるようにそれは見えません。

ワトソンも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

+0

こんにちはネイサンでいくつかの作業例もありますが、先端をありがとうございました。私はまた私の問題の1つを見つけました。 watsonを開始するには、getApplicationContext()。getResources()。getString(R.string.speech_text_username);が必要です。 – lostknight

関連する問題