我正在尝试创建一个程序来生成可以写入WAV / RIFF文件的随机音频。由于this,我能够轻松理解标题,并且我已经找到了如何将字节数据写入WAV / RIFF文件here,但我找不到的是指定如何WAV / RIFF音频数据以这些字节编码。
所以我要做的就是分析数据(不要试图把它交给我;))知道字节里发生了什么,从而允许我正确编写我的程序。那么有什么解释如何解码WAV / RIFF文件的音频块以了解每个字节中发生的事情(幅度,频率等)?我知道我可能在这里遗漏了一些东西,也许每个字节都不是我应该寻找的东西,但似乎只有我在这个主题上能够找到的稀疏数据。
目前将使用Java,所以如果有任何特定于实现的选项,请告诉我。
注意
我还发现this和this似乎在我正在寻找的一般区域,但他们仍然没有到达那里。所以我正在寻找的是一个规范或示例,它将向我展示如何分析各个字节以查看正在发生的事情,以便我可以学习如何编写它们。
修改
一位朋友建议我可能会过度思考这个问题,并且可能有一个Java库可以使Java中的原始音频数据分析比按字节分析更容易。如果是这样,有关于此的建议或在哪里查看?
答案 0 :(得分:0)
Each sample in a WAV file -- each 16-bit pair of bytes after the header -- represents an amplitude。如果您想要发现原始音频信号中存在的频率,您可能希望在信号上运行FFT。
我刚刚在Java做了一个项目,涉及读取WAV文件并拉出频率(使用名为JTransforms的FFT库)。随意学习/使用the code。
Minim是一个用于执行此类操作的库,其中还包含sound generation features。