人类能够听到的所有声音都称之为音频。在互联网科技高度发展的今天,各类设备和软件层出不穷,而其中大部分都可以以文件的形式对声音进行传输和保存,对于这些存储声音的文件称之为音频文件。
在案件调查中,如果能够直接提取到手机音频文件,如通话录音、手机录音、微信语音、QQ语音等,对于案件推进可能起到决定性作用。
不同的音频文件编码方式不同,生成的文件结构也各不相同,采用的数据修复方法自然也有差异。当我们想要对这些音频文件进行修复时,需要根据它们的编码方式采用不同的修复方法。本期我们就来聊聊多种音频编码格式的原理及其数据恢复解决方案。
PCM编码
一.PCM编码介绍
PCM编码是指PCM信号未经过任何编码和压缩处理(无损压缩)。与模拟信号比,它不易受传送系统的杂波及失真的影响。动态范围宽,可得到音质相当好的效果。在计算机应用中,能够达到最高保真水平的就是PCM编码。
二.PCM编码运用场景
PCM编码数据主要运用在WAV音频文件中。
三.WAV音频文件存储结构及数据恢复
1、WAV音频文件存储结构
WAV音频文件中的音频数据编码方式有PCM、Microsoft ADPCM、IEEE float、ITU G.711 ɑ-law、ITU G.711 µ-law、GSM 6.10、ITU G.721 ADPCM等几种常见的压缩编码格式。
WAV格式音频文件存储结构
2、WAV音频文件数据恢复
在对WAV文件进行修复时,其中最关键的信息就是“fmt”块中记录的音频压缩编码格式信息(如下表)。根据各种编码方式可以在“data”块中提取出有效的音频数据,并按照wav的结构对文件进行修复。
WAV文件中fmt块包含编码信息
四.WAV音频文件修复注意事项
WAV文件修复需要分为两种情况来考虑:
一是有同设备生成的能正常播放的wav音频文件作为参考样本文件进行修复;
二是没有参考样本文件,则需要根据音频数据的特征自定义压缩编码方式、音频采样率、音频通道数、音频数据传输速率,通过自定义信息对音频文件进行修复。
这里以WAV文件采用PCM编码音频数据为例:
①确定音频采样率、音频通道数、音频数据传输速率
②根据WAV文件存储结构组合音频数据流
MP3编码
一.MP3编码介绍
MPEG-1 or MPEG-2 Audio Layer III是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3,是目前最流行的音频编码格式,它是一种有损压缩格式,压缩编码的质量与选择的比特率有关。
MP3编码流程
二.MP3编码运用场景
MP3编码数据运用在MP3音频文件中。
三.MP3音频文件存储结构及数据恢复
1、MP3文件存储结构
MP3文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位。
MP3文件大体分为三部分:TAG_V2(ID3V2),音频数据,TAG_V1(ID3V1),详细文件结构如下所示。
MP3文件结构
MP3音频文件中每帧音频数据之间相互独立,所以根据帧头结构可以确定每帧数据的长度,因此只要获取了帧头结构的参数信息,就可以确定每帧的帧长度。Mp3文件存储结构如下图。
Mp3文件存储结构
2、MP3音频文件数据修复
因为MP3文件中音频帧之间的独立性,MP3音频文件的修复通过音频帧的4字节帧头来确定音频帧数据。
OGG编码
一.OGG编码介绍
OGG编码的全称是OGGVobis(oggVorbis),是一种音频压缩格式,类似于MP3等的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。它还有一个特点是支持多声道。
Ogg Vorbis编解码流程图
二.OGG编码运用场景
OGG编码生成的音频文件格式就为OGG音频文件。
三.OGG音频文件存储结构及数据恢复
1、OGG音频文件存储结构
OGG是以页(page)为单位将逻辑流组织链接起来,每个页都有页头和页数据两部分。每页的页头中都有页标识“OggS”。OGG格式音频文件存储结构如下图。
OGG格式音频文件存储结构
2、OGG音频文件数据恢复
在OGG音频文件中,OGG Vorbis比特流是以三个数据包头开始的。这些头数据包按顺序依次是:标识标题、注释标题和设置数据包。这些都与解码Vorbis音频文件密切相关的,每个数据包都是以同样的头结构“vorbis”开始,如果一个ogg音频文件缺失了其中三个数据包中任意一个数据包内容,则该音频文件不能正常播放。
四.OGG音频文件数据修复注意事项
OGG音频文件修复需要考虑两个方面的问题:
1、OGG音频文件是否缺失标识标题、注释标题和音频设置这三个数据包。
若缺失,要实现OGG文件修复则需要提供同设备生成的能够正常播放的OGG音频文件作为参考样本文件,再将受损文件中的音频数据按页提取出来,组成新的可播放的OGG音频文件。
2、OGG音频文件页校验码是否正确。
在OGG文件每页都有一个4字节页校验码,
当一个OGG文件不能正常播放,且三个数据包都存在,则需要对页校验码进行校验计算;
若三个数据包所在页的校验码错误,则OGG文件不能正常播放;
若是其中的音频数据所在页校验码错误,则该页音频数据不能正常播放,但并不影响其他页的音频数据,只需要对校验错误的页进行重新校验计算。
AMR编码
一.AMR编码介绍
AMR主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声通话。
AMR编解码流程
Payload Parse模块-----解码出编码语音数据;
Speech Decode模块----解码语音帧;
DTX Decode模块-----解码噪音帧;
Post-Processing模块-----语音后处理;
二.AMR编码运用场景
AMR编码生成的音频文件格式就为AMR音频文件。
三.AMR音频文件存储结构及数据修复
1、AMR音频文件存储结构
AMR音频编码分为两类分别为AMR-NB和AMR-WB。这两类AMR音频编码的区别主要在于帧类型和对应的传输比特率不同。AMR音频文件由文件头+若干语音帧构成,如图所示。
AMR音频帧1字节帧头结构
在每个语音帧的第一个字节为该语音帧的帧头,根据帧头中包含的帧类型值以及文件头结构确定每个语音帧的字节长度。AMR音频文件存储结构如下所示。
AMR音频文件存储结构
在计算AMR文件每个语音帧的字节长度,需要知道帧类型对应的编码方式,具体详情如下所示。
AMR帧编码方式
以上图(AMR音频文件存储结构图)的语音帧为例,其中一帧音频帧的帧头值为0x14=0b00010100,AMR文件的文件头为“AMR-WB”,帧头值0x14中包含参数内容有:帧类型为0010=2;帧质量为1,表示该帧为good frame;结合AMR帧编码方式表中数据可知,该音频帧的数据传输速率为12.65kBit/s。
2、AMR音频文件数据修复
在AMR文件中,每个语音帧的时长为20毫秒,因此在对AMR文件进行修复时:首先需要确定AMR文件的分类;然后根据每帧数据的帧头确定每帧数据的字节长度;再根据传输速率和每帧时长可计算出一帧音频帧的字节长度=传输比特率/每秒帧数/8位+1字节帧头,从而实现AMR文件修复。
四.AMR音频文件修复注意事项
针对AMR音频文件的数据恢复需分为两种情况考虑:
1、有参考样本文件的情况
首先,根据同设备生成的AMR文件的文件头确定AMR的分类;
然后,根据帧头确定帧数据类型从而计算出每帧音频数据的字节长度;
最后,获取待修复文件中的每帧音频数据,根据AMR文件结构生成新的可正常播放的AMR文件。
2、无参考样本文件的情况
首先,根据语音帧帧头结构和两种AMR文件类型,反推出一帧语音数据的字节长度;
然后,根据字节长度与文件中语音帧长度对比,确定AMR文件类型;
最后,获取待修复文件中的每帧音频数据,根据AMR文件结构生成新的可正常播放的AMR文件。
在日常工作生活中对于音频文件的运用无处不在,本文我们针对当前主流的几种音频格式,基于其音频编码方式原理提出的音频文件数据恢复方案,希望能够帮助您高效且快速的解决音频文件的数据修复问题。