博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Audio回声消除学习笔记
阅读量:4182 次
发布时间:2019-05-26

本文共 1318 字,大约阅读时间需要 4 分钟。

回声消除AcousticEchoCanceler 继承自AudioEffect

声学回声消除器(AEC)AcousticEchoCanceler类消除了从远程捕捉到音频信号上的信号的作用

自动增益控制(AGC)AutomaticGainControl类自动恢复正常捕获的信号输出

噪声抑制器(NC)NoiseSuppressor类可以消除被捕获信号的背景噪音

注意:并不能保证所有的设备都能支持这些效果的,所以你应该首先调用在对应音频效果类上的isAvailable()的方法来检测它的可用性。


AcousticEchoCanceler使用方法

1. 首先判断下设备是否支持回声消除

[java] 
 
 
  1. public static boolean isDeviceSupport()  
  2. {  
  3.         return AcousticEchoCanceler.isAvailable();  
  4. }  

2. 初始化并使能AEC

[java] 
 
 
  1. private AcousticEchoCanceler canceler  
  2.   
  3. public boolean initAEC( int audioSession){  
  4.    if(canceler != null)  
  5.    {  
  6.         return false;  
  7.    }  
  8.    canceler = AcousticEchoCanceler.create(audioSession);  
  9.    canceler.setEnabled(true);  
  10.    return canceler.getEnabled();  
  11. }  
  12.   
  13. ps: audioSession的获取  
  14.    AudioSystem audioSystem  
  15.         = AudioSystem.getAudioSystem( AudioSystem.LOCATOR_PROTOCOL_AUDIORECORD);  
  16.   audioSession = audioSystem.getAudioSessionId();  

3. 使能/去使能AEC

[java] 
 
 
  1. public boolean setAECEnabled( boolean enable)  
  2. {  
  3.     ifnull == canceler){  
  4.          return false;  
  5.     }  
  6.     canceler.setEnabled(enable);  
  7.     return canceler.getEnabled();  
  8. }  

4.释放AEC

[java] 
 
 
  1. public boolean release(){  
  2.     ifnull == canceler){  
  3.         return false;  
  4.     }  
  5.     canceler.setEnabled(false);  
  6.     canceler.release();  
  7.     return true;  
  8. }  

配置文件记得添加权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />

android新版本增加的API AcousticEchoCanceler 可以非常快速的开发出符合VOIP性质的回声消除程序。但是考虑到各种机型适配,仍然需要第三方的回声消除程序。

这里主要推荐两个:webrtc里面的AEC/AECM,speex。

转载地址:http://vczoi.baihongyu.com/

你可能感兴趣的文章
【java小程序】上传头像的功能实现。
查看>>
获取所有checkbox选中的数据,前端传一个对象的数组到后端进行接收。
查看>>
【java小程序】背景页面到小程序的展示
查看>>
【java小程序】小程序视频上传文件的前后端代码
查看>>
【java小程序】使用ffmpeg进行视频与背景音乐的整合
查看>>
【java小程序】利用ffmpeg对视频进行截图操作
查看>>
【java小程序】分页显示视频列表
查看>>
关于request.getServletPath(),request.getContextPath()的总结
查看>>
aop详解和基于spring-aop xml的简单编程
查看>>
【java小程序】zookeeper监听并自动更新
查看>>
软碟通系统U盘制作教程
查看>>
【java多线程编程】三种多线程的实现方式
查看>>
【java多线程】线程常用操作方法总结
查看>>
【java多线程】线程的同步与死锁
查看>>
【java多线程】生产者与消费者多线程同步案例
查看>>
【java多线程】守护线程、线程停止、volatile的深入了解
查看>>
StringBuffer对String类型的操作
查看>>
CharSequence详情介绍
查看>>
Runtime获取系统资源信息类
查看>>
了解Schema约束
查看>>