我在处理音频文件时遇到问题。我正在实现一种处理音频文件的算法,该算法要求输入为 5 KHz 单声道音频文件。
我的大多数音频文件都是 PCM 44.1 KHz 16 位立体声,所以我的问题是如何将 44.1 KHz 立体声文件转换为 5 KHz 单声道文件?
如果有人能提供一个教程来解释这个想法或任何 JAVA 库背后的 DSP 基础知识,我将不胜感激。
最佳答案
为了补充 Prasad 已经说过的话,您应该在下采样之前对 2.5 kHz 的信号进行低通滤波,以防止结果出现混叠。如果原始信号中有一些 4 kHz 的音调,它不可能用 5 kHz 的采样率表示,并且会在 2.5 kHz 的奈奎斯特极限上折回,在 1.5 kHz 处产生假(“混叠”)音调.
参见相关:How to implement low pass filter using java
此外,如果您将采样率从 44100 降低到 5000 赫兹,则每 8.82 个原始样本将节省一个;不是一个很好的整数除法。这意味着您还应该采用某种类型的插值,因为您将从原始信号中采样非整数值。
关于java - 音频文件下采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133679/