我想要什么
我试图通过我的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进行开发
感谢您的建议!!