Jea*_*lin 6 java audio wav downsampling
嗨我需要将wav音频文件的采样率从44.1kHz下采样到8kHz.我必须使用字节数组手动完成所有工作......这是出于学术目的.
我目前正在使用2个类,Sink和Source来弹出和推送字节数组.一切顺利,直到我到达需要使用线性插值对数据块进行下采样的部分.
由于我从44100下采样到8000 Hz,如何插入包含128 000 000字节的字节数组?现在我正在弹出5,6或7个字节,具体取决于i%2 == 0,i%2 == 1和i%80 == 0并将这些5,6或7个字节的平均值推入新文件.
结果确实是一个比原始音频文件更小的音频文件,但它不能在Windows媒体播放器上播放(说在阅读文件时出错)并且虽然我能听到噪音背后的正确轨道,但仍有很多噪音.
因此,总而言之,我需要有关线性插值部分的帮助.提前致谢.
我认为您不应该使用这些样本的平均值,因为这将是中值滤波器,而不是精确的下采样.只需使用每个第5/6/7个样本并将其写入新文件.
这可能会有一些混叠伪像,但可能总体上是可识别的.
另一个更复杂的解决方案,但可能是质量更好的结果,首先是使用FFT或DFT将样本转换为频率分布,然后使用适当的采样率将其转换回来.已经有一段时间了,因为我做了这样的事情,但它绝对可行.不过,您可能需要摆弄一下才能使其正常工作.
此外,当没有采用整个阵列的FT而是分段时你会遇到段边界为0的问题.几年前,当我玩这些东西时,我没有想出一个可行的解决方案(因为它也可以生成工件)但如果你读了正确的书,可能还有一本:-)
至于WMP抱怨文件:你确实修改了你写的标题,对吧?
| 归档时间: |
|
| 查看次数: |
4137 次 |
| 最近记录: |