适当的音频采集和降噪(Appropriate audio capture and noise red

2019-06-25 14:28发布

在我的Android应用程序,我需要从麦克风中捕获用户的语音,然后将它传递给服务器。 目前,我用的是MediaRecorder类。 但是,它不能满足我的需要,因为我想使发光效果,基于输入声音的当前音量,所以我需要一个语音串流,或者类似的东西,我猜。 目前,我使用以下命令:

    this.recorder = new MediaRecorder();
    this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    this.recorder.setOutputFile(FILENAME);

我使用API​​ 7级写作,所以我没有看到任何其他AudioEncoders,但AMR窄带。 也许这就是可怕的噪音,我在我的录音听到的原因。

我现在面临的第二个问题是音质差,噪音,所以我想约简(取消,压抑),因为它实在是太可怕了,特别是在我的NONAME中国平板电脑。 这应该是服务器端的,因为,据我所知,requiers了大量的资源,而不是所有的现代小工具(尤其是中国NONAME片)可以做到这一点尽可能快。 我可以自由地选择,在服务器上使用的平台,因此它可以是ASP.NET,PHP,JSP,或任何帮助我使声音更好。 谈到ASP.NET,我所遇到的一个库,称为n音讯,可能是它可以帮助我以某种方式。 我知道,有建于库中没有任何降噪解决方案,但我发现在FFT和自动corellation一些例子使用它,因此它可能帮助。
说实话,我从来没有与合作的声音在这之前关闭,我不知道从哪里开始。 我用Google搜索了很多关于降噪技术,代码示例和一无所获。 你们是我最后的希望。
提前致谢。

Answer 1:

看看这篇文章 。

长话短说,它使用MediaRecorder.AudioSource.VOICE_RECOGNITION代替AudioSource.MIC ,这给了我真正的好效果和噪音的背景确实减少了很多。

关于这个解决方案的最大好处是,它可以同AudioRecord和MediaRecorder类中使用。



Answer 2:

对于音频捕获你可以使用AudioRecord类。 这可以让你记录原始音频,即你是不是仅限于“窄带”,你还可以测量体积。



Answer 3:

许多智能手机有两个麦克风,一个是MIC你正在使用,另一种是用于视频拍摄摄像头附近,被称为CAMCORDER 。 你可以从他们两人得到的数据做降噪。 有许多文章谈论与多个麦克风的音频降噪。

参考: http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html

https://www.google.com/search?q=noise+reduction+algorithm+with+two+mic



文章来源: Appropriate audio capture and noise reduction