解码不完整的音频文件

时间:2019-02-16 15:54:25

标签: audio decode wav file-format

我得到了一个未压缩的.wav音频文件(360 mb),它似乎已损坏。该文件是使用小型USB记录器记录的(目前我没有有关记录器的更多信息)。任何玩家都无法读取它,我已经尝试过GSpot(https://www.headbands.com/gspot/)来检测它是否可能与wav格式不同,但无济于事。该文件很大,暗示它是未经压缩的格式。但是,它会丢失文件开头的RIFF-WAVE字符,这可能表明这是其他格式,或者(可能是在这种情况下)标头丢失了。

我尝试将文件的字节直接转换为音频,这会创建一个非常嘈杂的音频文件,尽管可以发出声音,但我能够确定采样率大概为22050hz(假设采样数为8 -位),文件长度约为4小时45分钟。通过Audition中的某些过滤器运行该文件会导致该文件在某些​​地方可以理解,但在其他地方仍然过于嘈杂。

接下来,我尝试通过一些Java代码运行数据,这些代码会在字节之外生成图像,这给我带来了很多噪音,但是每1024个字节还有3个字节的间隔。首先是一个接近0或255的字节(但不是100%),然后是代表一个数字的字节,该数字分布在25左右(但有一些变化),然后是00000000(始终为100%)。第一个“块头”(我想是)位于文件的513字节处,再次接近2乘方,例如块大小。对于巧合而言似乎有点太完美了,所以我要提一下它,因为它可能很重要。 https://imgur.com/a/sgZ0JFS,第一个图像显示了1024x1024图像,该图像显示了文件的前1mb(行方向),第二个图像显示了3个“块头”字节的分布。

在这些标题旁边,文件还具有清晰显示结构的区域,几乎是波浪状的结构。我想这是我想要的实际音频,但是杂乱无章:https://imgur.com/a/sgZ0JFS,第三张图片,显示了带有音频结构的文件区域。

我还为整个文件创建了一个直方图(忽略了3字节的“块头”):https://imgur.com/a/sgZ0JFS,第四张图像。我已经将范围的下半部分翻转了一下,因为我认为音频数据应该以某个平均值为中心,但是如果我错了,请纠正我。直方图的非对称性质可能与有符号/无符号数据或二进制补码有关。也许我不知道数据表示是8位浮点数还是类似的东西。

我现在碰壁了。我不知道我还能尝试什么。有没有人看到我错过的东西。也许有人可以给我一些指导,还有什么可以尝试的。我真的很想从该文件中提取音频数据,因为它包含一些重要信息。

1 个答案:

答案 0 :(得分:0)

很抱歉打扰。我已经能够找到录音机的所有者,并让他用它录制一分钟的音频并发送给我。我能够确定音频是IMA 4位ADPCM编码的,而48000hz的16位音频。通过查看文件的结构,我意识到可以简单地将好文件的标题放在坏文件的数据前面,瞧,我又有了一个工作文件:)

我仍然非常感兴趣ADPCM的工作原理以及是否可以编写自己的解码器,但这又是我再次浏览维基百科的日子。祝大家有美好的一天!