gpt4 book ai didi

Android 应用程序在开始使用 Watson STT java-sdk 录制语音时崩溃

转载 作者:行者123 更新时间:2023-11-29 17:02:25 24 4
gpt4 key购买 nike

我之前让这段代码在我的设备上运行良好,但现在它根本无法运行。设备是三星 SM-G900P(Android 6.0.2,API23)。

我必须自己构建语音转文本库、核心库和文本转语音库,因为我的应用程序的其他部分需要更新版本的 OkHttp 库。我是从 PR #557 构建的。

这是我在通过 Android Studio 运行时遇到的错误。

E/AudioRecord: AudioFlinger could not create record track, status: -1
E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.

E/AndroidRuntime: FATAL EXCEPTION: Thread-5952
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:943)
at com.ibm.watson.developer_cloud.android.library.audio.MicrophoneCaptureThread.run(MicrophoneCaptureThread.java:63)

一些代码...

private void startListening() {

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) {
e.printStackTrace();
}
}
}).start();
listening = true;
} else {
try {
capture.close();
listening = false;
//recordInstance.release();
} catch (Exception e) {
e.printStackTrace();
}

}
}

private class MicrophoneRecognizeDelegate implements RecognizeCallback {

@Override
public void onTranscription(SpeechResults speechResults) {
System.out.println(speechResults);
String text = speechResults.getResults().get(0).getAlternatives().get(0).getTranscript();
showMicText(text);
if (speechResults.getResults().get(0).isFinal()) {
try {
capture.close();
listening = false;
send(speechResults.getResults().get(0).getAlternatives().get(0).getTranscript());
} catch (Exception e) {
System.out.println("error when closing capture");
e.printStackTrace();
}
}

}

@Override public void onConnected() {
System.out.println("mic connected");
}

@Override public void onError(Exception e) {
e.printStackTrace();
}

@Override public void onDisconnected() {
System.out.println("mic disconnected");
}
}

谢谢

最佳答案

在我看来,您没有适当的权限来录制音频;通常这就是 AudioFlinger 无法创建记录轨道,状态:-1 指示的内容。从 API 23 开始,您需要在应用程序运行时请求某些权限;录音属于该集合。查看https://developer.android.com/training/permissions/requesting.html

关于Android 应用程序在开始使用 Watson STT java-sdk 录制语音时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com