Как использовать аудиофайлрайтер в Android SDK IBM Уотсон речи к тексту? - PullRequest
0 голосов
/ 10 февраля 2019

У меня все еще нет примеров того, как транскрибировать аудиофайл в текст, используя Android SDK из речи IBM Уотсона в текст, и я вижу метод записи аудиофайла, но нет примера того, как его реализовать или как его использоватьПожалуйста, помогите мне, я попробовал все примеры Java SDK, я пытаюсь это

 SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");

InputStream audio = new FileInputStream("src/test/resources/sample1.wav");

RecognizeOptions options = new RecognizeOptions.Builder()
  .audio(audio)
  .contentType(HttpMediaType.AUDIO_WAV)
  .interimResults(true)
  .build();

service.recognizeUsingWebSocket(options, new BaseRecognizeCallback() {
  @Override
  public void onTranscription(SpeechRecognitionResults speechResults) {
    System.out.println(speechResults);
  }
});

// wait 20 seconds for the asynchronous response
Thread.sleep(20000);

, но все равно Android заставляет его прекратить это

 SpeechToText service = new SpeechToText();
service.setUsernameAndPassword("<username>", "<password>");

File audio = new File("src/test/resources/sample1.wav");

RecognizeOptions options = new RecognizeOptions.Builder()
  .audio(audio)
  .contentType(HttpMediaType.AUDIO_WAV)
  .build();

SpeechRecognitionResults transcript = service.recognize(options).execute();
System.out.println(transcript);

но все же Android вынужден снова остановиться, пожалуйста, вам нужнопомогите никому нет примеров для этого Android SDK :( пожалуйста, я написал 5 вопрос, но все еще никто не помогите мне, пожалуйста, мне нужна ваша помощь :( :(

Это ошибка, с которой я столкнулся, пожалуйста, помогите мне

    Process: com.example.ezminute, PID: 28683
android.os.NetworkOnMainThreadException
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1448)
    at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102)
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:90)
    at java.net.InetAddress.getAllByName(InetAddress.java:787)
    at okhttp3.Dns$1.lookup(Dns.java:40)
    at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:185)
    at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:149)
    at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:84)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:214)
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
    at okhttp3.RealCall.execute(RealCall.java:77)
    at com.ibm.watson.developer_cloud.service.security.IamTokenManager.callIamApi(IamTokenManager.java:187)
    at com.ibm.watson.developer_cloud.service.security.IamTokenManager.requestToken(IamTokenManager.java:108)
    at com.ibm.watson.developer_cloud.service.security.IamTokenManager.getToken(IamTokenManager.java:78)
    at com.ibm.watson.developer_cloud.service.WatsonService.setAuthentication(WatsonService.java:375)
    at com.ibm.watson.developer_cloud.speech_to_text.v1.SpeechToText.recognizeUsingWebSocket(SpeechToText.java:391)
    at com.example.ezminute.activities.tryconvert$1.onClick(tryconvert.java:55)
    at android.view.View.performClick(View.java:6909)
    at android.widget.TextView.performClick(TextView.java:12693)
    at android.view.View$PerformClick.run(View.java:26199)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

1 Ответ

0 голосов
/ 12 февраля 2019

Исходя из стека ошибок, я думаю, что это та же проблема, что и Исключение подключения Android http и Ошибка StrictMode $ AndroidBlockGuardPolicy.onNetwork

Где вустройство вызывает исключение во время проверки на StrictMode $ AndroidBlockGuardPolicy

Это, по-видимому, препятствует выполнению приложением длительных операций блокировки в главном потоке, что может привести к зависанию пользовательского интерфейса устройства.

Обходные пути можно найти в приведенных ссылках на предыдущие вопросы.Хотя я думаю, что вы должны создавать поток для выполнения операции, а не переопределять политику строгого режима.

...