Android Audio回聲消除學習筆記


回聲消除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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM