问题描述
我正在尝试编写一个 Android 语音聊天应用程序,该应用程序需要同时具有回声消除 (AEC) 和噪声抑制 (NS)。我遵循了我在网上找到的任何文档,但 Pixel 4、Pixel 4a 或 Nexus S 模拟器似乎都没有任何功能。
感谢任何帮助!
这是我的代码:
int sample_rate = 16000;
int audio_format = AudioFormat.ENCODING_PCM_16BIT;
int buffer_size_byes = (int)(sample_rate * 0.06 * 2); // 60ms assuming ENCODING_PCM_16BIT
int audio_source = MediaRecorder.AudioSource.VOICE_COMMUNICATION;
// int audio_source = AudioManager.MODE_IN_CALL;
int channel_config = AudioFormat.CHANNEL_IN_MONO;
AudioRecord recorder;
byte[] read_buffer = new byte[buffer_size_byes];
recorder = new AudioRecord(audio_source,sample_rate,channel_config,audio_format,buffer_size_byes);
int session_id = recorder.getAudioSessionId();
if( AcousticEchoCanceler.isAvailable() ) {
AcousticEchoCanceler aec = AcousticEchoCanceler.create(session_id);
if (aec != null) { aec.setEnabled(true); }
else{ Log.i("Tag1","aec instance is null"); }
}
else{ Log.i("Tag1","AEC is NOT available"); }
if( NoiseSuppressor.isAvailable() ) {
NoiseSuppressor ns = NoiseSuppressor.create(session_id);
if (ns != null) { ns.setEnabled(true); }
else{ Log.i("Tag1","ns instance is null"); }
}
else{ Log.i("Tag1","NS is NOT available"); }
我还确保满足以下权限:
AndroidMnifext.xml
<uses-permission android:name="android.permission.RECORD_AUdio" />
<uses-permission android:name="android.permission.MODIFY_AUdio_SETTINGS" />
在主要活动中:
int perm = ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUdio);
if( perm != PackageManager.PERMISSION_GRANTED ){
Log.i("AudioRecorder","Permission to record denied. Going to ask permission again");
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECORD_AUdio},1234);
}
perm = ContextCompat.checkSelfPermission(this,Manifest.permission.MODIFY_AUdio_SETTINGS);
if( perm != PackageManager.PERMISSION_GRANTED ){
Log.i("AudioRecorder","Permission to MODIFY_AUdio_SETTINGS denied. Going to ask permission again");
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.MODIFY_AUdio_SETTINGS},1234);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)