如果用户在游戏陪玩平台源码使用语音通话的过程中,出现大量噪音将会对用户的体验造成不良的影响,所以在开发时,要将噪音消除掉,具体的处理代码将在下方展现:
// 初始化 降噪 Java_com_audioaec_talkdemo_AudioAEC_InitAudioDeNose( JNIEnv* env, jobject thiz) { int denoise_enabled = 1 ; if(nInitDeNoseFlag == 1) return 0 ; nInitDeNoseFlag = 1 ; //8K降噪 audioProcNose8K = speex_preprocess_state_init(80 * (nSampleTimeLong / 10),8000); speex_preprocess_ctl(audioProcNose8K, SPEEX_PREPROCESS_SET_DENOISE, &denoise_enabled); //16K降噪 audioProcNose16K = speex_preprocess_state_init(160 * (nSampleTimeLong / 10),16000); speex_preprocess_ctl(audioProcNose16K, SPEEX_PREPROCESS_SET_DENOISE, &denoise_enabled); return 1 ; } //8K降噪 jint Java_com_audioaec_talkdemo_AudioAEC_AudioDeNose8K(JNIEnv* env,jobject thiz,jbyteArray recordArray) { if(nInitDeNoseFlag == 0) return 0 ; jbyte* recordBuffer = (jbyte *)(*env)->GetByteArrayElements(env,recordArray, 0); speex_preprocess(audioProcNose8K,(spx_int16_t*)recordBuffer, NULL); (*env)->ReleaseByteArrayElements(env,recordArray,recordBuffer,0) ; return 1 ; } //16K降噪 jint Java_com_audioaec_talkdemo_AudioAEC_AudioDeNose16K(JNIEnv* env,jobject thiz,jbyteArray recordArray) { if(nInitDeNoseFlag == 0) return 0 ; jbyte* recordBuffer = (jbyte *)(*env)->GetByteArrayElements(env,recordArray, 0); speex_preprocess(audioProcNose16K,(spx_int16_t*)recordBuffer, NULL); (*env)->ReleaseByteArrayElements(env,recordArray,recordBuffer,0) ; return 1 ; } // 释放降噪 jint Java_com_audioaec_talkdemo_AudioAEC_ExitAudioDeNose( JNIEnv* env, jobject thiz) { if(nInitDeNoseFlag == 0) return 0 ; nInitDeNoseFlag = 0 ; speex_preprocess_state_destroy(audioProcNose8K); speex_preprocess_state_destroy(audioProcNose16K); return 1 ; }
以上就是游戏陪玩平台源码开发,语音通话中的噪音消除处理实现的全部内容了,希望对大家有帮助。
本文转载自网络,转载仅为分享干货知识,如有侵权欢迎联系云豹科技进行删除处理
原文链接:https://www.cnblogs.com/jianglijs/p/8583603.html