每 10 毫秒录制一次音频的音频缓冲区大小和 FFT 大小是多少?

Posted

技术标签:

【中文标题】每 10 毫秒录制一次音频的音频缓冲区大小和 FFT 大小是多少?【英文标题】:What is the audio buffer size and FFT size for recording audio every 10 ms? 【发布时间】:2017-03-24 13:01:12 【问题描述】:

我正在尝试使用 AudioRecord API 录制音频,并且正在尝试将时域转换为频域。如果我想每 10 毫秒录制一次音频,那么缓冲区和 FFT 大小是多少?

audioRecord = new AudioRecord(MediaRecorder.Audiosource.MIC,
            44100, AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT, what is the buffersize?);

short = new short[what is the buffer size ?];
int fftSize = ?; 

【问题讨论】:

【参考方案1】:

如果您的采样率为 44.1 kHz,那么 10 ms 将是 0.01 * 44100 = 441 个样本。

如果您的 FFT 库仅支持 2 个大小的幂,那么您可以使用 N = 512 作为您的 FFT 大小并使用零填充或使用重叠窗口。

【讨论】:

感谢回复。如果 fft 大小 512 那么这是正确的 audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 512 (0r) 2*512);

以上是关于每 10 毫秒录制一次音频的音频缓冲区大小和 FFT 大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章

播放流后音频队列无法录制音频

如何获得 3sn 的音频缓冲区 ios

使用前置摄像头录制视频时分别获取视频和音频缓冲区

音频录制和播放环回缓冲区问题,将数据写入音轨时出现问题

NAudio - 初学者问题 - 在音频文件的 20 毫秒缓冲区上运行

使用 C 在 Windows 上捕获和分析音频