diff --git a/app/libs/arm64-v8a/libaispeechaudio.so b/app/libs/arm64-v8a/libaispeechaudio.so new file mode 100644 index 0000000..ef7d7bc Binary files /dev/null and b/app/libs/arm64-v8a/libaispeechaudio.so differ diff --git a/app/libs/arm64-v8a/libduiitn.so b/app/libs/arm64-v8a/libduiitn.so deleted file mode 100644 index bfdcad9..0000000 Binary files a/app/libs/arm64-v8a/libduiitn.so and /dev/null differ diff --git a/app/libs/arm64-v8a/libspeex.so b/app/libs/arm64-v8a/libspeex.so deleted file mode 100644 index f2a7cfc..0000000 Binary files a/app/libs/arm64-v8a/libspeex.so and /dev/null differ diff --git a/app/libs/arm64-v8a/libsspe.so b/app/libs/arm64-v8a/libsspe.so new file mode 100644 index 0000000..1b07e67 Binary files /dev/null and b/app/libs/arm64-v8a/libsspe.so differ diff --git a/app/src/main/assets/sspe_aec-bf-bss-wkp_ch10-mic8-ref2_outgain4_v2.0.0.165_20251127_v1.bin b/app/src/main/assets/sspe_v1.bin similarity index 100% rename from app/src/main/assets/sspe_aec-bf-bss-wkp_ch10-mic8-ref2_outgain4_v2.0.0.165_20251127_v1.bin rename to app/src/main/assets/sspe_v1.bin diff --git a/app/src/main/assets/vad_aihome_v0.12c_noDither.bin b/app/src/main/assets/vad_aihome_v0.12c_noDither.bin deleted file mode 100644 index f14f971..0000000 Binary files a/app/src/main/assets/vad_aihome_v0.12c_noDither.bin and /dev/null differ diff --git a/app/src/main/assets/wakeup_aifar_comm_h7_20210127.bin b/app/src/main/assets/wakeup_aifar_comm_h7_20210127.bin deleted file mode 100644 index ebfdd8a..0000000 Binary files a/app/src/main/assets/wakeup_aifar_comm_h7_20210127.bin and /dev/null differ diff --git a/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java index 0ba4156..d01866c 100644 --- a/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java @@ -47,6 +47,7 @@ import qianmu.container.util.FileUtil; import qianmu.container.util.GsonUtil; import qianmu.container.util.KeyboardUtil; import qianmu.container.util.LoggerUtil; +import qianmu.container.util.RootCmdUtil; import qianmu.container.util.SignWayUtil; import qianmu.container.util.StringUtil; import qianmu.container.util.TimeUtil; @@ -252,6 +253,10 @@ public class UpdateFileActivity extends BaseActivity { //新版欣威视通初始化 SdkApi.newInstance(this); } + //获取音频权限 + LoggerUtil.e("RootCmdUtil: ", RootCmdUtil.execRootCmd("mount -o rw,remount /system")); + LoggerUtil.e("RootCmdUtil: ", RootCmdUtil.execRootCmd("setenforce 0")); + LoggerUtil.e("RootCmdUtil: ", RootCmdUtil.execRootCmd("chmod -R 777 /dev/snd")); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if(!Environment.isExternalStorageManager()){ diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java index 87d872f..22a56f9 100644 --- a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java @@ -86,8 +86,8 @@ public class WebViewActivity extends BaseActivity { static final int TYPE_GO_SAVESCREEN = 300;//导视通知跳转屏保 static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框 static final int TYPE_START_SERVER = 4;//重新启动web服务 - static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址 http://192.168.1.218:5173/ - //static String HtmlUrl = "http://192.168.0.109:5173/"; + //static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址 http://192.168.1.218:5173/ + static String HtmlUrl = "http://192.168.1.196:5173/"; //"http://192.168.0.109:5173/"; int time = 0; private VideoView currentVideo; private SoundPool soundPool; @@ -936,6 +936,7 @@ public class WebViewActivity extends BaseActivity { AILocalSignalAndWakeupConfig config = new AILocalSignalAndWakeupConfig(); config.setSspeResource("sspe_aec-bf-bss-wkp_ch10-mic8-ref2_outgain4_v2.0.0.165_20251127_v1.bin");//设置SSPE资源 + config.setEchoChannelNum(2); mLocalEngine = AILocalSignalAndWakeupEngine.createInstance(); mLocalEngine.init(config, new SSPEListener()); @@ -944,20 +945,22 @@ public class WebViewActivity extends BaseActivity { asrconfig.setLocalVadEnable(true); asrconfig.setVadResource("vad_aihome_v0.12c_noDither.bin"); mEngine = AICloudASREngine.createInstance(); + mEngine.init(asrconfig, new AIASRListenerImpl()); + aiCloudASRIntent = new AICloudASRIntent(); aiCloudASRIntent.setEnablePunctuation(true); aiCloudASRIntent.setRealback(true);//打开实时反馈功能 aiCloudASRIntent.setCloudVadEnable(false); + aiCloudASRIntent.setAudioType(AICloudASRIntent.PCM_ENCODE_TYPE.valueOf("WAV")); aiCloudASRIntent.setResourceType(Constant.asrModel); aiCloudASRIntent.setEnableNumberConvert(true);//设置启用识别结果汉字数字转阿拉伯数字功能 - aiCloudASRIntent.setWaitingTimeout(30000); //设置等待识别结果超时时长,默认5000ms - aiCloudASRIntent.setNoSpeechTimeOut(6000); - aiCloudASRIntent.setPauseTime(2000); - //aiCloudASRIntent.setServer("wss://asr.dui.ai/runtime/v2/recognize"); - mEngine.init(asrconfig, new AIASRListenerImpl()); + aiCloudASRIntent.setWaitingTimeout(10000); //设置等待识别结果超时时长,默认5000ms + aiCloudASRIntent.setNoSpeechTimeOut(5000); + aiCloudASRIntent.setPauseTime(3000); + //aiCloudASRIntent.setUseCustomFeed(false); // 设置是否使用外部喂音频 } - initRecorder(); + //initRecorder(); //暂不开 } private void initRecorder() { @@ -984,104 +987,6 @@ public class WebViewActivity extends BaseActivity { } } - private class SSPEListener implements AILocalSignalAndWakeupListener { - @Override - public void onInit(int resultCode) { - if (resultCode == AIConstant.OPT_SUCCESS) { - LoggerUtil.e("setSspeResource:","sspe init success"); - } else { - LoggerUtil.e("setSspeResource:","sspe init fail: " + resultCode); - } - } - - @Override - public void onError(AIError aiError) { - - } - - @Override - public void onWakeup(double v, String s) { - - } - - @Override - public void onWakeup(String s) { - - } - - @Override - public void onNearInformation(String s) { - - } - - @Override - public void onDoaResult(int i) { - - } - - @Override - public void onReadyForSpeech() { - - } - - @Override - public void onRawDataReceived(byte[] bytes, int i) { - - } - - @Override - public void onResultDataReceived(byte[] bytes, int i, int i1) { - if (mEngine != null) { - mEngine.feedData(bytes, i); - } - } - - @Override - public void onVprintCutDataReceived(int i, byte[] bytes, int i1) { - - } - - @Override - public void onAgcDataReceived(byte[] bytes, int i) { - - } - - @Override - public void onInputDataReceived(byte[] bytes, int i) { - - } - - @Override - public void onOutputDataReceived(byte[] bytes, int i) { - - } - - @Override - public void onEchoDataReceived(byte[] bytes, int i) { - - } - - @Override - public void onSevcDoaResult(int i) { - - } - - @Override - public void onSevcNoiseResult(String s) { - - } - - @Override - public void onMultibfDataReceived(byte[] bytes, int i, int i1) { - - } - - @Override - public void onEchoVoipDataReceived(byte[] bytes, int i) { - - } - } - private class AIASRListenerImpl implements AIASRListener { public void onError(AIError error) { @@ -1173,6 +1078,102 @@ public class WebViewActivity extends BaseActivity { } + private class SSPEListener implements AILocalSignalAndWakeupListener { + + @Override + public void onInit(int resultCode) { + if (resultCode == AIConstant.OPT_SUCCESS) { + LoggerUtil.d("ASRInit: ","sspe init success"); + } else { + LoggerUtil.e("ASRInit: ","sspe init fail: " + resultCode); + } + } + + @Override + public void onError(AIError error) { + //74405 唤醒超时 + LoggerUtil.e("ASRInit: ","sspe onError: " + error); + } + + @Override + public void onWakeup(double confidence, String wakeupword) { +// LoggerUtil.e("ASRInit: ","onWakeup: " + wakeupword + " " + confidence); + } + + @Override + public void onWakeup(String s) { + + } + + @Override + public void onNearInformation(String s) { + + } + + @Override + public void onDoaResult(int doa) { + //LoggerUtil.e("ASRInit: ","doa: " + doa); + } + + @Override + public void onReadyForSpeech() { + } + + @Override + public void onRawDataReceived(byte[] bytes, int size) { + + } + + @Override + public void onResultDataReceived(byte[] bytes, int size, int wakeupType) { + if (mEngine != null) { + mEngine.feedData(bytes, size); + } + } + + @Override + public void onVprintCutDataReceived(int i, byte[] bytes, int i1) { + + } + + @Override + public void onAgcDataReceived(byte[] bytes, int i) { + } + + @Override + public void onInputDataReceived(byte[] bytes, int i) { + + } + + @Override + public void onOutputDataReceived(byte[] bytes, int i) { + } + + @Override + public void onEchoDataReceived(byte[] bytes, int i) { + + } + + @Override + public void onSevcDoaResult(int i) { + + } + + @Override + public void onSevcNoiseResult(String s) { + + } + + @Override + public void onMultibfDataReceived(byte[] data, int size, int index) { + } + + @Override + public void onEchoVoipDataReceived(byte[] bytes, int i) { + + } + } + /** * android调用js:传送识别语音内容 */ diff --git a/app/src/main/java/qianmu/container/app/MyApplication.java b/app/src/main/java/qianmu/container/app/MyApplication.java index 4ce2805..90865b3 100644 --- a/app/src/main/java/qianmu/container/app/MyApplication.java +++ b/app/src/main/java/qianmu/container/app/MyApplication.java @@ -12,6 +12,8 @@ import android.util.Log; import com.aispeech.DUILiteConfig; import com.aispeech.DUILiteSDK; import com.aispeech.export.config.AuthConfig; +import com.aispeech.export.config.UploadConfig; +import com.aispeech.lite.Engines; import com.alibaba.android.arouter.BuildConfig; import com.alibaba.android.arouter.launcher.ARouter; import com.jakewharton.processphoenix.ProcessPhoenix; @@ -91,28 +93,37 @@ public class MyApplication extends Application { private void initSbcSDK(){ AuthConfig authConfig = new AuthConfig.Builder() - .setCustomDeviceName("19a2ebc079d6d99e") // my_uniqie_device_name只是举例,请用真实设备唯一码替换 + .setCustomDeviceName("ae28ccd49e9c53b9") // .setAuthTimeout(5000) + .setLoadSerial(true) + .setLoadMacAddress(true) + .setLoaAndroidID(true) .create(); - // 产品认证需设置 apiKey, productId, productKey, productSecret - DUILiteConfig config = new DUILiteConfig.Builder() - .setApiKey("3ac5b2151aab3ac5b2151aab692e463b") - .setProductId("279633115") - .setProductKey("f08d7e0da576f89fedc67bbf44e2e2d6") - .setProductSecret("25846304a956fd09b14de16cbf3832b0") + UploadConfig uploadConfig = new UploadConfig.Builder() + .setUploadEnable(false) + .create(); + + DUILiteConfig config = new DUILiteConfig. + Builder().setApiKey("d823edab41b8d823edab41b868ecc552") + .setProductId("279632533") + .setProductKey("ab73065d16e11bcfac026eee3db9f6cb") + .setProductSecret("85d9490c438099acc33be7676799399f") .setAuthConfig(authConfig) + .setUploadConfig(uploadConfig) .create(); + config.setAudioRecorderType(13); DUILiteSDK.init(getApplicationContext()); - DUILiteSDK.setGlobalAudioSaveEnable(true); //使能全局音频保存开关,此开关关闭则不保存音频.默认为开,但是需要设置下面的保存路径才能保存音频 - DUILiteSDK.setGlobalAudioSavePath(Constant.CACHE_PATH); - + //DUILiteSDK.setGlobalAudioSaveEnable(true); //使能全局音频保存开关,此开关关闭则不保存音频.默认为开,但是需要设置下面的保存路径才能保存音频 + //DUILiteSDK.setGlobalAudioSavePath(Constant.CACHE_PATH); + // SDK 授权 DUILiteSDK.doAuth(getApplicationContext(), config, new DUILiteSDK.InitListener() { @Override public void success() { + DUILiteSDK.setGlobalDisableAudioSaveEngines(Engines.VPRINT); LoggerUtil.d("DUILiteSDKInit: ", "授权成功! "); }