[英]Real time audio processing in Android
我正在使用AudioRecord.read将PCM数据捕获到字节。 但是,我发现它限制为使用至少3904个缓冲区初始化AudioRecord对象。 在采样率为44100的情况下。由于我需要对数据执行FFT,因此我将样本增加到4096.因此,回调每隔40-60ms由setPositionNotificationPeriod运行到500.由于进一步减少持续时间不会使任何变化。 如果这是以下配置的最快回拨时间,我会很擅长?
采样率:44100
频道:单声道
编码:PCM 16 BIT
BufferSize:4096
(我不确定它是4096还是2048,因为我每次读取4096个字节,它只能填充2048个2字节缓冲区)
甚至40-60ms是可以接受的,然后我执行FFT,最终阻止每个回调大约200-300ms。 并且仍然存在许多影响准确性的噪声。 我正在使用这些源代码: Java和Complex类中的 FFT
还有其他选择可以执行快速,可靠和消耗更少的内存处理FFT吗? 我发现上面的类新增了太多的对象并弹出了gragarbage collection的消息。
最后,我有3个问题:
抱歉我的英文不好,也谢谢你把时间花在我的问题上。
PS我在iOS上尝试过,它可以采用512个样本,采样率为44100。 所以每次回调只需要大约10ms。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.