wav全集解析
PCM编码与Waveform音频文件(.wav)格式详解

PCM编码与Waveform⾳频⽂件(.wav)格式详解 ⼤家好,我是痞⼦衡,是正经搞技术的痞⼦。
今天痞⼦衡给⼤家介绍的是PCM编码及Waveform⾳频⽂件格式。
嵌⼊式⾥有时候也会和⾳频打交道,⽐如最近特别⽕的智能⾳箱产品,离不开前端的⾳频信号采集、降噪,中间的语⾳识别(ASR)、⾃然语⾔处理(NLP),以及后端的⽂语合成(TTS)、⾳频播放。
⾳频信号采集是处理声⾳的第⼀步,要采集⾳频就离不开PCM编码,⾳频采集完成⾃然需要保存,waveform格式(.wav)是⼀种最经典的⾳频⽂件格式。
今天痞⼦衡就给⼤家详细介绍PCM编码以及waveform⽂件格式。
⼀、声⾳基础 众所周知,声⾳是由物体振动产⽣的声波,声⾳通过介质(空⽓或固体、液体)传播并能被⼈听觉器官所感知。
发⾳物体情况(材料,距离,振动强度等)不同,产⽣的声⾳也不同。
为了区分不同的声⾳,我们主要⽤如下三个参数来描述声⾳的特征:⾳量:⼈主观上感觉到的声⾳⼤⼩(也叫响度),由“振幅”(amplitude)和⼈离声源的距离决定。
⾳调:声⾳的⾼低(⾼⾳、低⾳),由“频率”(frequency)决定,频率越⾼⾳调越⾼。
⾳⾊:⾳⾊是⼀种抽象的东西,波形决定了声⾳的⾳⾊。
声⾳因不同发声物体材料⽽具有不同特性,波形是把这个抽象特性直观的表现出来。
典型的⾳⾊波形有⽅波,锯齿波,正弦波,脉冲波等。
三⼤参数⾥除了⾳⾊没有度量单位外(可以认为⾳⾊是声⾳的UID,每种⾳⾊都是独⼀⽆⼆的),⾳量和⾳调均有度量单位,这意味着⾳量和⾳调是可调整的,也是声⾳之间可对⽐的特征参数。
1.1 ⾳量单位-分贝(dB) 声波是⼀种机械波(压⼒波)。
声波(空⽓质点)的连续振动,使空⽓分⼦不断交替的压缩和松弛,使⼤⽓压迅速产⽣起伏,这种⽓压的起伏部分,就称为声压。
声压的振幅表⽰质点离开平衡位置的距离,反映从波形波峰到波⾕的压⼒变化,以及波所携带的能量的多少。
声压值虽然可以反映⾳量⼤⼩,但⼈们⽇常⽣活中遇到的声⾳,若以声压值表⽰,变化范围⾮常⼤(达到六个数量级以上),并且⼈体听觉对声信号强弱刺激反应不是线形的,⽽是成对数⽐例关系。
WAV文件格式分析与详解

WAV文件格式分析与详解作者:王若钧何杉来源:《数字技术与应用》2014年第03期摘要:WAV文件格式信息是对WAV文件编程的重要依据。
揭开WAV文件格式的奥秘是开发功能强大的具有自主知识产权的语音处理软件的关键。
本文结合波形文件的基本知识,较系统地说明了WAV文件的存储原理、文件结构、WAV文件头格式、基于PCM编码的数据组织,内容全面、清楚、准确,还包含了一些新汇集的参数。
可作为开发人员的参考资料。
关键词:文件格式 WAV 编码声音中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2014)03-0093-021 引言WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。
WAV文件格式简称WAV格式是一种存储声音波形的数字音频格式,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linix等多种操作系统,详述如下。
2 波形文件的基础知识2.1 波形文件的存储过程声源发出的声波通过话筒被转换成连续变化的电信号,经过放大、抗混叠滤波后,按固定的频率进行采样,每个样本是在一个采样周期内检测到的电信号幅度值;接下来将其由模拟电信号量化为由二进制数表示的积分值;最后编码并存储为音频流数据。
有的应用为了节省存储空间,存储前,还要对采样数据先进行压缩。
2.2 WAV文件的编码编码包括了两方面内容,一是按一定格式存储数据,二是采用一定的算法压缩数据。
WAV格式对音频流的编码没有硬性规定,支持非压缩的PCM(Puls Code Modulation)脉冲编码调制格式,还支持压缩型的微软自适应差分脉冲编码调制Microsoft ADPCM(Adaptive Differential Puls Code Modulation)、国际电报联盟(International Telegraph Union)制定的语音压缩标准ITU G.711 a-law、ITU G.711-law、IMA ADPCM、ITU G.723 ADPCM (Yamaha)、GSM 6.10、ITU G.721 ADPCM编码和其它压缩算法。
WAV文件读取

WAV⽂件读取WAV是⼀种以RIFF为基础的⽆压缩⾳频编码格式,该格式以Header、Format Chunk及Data Chunk三部分构成。
本⽂简要解析了各部分的构成要素,概述了如何使⽤C++对⽂件头进⾏解析以及提取⾳频数据。
上图展⽰了WAV⽂件格式,包括每⼀field的⼤⼩与端序HeaderChunkID: 4字节⼤端序。
⽂件从此处开始,对于WAV或AVI⽂件,其值总为“RIFF”。
ChunkSize: 4字节⼩端序。
表⽰⽂件总字节数减8,减去的8字节表⽰ChunkID与ChunkSize本⾝所占字节数。
Format: 4字节⼤端序。
对于WAV⽂件,其值总为“WAVE”Format ChunkSubchunk1ID: 4字节⼤端序。
其值总为“fmt ”,表⽰Format Chunk从此处开始。
Subchunk1Size: 4字节⼩端序。
表⽰Format Chunk的总字节数减8。
AudioFormat: 2字节⼩端序。
对于WAV⽂件,其值总为1。
NumChannels: 2字节⼩端序。
表⽰总声道个数。
SampleRate: 4字节⼩端序。
表⽰在每个通道上每秒包含多少帧。
ByteRate: 4字节⼩端序。
⼤⼩等于SampleRate * BlockAlign,表⽰每秒共包含多少字节。
BlockAlign: 2字节⼩端序。
⼤⼩等于NumChannels * BitsPerSample / 8,表⽰每帧的多通道总字节数。
BitsPerSample: 2字节⼩端序。
表⽰每帧包含多少⽐特。
Data ChunkSubchunk2ID: 4字节⼤端序。
其值总为“data”,表⽰Data Chunk从此处开始。
Subchunk2Size: 4字节⼩端序。
表⽰data的总字节数。
data:⼩端序。
表⽰⾳频波形的帧数据,各声道按帧交叉排列。
使⽤C++解析WAV⽂件⽂件头结构定义结构体WaveHeader来保存WAV⽂件头,即Header、Format Chunk及Data Chunk的⾮data部分,此外在该结构体中添加了num_frame 字段,⽤来保存⽂件总帧数,由于Header、Format Chunk与Data Chunk之间可能有其他说明信息,所以还添加了start_pos字段⽤来保存真正的data开始的位置。
wav音频文件格式分析与数据获取

wav音频文件格式分析与数据获取作者:罗海涛来源:《电脑知识与技术》2016年第27期摘要:音频文件是把语音信号离散化的数字文件,wav格式的音频文件是常用的二进制音频格式,广泛应用于语音信号处理、语音识别、语音合成等领域;本文详细分析了wav音频文件格式,并用C语言编程,实现对该格式文件的访问,获取音频信息和数据。
关键字:wav;音频文件;音频信息;音频数据中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)27-0211-031 概述语言是人们之间进行通讯和交流必不可少的手段。
语音由人的发音器官发出,语音信号是连续的模拟信号,在用计算机来处理时,需要进行数字化,包括采样、量化等过程,转换成离散的数字信号,保存在音频文件中。
现在很多领域要求对语音信号中的音频数据进行进一步的加工和处理。
例如,利用读出的音频信号数据,进行语音信号时域和频域分析、语音压缩、语音编码、解码、语音合成、语音识别、语音增强等,并通过波形观察比较不同编码效果。
另外,利用多媒体语音系统我们还可以用语音数据和波形方便地进行噪声模拟分析,语音特征提取研究,以及语音识别和训练等应用方面的实验。
又如:在人工智能领域,通过设计软件和硬件电路,用声音去控制计算机工作,还有机器人通过语音与人进行简单的对话交流等等。
这些都要求我们对数字语音信号进行一些必要的加工处理。
wav文件格式是一种重要的数字音频文件格式,是目前应用很广泛的一种音频格式。
相比于其他格式如MP3、MP4、RAM等压缩效率更高的音频文件格式,wav文件没有采用压缩技术,因而其文件要大很多,一般都在几兆字节,甚至更大。
但也正因为没有采用压缩技术,wav文件中声音的采样数据很容易被读出来,便于做其他处理。
例如:画出声音的信号波形、作出频谱,进行时域、频域分析,提取语音信号的特征参数用于语音识别等。
现在的应用程序几乎都支持wav文件格式,也有专门软件可以完成从wav文件格式向其他文件格式的转换,或者把其他格式文件转换为wav格式,例如,微软公司的Adobe Audition。
wav文件格式分析

一. RIFF概念在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。
例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。
RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。
图一、块的结构示意图辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。
一般而言,chunk本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。
而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。
此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。
图二、RIFF/LIST块结构只要依循此一结构的文件,我们均称之为RIFF档。
此种结构提供了一种系统化的分类。
如果和MS一DOS 文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。
至于在RIFF文件的处理方面,微软提供了相关的函数。
视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。
二. WAV文件格式WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。
多媒体文件解析(一):WAV文件解析

多媒体⽂件解析(⼀):WAV⽂件解析在之前的系列中,我们对主流的多媒体的⽂件格式进⾏了整理和讲述。
这⾥开始我们开始对如何分析和解释多媒体⽂件来进⾏整理,以便于以后我们⾃⼰排查⼀些问题的时候有⼀些帮助。
本篇我们就讲⼀下WAV⽂件格式。
⾸先我们知道WAV格式的实质就是在 PCM ⽂件的前⾯加了⼀个⽂件头。
下⾯是使⽤⼆进制打开的⼀个WAV⽂件,此⽂件只写⼊了WAV头信息。
整个⽂件的⼤⼩为44b。
下⾯我们就针对WAV头进⾏⼀点点的解析和整理。
WAV⽂件遵循RIFF规则,其内容以区块最⼩单位进⾏存储。
WAV⽂件由3个区块组成:RIFF chunk, Format chunk 和 Data chunk。
另外还有可能包含其他的可选区块,如:Fact chunk、Cue points chunk等。
⼀、RIFF区块下⾯我们针对此区块的三个名称的内容进⾏分析:ID:在WAV格式中,ID固定以 RIFF 为标识。
换成进制数据为:0x52494646,此值为⼤端序,按照正常的顺序进⾏读取即可。
Size:Size的⼤⼩为整个⽂件的长度减去ID和Size的长度. 注意此为⼩端序,计算⼤⼩的时候,需从右边往左读。
例如本WAV的Size为36(⼗六进制:24),再加上Size和ID的长度,整个⽂件的⼤⼩44b就是这么来的.Type:在WAV⽂件中,Type的内容固定为 "WAVE",表⽰后⾯会有两个区块,Format区块和Data区块。
⼆、FORMAT区块ID:此区块的ID以'fmt '为标识Size:表⽰该区块数据的长度(不包含ID和Size的长度)AudioFormat:表⽰Data区块存储的⾳频数据的格式,PCM⾳频数据的值为1NumChannels:表⽰⾳频数据的声道数,1:单声道,2:双声道SampleRate:表⽰⾳频数据的采样率ByteRate:每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8BlockAlign:每个采样所需的字节数 = NumChannels * BitsPerSample / 8BitsPerSample:每个采样存储的bit数,8:8bit,16:16bit,32:32bit三、DATA区块ID:区块的ID以'data'为标识Size:表⽰⾳频数据的长度,N = ByteRate * secondsData:存储的是⾳频数据四、WAV⾳频数据存储⽅式WAV⽂件的PCM⾳频数据以⼩端形式来进⾏数据存储。
wav格式结构

W A V实际上是Waveform Audio File Format(波形音频文件格式)的简称,它是微软公司开发的一种声音文件格式。
W A V实际上是对PCM格式的的一种包装,W A V取样频率可以是44100Hz、22050Hz、11025Hz等,量化位数可以8位或16位,声道数可以是单声道,也可以是立体声。
W A V文件包含了一个“fmt ”段落和一个“data”段落,“fmt”段落包含了音源样本的参数信息,“data”段落包含了实际的音源数据。
在W A V文件中,“fmt”段通常包含以下信息:1. 格式说明标志位(Subchunk1ID):4个字节,等于“fmt ”或者“wFormatTag”。
2. 格式说明标志位长度(Subchunk1Size):4个字节,等于16或者所使用的单声道位数与有关设置的乘积加上2。
3. 音频流的通道数(nChannels):2个字节,表示每个声道的样本数。
4. 每秒的采样数(nSamplesPerSec):4个字节,表示每秒的采样频率。
5. 采样点振幅位数(nAvgBytesPerSec):4个字节,等于每秒发送字节数,这是nChannels和nSamplesPerSec的乘积的两倍加一再除以8的结果。
6. 音频流码的位深度(nBlockAlign):2个字节,等于nChannels 和nAvgBytesPerSec的乘积除以8的结果。
7. 总采样点数(wNumBlocks):2个字节,等于采样点数。
8. 格式说明标志位(Subchunk2ID):4个字节,等于“data”。
9. 格式说明标志位长度(Subchunk2Size):4个字节,等于采样点数乘以nChannels再乘以nAvgBytesPerSec除以8的结果。
以上信息仅供参考,如需了解更多信息,建议咨询专业人士。
wav文件头详解,看懂wav文件

wav⽂件头详解,看懂wav⽂件⼯作中部门萌新常问的wav⽂件头格式及怎么看wav⽂件,且有时会遇到 “伪.pcm” 格式现总结如下: WAV是最常见的声⾳⽂件格式之⼀,是微软公司专门为Windows开发的⼀种标准数字⾳频⽂件,该⽂件能记录各种单声道或⽴体声的声⾳信息,并能保证声⾳不失真。
但WAV⽂件有⼀个缺点,就是它所占⽤的太⼤(每分钟的⾳乐⼤约需要12兆磁盘空间)。
它符合资源互换⽂件格式(RIFF)规范,⽤于保存Windows平台的⾳频信息资源推荐⼀个好⽤的16进制⽂件查看的⼯具:HxDx64对于完全0基础的,推荐下⾯⽹站中的详细解释,⽐较详细:(侵删)1.RIFF块(RIFF-Chunk)偏移地址字节数数据类型内容&H004String‘RIFF‘⽂件标志&H044UInteger⽂件总长&H08 4 String ‘WAVE‘⽂件标志2.格式化块(Format-Chunk)偏移地址字节数数据类型内容&H0C4String‘fmt‘标志&H104UInteger块长度&H12 2 UShort PCM格式类别&H142 UShort 声道数⽬&H184 UInteger 采样率&H1C 4 UInteger 传输速率&H1E 2UShort 数据块对齐&H202UShort 每样本bit数&H22 2UShort 可选3.附加块(Fact-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H264String‘fact‘标志&H2A4UInteger块长度&H2E4UInteger附加信息4.数据块(Data-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H324String‘data‘⽂件标志&H364UInteger数据块总长按照相关头格式,来观察字节即可Example:(取⾃上⾯博客)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cnt++; } printf("Sample Cnt:%d\n",cnt); free(sample); fclose(fp); fclose(fp1); return 0; }
4.3.将 PCM 音频数据转换成 WAV 格式
WAV 为微软公司(Microsoft)开发的一种声音文件格式,它符合 RIFF(Resource Interchange File Format)文件规范,用于保存 Windows 平台的音频信息资源,被 Windows 平台及其应用程序所广泛支持。 WAVE 文件通常只是一个具有单个 “WAVE”块的 RIFF 文件,该块由两个子块(”fmt”子数据块和”data”子
db 的意义
其实再简单不过了,就是把一个很大(后面跟一长串 0 的)或者很小(前面有一长串 0 的)的数比较简短地 表示出来[2]。dB 的引入是为了将乘除关系变为加减关系,更便于工程运算。如: X = 1000000000000000= 10lgX = 150 dB X = 0.000000000000001 = 10lgX = -150 dB [例 1] 甲功率比乙功率大一倍,那么 10lg(甲功率/乙功率)=10lg2=3dB。也就是说,甲的功率比乙的功率 大 3 dB。 [例 2] 7/8 英寸 GSM900 馈线的 100 米传输损耗约为 3.9dB。 [例 3] 如果甲的功率为 46dBm,乙的功率为 40dBm,则可以说,甲比乙大 6 dB。 [例 4] 如果甲天线为 12dBd,乙天线为 14dBd,可以说甲比乙小 2 dB。
22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d
字段解析:
assuming you want to maximum level found in the file, the simplest way is to scan for the largest absolute sample value (fraction of 1.0), and then calculate
}
4.2.降 低 某 个 声 道 的 音 量
因为对于 PCM 音频数据而言,它的幅值(即该采样点采样值的大小)代表音量的大小,所以我们可以通过
减小某个声道的数据的值来实现降低某个声道的音量
int simplest_pcm16le_halfvolumeleft(char *url){ FILE *fp=fopen(url,"rb+"); FILE *fp1=fopen("output_halfleft.pcm","wb+"); int cnt=0; unsigned char *sample=(unsigned char *)malloc(4); while(!feof(fp)){ short *samplenum=NULL; fread(sample,1,4,fp); samplenum=(short *)sample; *samplenum=*samplenum/2; //L fwrite(sample,1,2,fp1); //R fwrite(sample+2,1,2,fp1);
分贝毫瓦 dBm
dBm[4]全写为 decibel relative to one milliwatt , 为功率的绝对值,而不同于 dB 只是一个相对值。
任意功率 P(mW)与 x(dBm)换算的公式如下: 例如,1 毫瓦(1 mW)换算成分贝毫瓦为 0dBm;1 瓦(1 Watt)换算成分贝毫瓦则为 30dBm。
unsigned short BlockAlign;//块对齐大小,其值=NumChannels * BitsPerSample/8
unsigned short BitsPerSample;//每个采样点的 bit 数,一般为 8,16,32 等。 }WAVE_FMT; typedef struct{
数据块),它的格式如下图所示
typedef struct{
char
ChunkID[4];//内容为"RIFF"
unsigned long ChunkSize;//存储文件的字节数(不包含 ChunkID 和 ChunkSize 这 8 个字节)
char
}WAVE_HEADER; typedef struct{
char
Subchunk2ID[4];//内容为“data”
unsigned long Subchunk2Size;//内容为接下来的正式的数据部分的字节数,其值 =NumSamples * NumChannels * BitsPerSample/8
}WAVE_DATA;
比如下面的例子
这里是一个 WAVE 文件的开头 72 字节,字节显示为十六进制数字: 52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00
小端有关。大端模式如下图所示:
3.PCM 音频数据中常用的专业术语
一般我们描述 PCM 音频数据的参数的时候有如下描述方式
44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2 字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1 字节)记录, 单声道;
lg 的计算
lg 就是以 10 为底的 log。 (1)10lg2 = lg2^10 = lg1024,又因为 lg1000 = 3,所以 10lg2≠3,但非常接近[3]。 (2)lg4=lg(2×2)=lg2+lg2=2lg2≈0.6 (3)lg4=lg(2^2) =2lg2≈0.6 (4)10lg0.5=10 lg(2^(-1))=-10lg2≈-3
1.什么是 PCM 音频数据
PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM 音频数据是未经压缩的音频采样数据裸流,
它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。
2.PCM 音频数据是如何存储的
如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用 LRLRLR 方式存储, 只是另一个声道的数据为 0),如果是双声道的话就按照 LRLRLR 的方式存储,存储的时候还和机器的大
为其他非 PCM 格式的则有一定的压缩。
unsigned short NumChannels;//通道数,单通道(Mono)值为 1,双通道(Stereo)值为 2,等
等
unsigned long SampleRate;//采样率,如 8k,44.1k 等
unsigned long ByteRate;//每秒存储的 bit 数,其值=SampleRate * NumChannels * BitsPerSample/8
level is approx -6dB. Rule of thumb: each successive halving of amplitude equates to a drop by 6dB.
More sophisticated approaches will scan for rms or average level over some block length (say, 5msecs-worth).
Format[4];//内容为"WAVE"
cபைடு நூலகம்ar
Subchunk1ID[4];//内容为"fmt"
unsigned long Subchunk1Size;//存储该子块的字节数(不含前面的 Subchunk1ID 和
Subchunk1Size 这 8 个字节)
unsigned short AudioFormat;//存储音频文件的编码格式,例如若为 PCM 则其存储值为 1,若
4.PCM 音频数据的处理
4.1.分离 PCM 音频数据左右声道的数据
因为 PCM 音频数据是按照 LRLRLR 的方式来存储左右声道的音频数据的,所以我们可以通过将它们交叉
的读出来的方式来分离左右声道的数据
int simplest_pcm16le_split(char *url){ FILE *fp=fopen(url,"rb+"); FILE *fp1=fopen("output_l.pcm","wb+"); FILE *fp2=fopen("output_r.pcm","wb+"); unsigned char *sample=(unsigned char *)malloc(4); while(!feof(fp)){ fread(sample,1,4,fp); //L fwrite(sample,1,2,fp1); //R fwrite(sample+2,1,2,fp2); } free(sample); fclose(fp); fclose(fp1); fclose(fp2); return 0;
Assuming you are able to do C programming, all you need is a soundfile library such as libsndfile, and the rest is easy.
Richard Dobson
This is a standard 16 bit WAV WAV file. The largest sample value in the files is 21188 and the maximum possible value is 32767.