Java 读取/操作 Wav 文件

Posted

技术标签:

【中文标题】Java 读取/操作 Wav 文件【英文标题】:Java Reading/Manipulating Wav File 【发布时间】:2014-09-11 03:29:53 【问题描述】:

所以我可以获得一个 wav 文件的所有字节的数组,我只想知道如何将原始声音数据解码为可以用来判断歌手何时说话/他的节拍的东西(我不知道不知道正确的音乐术语,对不起)

如果有人可以将我链接到那里的 API 或教程,那就太好了,因为我似乎找不到任何好的东西。

【问题讨论】:

不太了解这个具体要求,但我曾经使用 FFMpeg (ffmpeg.org) 处理音频文件。你可能会在那里找到一些好东西。社区也很活跃。 【参考方案1】:

你会提前知道这个节拍吗?如果是这样,您可以cross correlate 两个信号,并且此输出中的最高峰将对应于时间延迟。

除此之外,根据节拍开始前的声音,您可以转换到频域(通过FFT)并查看存在哪些频率,并查看节拍开始时是否有显着变化。

一些例子/额外的细节会有所帮助。

如果你想检测所述节拍的节奏,请忽略我所说的所有内容

【讨论】:

【参考方案2】:

一般来说,在波形文件中检测“有东西跳动的实例”并不像人们一开始想象的那样。

可能的第一步是将您的 .wav 转换为所谓的“频谱图”。 我认为 Java 没有用于此目的的专用 API,但谷歌搜索“java spectrogram”会给你一些第三方示例。

我还发现this question 可能是相关的。

附:我不是信号处理专家,欢迎指正。

【讨论】:

以上是关于Java 读取/操作 Wav 文件的主要内容,如果未能解决你的问题,请参考以下文章

用Java读取wav文件

java读取本地或者网络wav音频文件的时长

如何在 python 中读取多个 wav 文件,并转换为 numpy 数组进行绘图

读取音频 wav 文件并绘制在 python 中平滑的音频频率响应

NAudio - 读取和写入 Wav 文件

从android上的wav文件中读取原始数据