wav格式
转自: http://www.cnblogs.com/tiandsp/archive/2012/10/17/2728585.html
起始地址 | 占用空间 | 本地址数字的含义 |
00H | 4byte | RIFF,资源交换文件标志。 |
04H | 4byte | 从下一个地址开始到文件尾的总字节数。高位字节在后面,这里就是001437ECH,换成十进制是1325036byte,算上这之前的8byte就正好1325044byte了。 |
08H | 4byte | WAVE,代表wav文件格式。 |
0CH | 4byte | FMT ,波形格式标志 |
10H | 4byte | 00000010H,16PCM,我的理解是用16bit的数据表示一个量化结果。 |
14H | 2byte | 为1时表示线性PCM编码,大于1时表示有压缩的编码。这里是0001H。 |
16H | 2byte | 1为单声道,2为双声道,这里是0001H。 |
18H | 4byte | 采样频率,这里是00002B11H,也就是11025Hz。 |
1CH | 4byte | Byte率=采样频率*音频通道数*每次采样得到的样本位数/8,00005622H,也就是22050Byte/s=11025*1*16/2。 |
20H | 2byte | 块对齐=通道数*每次采样得到的样本位数/8,0002H,也就是2=1*16/8。 |
22H | 2byte | 样本数据位数,0010H即16,一个量化样本占2byte。 |
24H | 4byte | data,一个标志而已。 |
28H | 4byte | Wav文件实际音频数据所占的大小,这里是001437C8H即1325000,再加上2CH就正好是1325044,整个文件的大小。 |
2CH | 不定 | 量化数据。 |
http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html
struct模块中最重要的三个函数是pack(), unpack(), calcsize()
pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存
波形的傅里叶变换
根据原信号的不同类型,我们可以把傅里叶变换分为四种类别:
1非周期性连续信号傅里叶变换(Fourier Transform)
2周期性连续信号傅里叶级数(Fourier Series)
3非周期性离散信号离散时域傅里叶变换(Discrete Time Fourier Transform)
4周期性离散信号离散傅里叶变换(Discrete Fourier Transform)
卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即一个域中的卷积对应于另一个域中的乘积,例如时域中的卷积对应于频域中的乘积。
卷积是两个变量在某范围内相乘后求和的结果。