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