1
我正在嘗試使用IBM watson的android語音文本庫。我注意到有一個simliar問題here但沒有給出答案,我所擁有的一切整合,但試着開始意識到服務時,它得到這個錯誤:在資源路徑中找不到原生庫(com/sun/jna/android-aarch64/libjnidispatch.so)
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-aarch64/libjnidispatch.so) not found in resource path (.)
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:786)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:746)
at com.sun.jna.Native.<clinit>(Native.java:135)
at com.sun.jna.NativeLibrary.<clinit>(NativeLibrary.java:82)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:337)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.opus.JNAOpus.<clinit>(JNAOpus.java:42)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.audio.OggOpusEnc.initEncoderWithUploader(OggOpusEnc.java:53)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.audio.WebSocketUploader.initStreamAudioToServer(WebSocketUploader.java:113)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.audio.WebSocketUploader.access$000(WebSocketUploader.java:46)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.audio.WebSocketUploader$2.run(WebSocketUploader.java:175)
07-23 12:51:36.854 27413-27757/com.intellidev.mobitranscribe E/AudioRecord: AudioFlinger could not create record track, status: -1
07-23 12:51:36.874 27413-27757/com.intellidev.mobitranscribe E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
07-23 12:51:36.874 27413-27757/com.intellidev.mobitranscribe E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
07-23 12:51:36.924 27413-27757/com.intellidev.mobitranscribe E/AudioCaptureThread: Error reading voice audio
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:943)
at com.ibm.watson.developer_cloud.android.speech_to_text.v1.audio.AudioCaptureThread.run(AudioCaptureThread.java:62)
我的代碼是在這裏:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
txtSpeechInput = (TextView) findViewById(R.id.textINput);
btnSpeak = (ImageButton) findViewById(R.id.btnSpeak);
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//promptSpeechInput();
//set();
SpeechToText.sharedInstance().recognize();
}
});
btnEnd = (ImageButton) findViewById(R.id.btnEnd);
btnEnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SpeechToText.sharedInstance().stopRecording();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
// Configuration
SpeechConfiguration sConfig = new SpeechConfiguration(SpeechConfiguration.AUDIO_FORMAT_OGGOPUS);
// STT
SpeechToText.sharedInstance().initWithContext(this.getHost("https://gateway.watsonplatform.net/conversation/api"), this.getApplicationContext(), sConfig);
SpeechToText.sharedInstance().setCredentials("PERSONAL","INFO");
SpeechToText.sharedInstance().setDelegate(this);