在Android应用中过滤频率

时间:2017-03-10 15:26:34

标签: c# android audio xamarin.android frequency

我想要什么

我试图通过我的Android应用中的现场麦克风录音来过滤频率。

我每500毫秒发送(测试)15khz测试声音(10毫秒持续时间),在我的应用程序中我有一个计数器,每15khz测试音调应增加一个,所以每500ms它应该增加一个。 不幸的是它不起作用。

错误

在应用程序运行时控制计数器我看到每15khz测试声音(每500毫秒)有时会增加两到三个或者有时它根本没有增加。

我正在做什么

实例化AudioRecorder - >

int sampleRate = 48000;

bufferSize = AudioRecord.GetMinBufferSize(sampleRate, ChannelIn.Mono,
                                                          Encoding.Pcm16bit); //get the buffer size to use with this audio record

recorder = new AudioRecord(AudioSource.Mic, sampleRate, ChannelIn.Mono,
                                                          Encoding.Pcm16bit, bufferSize); //instantiate the AudioRecorder

然后while(recording)我得到幅度和预示着我获得频率的程度 - >

int freq = (int)max_index * sampleRate / fftResult.Length;

然后如果freq == 15000我得到分贝 - > <\ n>

double Db = 2 * Math.Log(Math.Sqrt(db_re[i] * db_re[i] + db_im[i] * db_im[i]));

虽然我在我的应用中使用我的macbook发送测试音,但我试图过滤此频率 - &gt;

if (Db > 19)

我正在使用SONY XPERIA进行开发

感谢您的建议!!

0 个答案:

没有答案