2
我正试图在Android上实时进行一些音频处理。实时音频处理Android
我到目前为止是一款应用程序,它可以在预定义时间内按时记录声音,并将其保存在WAV文件中,然后进行处理。
这个工程相当不错,但是,因为我只是对录制冲动响应感兴趣,所以我认为让我的应用程序在发生冲动时自动检测并且保留0,5 seg在冲动之前,直到1.5秒后(总共2秒)。
这是我如何对付wav文件的字节数组至今:
double audioSample = (double) (array[i+1] << 8 | array[i] & 0xff)/ 32767.0;
这给了我[-1,1]之间的值,因此,可以说,我的想法是考虑到有关一个或多或少超过0,3的任何声音的冲动。 我认为解决方案是将样本存储在缓冲区中并实时检查其值,但我不太确定如何实现它。
你们知道任何示例代码或我可以看看吗?
我一直在试图解决这个问题,但我对缓冲区数组的大小感到困惑。如果我想循环缓冲区给我0.5秒的样本,它应该是多大?我知道AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,\t \t RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING);但我真的不知道该缓冲区大小对应的时间量是多少 – paviflo
这取决于采样率。在48kHz采样速率下,每秒钟有48000个样本,因此0.5秒缓冲区需要保存24000个样本。双倍,如果你有两个频道。我的示例已经通过假设样本在缓冲之前转换为双倍来补偿样本大小。 – jaket