将44100hz,16位单声道wav文件集合转换并分段为16kHz,16位单声道wav文件

时间:2011-07-19 15:16:21

标签: java audio wav javasound

我需要将大量的wav文件拆分成更小的段,并将它们转换为16 khz,16位单声道wav文件。为了对wav文件进行细分,我从以下网站下载了WavFile课程:WavFile Class。我调整了一下以允许跳过任意数量的帧。使用该类,我创建了一个WavSegmenter类,它将读取源wav文件,并将时间x和时间y之间的帧复制到新的wav文件中。我可以从提供的XML文件中获取开始时间和结束时间,我可以使用sample rate * time获取帧。我的问题是我不知道如何将采样率从44,100转换为16,000。

目前,我正在研究Java的Sound API。我最初没有咨询,因为我发现指南很长,但如果它是现有的最佳选择,我愿意经历它。不过,我仍然想知道是否有另一种方法可以做到这一点。最后,我想知道是否应该完全适应Java的Sound API,并删除我当前使用的WavFile类。对我来说,它看起来很合理,但我想确定一下。

非常感谢你,提前,你的时间。

2 个答案:

答案 0 :(得分:1)

我相信你的任务中最艰难的部分是每秒从44.1K样本重新采样到16K样本。从那里下采样到22K或11K会简单得多!你需要在那里做一些插值。

编辑:经过与OP的进一步审核和讨论后,我认为这种情况的正确选择是使用Java Sound API,因为它提供了在不同声音文件格式之间进行转换的方法,包括不同的采样率。坚持使用WavFile API需要重新采样,这在44.1K到16K的转换情况下实现起来非常复杂。

答案 1 :(得分:1)