当我在matlab中加载.wav信号时,样本的值如下:0.001853466033936,0.003706693649292等。
当我用Java加载相同的信号时:
byte[] buffer = new byte[blockSize];
FileInputStream s = new FileInputStream(file);
s.read(buffer, 0, blockSize);
我有这样的价值观:73,70 ......
我尝试转换为double,但我从来没有像在matlab中那样得到相同的结果。
Android需要这个!
有人能帮助我吗?谢谢!
答案 0 :(得分:1)
您的java代码从头开始读取文件。查看WAVE file format,数据存储在标题之后。
您需要编写一个wav文件阅读器(或找一个兼容Android的文件)来解析标题,阅读NumChannels
,BitsPerSample
等,找到数据的开头并阅读。
这就是MATLAB的wavread
所做的(可能这就是你正在使用的?)。您可以看到它如何解析wav文件,键入edit wavread
。
看看这个简单的Java WAV File IO课程。它可能会做你需要的一切,或者至少让你开始。