我正在寻找一种方法将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 ++中做到这一点?我真的不知道如何开始。
答案 0 :(得分:0)
WAVE文件格式非常简单,特别是如果您对线性PCM编码数据感兴趣的话。可以从各种来源获取格式说明,例如here和here。
使用这些,你应该能够解码:
如果您正在处理单通道(即单声道)WAVE文件,则数据解码相当简单。然后,样本的数量应该对应(给出或取几个字节进行填充)到数据块的大小除以每个样本的字节数(每个样本的位数可从“fmt”块获得) 。样本整数到[0-1]浮点值的映射可以通过乘以常数来完成(例如,每个样本1个字节的1.0 / 128)。
对于多频道WAVE文件,请记住频道数据是交错的(例如,样本1左/右,样本2左/右,......)
另请注意,有许多教程/示例浮动(例如this sample in C或this sample in Java),以及各种开源声音库,您可以将它们作为起点。