用一麦克风录制的PCM数据,为16bit、48KHz、单声道,而我希望得到的是16KHz采样率的PCM数据,那就通过降低采样率的方法,去实现48000HZ到16000HZ采样率的转换。
转换原理比较简单,48000HZ降到16000HZ,实际上降了3倍,同一时间的单位区间内,48000HZ采样了3个点,16000HZ则采样了1个点,即从48000HZ的文件中每读取3个数据,就要根据这3个数据去推算得到1个数据,而这个数据对应的就是16000HZ文件中的一个数据。
具体实现如下
C语言实现
#define OLD_FILE_PATH "file.pcm"
#define DOWN_FILE_PATH "downsample.pcm"
void pcm_downsample(void)
{
short sRead = 0;
short tempSum = 0;
int size = 0;
int flag