首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >音频文件下载-示例

音频文件下载-示例
EN

Stack Overflow用户
提问于 2011-08-21 02:13:06
回答 3查看 2.5K关注 0票数 1

我在处理音频文件时遇到了一个问题。我正在实现一个处理音频文件的算法,该算法要求输入为5 KHz单声道音频文件。

我有的大多数音频文件都是PCM44.1 KHz 16位立体声,所以我的问题是如何转换44.1 KHz立体声文件到5 KHz单声道文件?

如果有人能提供一个教程,解释这个想法背后的DSP或任何JAVA库的基础知识,我将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2011-08-24 16:26:34

只是为了补充Prasad已经说过的话,你应该在下采样之前以2.5 kHz的速度对信号进行低通滤波,以防止结果中的混叠。如果原始信号中有4 kHz音调,则不可能由5 kHz采样率表示,并将折叠回到2.5 kHz奈奎斯特限制,从而在1.5 kHz处产生假(“混叠”)音调。

请参阅相关:How to implement low pass filter using java

另外,如果你的下采样频率从44100到5,000 hz,你将为每8.82个原始样本保存一个;而不是一个很好的整数除法。这意味着您还应该使用某种类型的插值,因为您将从原始信号中采样非整数值。

票数 2
EN

Stack Overflow用户

发布于 2011-08-21 05:27:04

Java Sound API (javax.sonal.*)包含许多处理声音的有用函数。

http://download.oracle.com/javase/tutorial/sound/index.html

你可以找到已经实现的java代码来轻松地对你的音频文件HERE进行下采样。

票数 1
EN

Stack Overflow用户

发布于 2011-08-22 14:43:16

对于我已经处理过的立体声PCM,通常pcm中的每隔16位的值是对应于特定立体声通道的数据点,这被称为交错。因此,首先获取立体声通道中的所有其他值,以提取单声道PCM字节数组。

至于频率下采样,如果你要播放一个44100 Hz的音频文件,就像它是一个5000 Hz的音频文件一样,你会有太多的数据,这会使它的声音变慢。因此,以int(44100/5,000)为增量进行采样,将其下采样到5 5khz信号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7133679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档