Android 安卓回音消除
我正在尝试使用AudioRecord开发一个音频捕获应用程序 来自android api的类,设置,如何使用音频源 MediaRecorder.AudioSource.MIC,应用程序正常,但当我尝试使用 回声消除,设置一个 MediaRecorder.AudioSource.VOICE\当AudioRecorder对象为 创建时,会抛出一个IllegalArgumentException,但我不知道为什么: 我的代码是:Android 安卓回音消除,android,audio,echo,cancellation,Android,Audio,Echo,Cancellation,我正在尝试使用AudioRecord开发一个音频捕获应用程序 来自android api的类,设置,如何使用音频源 MediaRecorder.AudioSource.MIC,应用程序正常,但当我尝试使用 回声消除,设置一个 MediaRecorder.AudioSource.VOICE\当AudioRecorder对象为 创建时,会抛出一个IllegalArgumentException,但我不知道为什么: 我的代码是: private static final int SAMPLE_RATE
private static final int SAMPLE_RATE = 16000;
private static final int BIT_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
private static final int CHANNEL_CONFIGURATION = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int m_i32BufferSize;
private AudioRecord m_AudioRecorder;
public caudioCapture ()
{
super ();
m_i32BufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIGURATION, BIT_ENCODING);
//Create audio recorder object
try
{
m_AudioRecorder = new AudioRecord (MediaRecorder.AudioSource.VOICE_COMMUNICATION,SAMPLE_RATE,CHANNEL_CONFIGURATION,BIT_ENCODING,m_i32BufferSize);
}
catch (IllegalArgumentException e)
{
throw new IllegalArgumentException("Bad arguments on AudioRecorder creation", e);
}
在我的android清单中,我有:
使用权限android:name=“android.permission.RECORD\u AUDIO”
也许是因为我使用的是三星galaxy tab p1000,它运行的是安卓2.2?有什么想法吗
非常感谢是的,这是正确的。问题是你使用的是安卓2.2。Android 3.0引入了新的语音通信。在旧版本上运行时,您将获得默认源。我终于能够在我的Arm5(WM8650)处理器上使用回音消除。以下是我采取的步骤
我希望这会对某人有所帮助。你好,Joakim,但是,默认源有回声消除功能吗?因为我需要它,如果我使用设备的回声消除器,对我来说更好。我知道,例如skype,android 2.2中有回声消除功能,但我不知道他们是否实现了自己的取消器或使用了一些deviceNo的问题,默认情况下没有。如果你需要在3.0之前取消回音,你需要自己去做。我建议你调查一下Speex。它有一个有效的回音消除实现。这是本机代码,所以你需要通过JNI调用它。好吧,我已经使用过Speex和回音消除。它非常昂贵,涉及cpu资源,所以,我想我会尝试使用发布的skype代码,但是,我不知道这个编解码器是否实现了回音消除。我对android 3.0的内置回音消除非常失望。我在一个应用程序中添加了开关,这样我就可以打开和关闭它,结果是显而易见的,但这还远远不够。我只在一部手机上测试过它(三星Vibrant运行Cynogen 10),所以YMMV.hi。你能在这里分享你的jni代码吗。我也在使用speex,收到了很多回音。