将WAV文件转换为Android中的矢量

时间:2014-04-23 12:20:41

标签: android matlab audio signal-processing wave

我正在寻找一种方法将Wave文件转换为数字列表,以对结果向量进行交叉关联(就像在MATLAB上读取波形文件时得到的数字)

0.6653 -0.8445 0.9589 -0.9999 0.9643 -0.8547 0.6797 -0.4525 0.1907 0.0858 -0.3557 0.5983 -0.7951 0.9309 -0.9953 0.9835 -0.8962 0.7402 -0.5275 0.2742

有没有办法在Android甚至C / C ++中做到这一点?我真的不知道如何开始。

1 个答案:

答案 0 :(得分:0)

WAVE文件格式非常简单,特别是如果您对线性PCM编码数据感兴趣的话。可以从各种来源获取格式说明,例如herehere

使用这些,你应该能够解码:

  • 标题(“RIFF”块)
  • “fmt”块,包含各种信息,例如每个样本的字节数,通道数(即单声道,立体声或更多),采样率等。
  • 和“数据”块,如果你想要查看的主要内容是为了创建类似MATLAB的向量。

如果您正在处理单通道(即单声道)WAVE文件,则数据解码相当简单。然后,样本的数量应该对应(给出或取几个字节进行填充)到数据块的大小除以每个样本的字节数(每个样本的位数可从“fmt”块获得) 。样本整数到[0-1]浮点值的映射可以通过乘以常数来完成(例如,每个样本1个字节的1.0 / 128)。

对于多频道WAVE文件,请记住频道数据是交错的(例如,样本1左/右,样本2左/右,......)

另请注意,有许多教程/示例浮动(例如this sample in Cthis sample in Java),以及各种开源声音库,您可以将它们作为起点。