zoukankan      html  css  js  c++  java
  • 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

    不定

    量化数据。

    Python使用struct处理二进制

    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)

    卷积定理指出,函数卷积傅里叶变换是函数傅里叶变换的乘积。即一个域中的卷积对应于另一个域中的乘积,例如时域中的卷积对应于频域中的乘积。

    卷积是两个变量在某范围内相乘后求和的结果。

  • 相关阅读:
    HashTable介绍
    java源码 -- HashSet
    java源码 -- AbstractList
    java源码 -- AbstractSet
    java源码 -- AbstractCollection抽象类
    java源码 --List、Set、Collection
    第五篇:SpringBoot整合Mybatis
    java源码 -- AbstractMap
    算法
    根据前序遍历和中序遍历求后序遍历
  • 原文地址:https://www.cnblogs.com/zhang-pengcheng/p/4461743.html
Copyright © 2011-2022 走看看