回聲消除AcousticEchoCanceler 繼承自AudioEffect
聲學回聲消除器(AEC)AcousticEchoCanceler類消除了從遠程捕捉到音頻信號上的信號的作用
自動增益控制(AGC)AutomaticGainControl類自動恢復正常捕獲的信號輸出
噪聲抑制器(NC)NoiseSuppressor類可以消除被捕獲信號的背景噪音
注意:並不能保證所有的設備都能支持這些效果的,所以你應該首先調用在對應音頻效果類上的isAvailable()的方法來檢測它的可用性。
AcousticEchoCanceler使用方法
1. 首先判斷下設備是否支持回聲消除
public static boolean isDeviceSupport()
{
return AcousticEchoCanceler.isAvailable();
}
2. 初始化並使能AEC
private AcousticEchoCanceler canceler
public boolean initAEC( int audioSession){
if(canceler != null)
{
return false;
}
canceler = AcousticEchoCanceler.create(audioSession);
canceler.setEnabled(true);
return canceler.getEnabled();
}
ps: audioSession的獲取
AudioSystem audioSystem
= AudioSystem.getAudioSystem( AudioSystem.LOCATOR_PROTOCOL_AUDIORECORD);
audioSession = audioSystem.getAudioSessionId();
3. 使能/去使能AEC
public boolean setAECEnabled( boolean enable)
{
if( null == canceler){
return false;
}
canceler.setEnabled(enable);
return canceler.getEnabled();
}
4.釋放AEC
public boolean release(){
if( null == canceler){
return false;
}
canceler.setEnabled(false);
canceler.release();
return true;
}
配置文件記得添加權限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
android新版本增加的API AcousticEchoCanceler 可以非常快速的開發出符合VOIP性質的回聲消除程序。但是考慮到各種機型適配,仍然需要第三方的回聲消除程序。
這里主要推薦兩個:webrtc里面的AEC/AECM,speex。
————————————————
版權聲明:本文為CSDN博主「簡一_hz」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011249920/article/details/51374816