WAV格式的采样数据和模拟信号如何转换?

昌维
  • 4.5k

比如说目前主流的音频量化精度都是16bit,那么这里面的data chunk中每一个取样对应的数字其实范围就应该是-32767-32768,那么这个取样的数字如何转换成模拟信号呢?

换句话说就是,每一个采样中的那些数字和模拟信号中的音频频率是否存在一种映射规则?比如说某个采样为0x00,那么它是否就是表示该采样采集的是0hz这个频率,代表无声?(当然我并不知道是什么规则,这只是我的猜测打个比方而已)

Data Chunk
    ==================================
    |       |所占字节数|  具体内容   |
    ==================================
    | ID    |  4 Bytes |   'data'    |
    ----------------------------------
    | Size  |  4 Bytes |             |
    ----------------------------------
    | data  |          |             |
    ----------------------------------
             图5 Data Chunk

    Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是
数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,
wav数据的bit位置可以分成以下几种形式:
    ---------------------------------------------------------------------
    |   单声道    |    取样1    |    取样2    |    取样3    |    取样4    |
    |--------------------------------------------------------------------
    |  8bit量化   |    声道0    |    声道0    |    声道0    |    声道0    |
    ---------------------------------------------------------------------
    |   双声道    |          取样1            |           取样2           |
    |--------------------------------------------------------------------
    |  8bit量化   |  声道0(左)  |  声道1(右)  |  声道0(左)  |  声道1(右)  |


    ----------------------------------------------------------------------                                      

    |   单声道    |    取样1                  |            取样2           |
    |---------------------------------------------------------------------
    | 16bit量化   |    声道0       |  声道0   |    声道0       |  声道0    |
    |             | (低位字节)  | (高位字节)  | (低位字节)     | (高位字节)|
    -----------------------------------------------------------------------

    |   双声道    |    取样1                         |            取样2             |
    |-------------------------------------------------------------------------------
    | 16bit量化   |    声道0(左)  |  声道0(左)   |    声道1(左) |  声道1(右)|
    |             | (低位字节)      | (高位字节)     | (低位字节)     | (高位字节)  |
    ---------------------------------------------------------------------------------
回复
阅读 3.4k
3 个回答
冰雪林中著此身
  • 2
新手上路,请多包涵

麦克风接收到声音并输出模拟信号,然后被模数转换芯片转换为数字信号然后进入计算机。

声卡芯片(就是那只小螃蟹)可以接收声音的数字信号(这里的数字信号就是你的WAV文件中保存的声音数据)并转化为模拟信号给你的喇叭,就能听到声音了。

关于数字信号如何变成模拟信号你可以看看DAC [数字模拟转换器[1]: https://zh.wikipedia.org/wiki...

标准WAV存储的数据是PCM(脉冲编码调制)。采样数据就是实际电平数据量化得到的。计算机CPU是不能处理模拟数据的,数字信号输出到声卡上,通过DAC转换器转换为电平模拟信号。

样本那个数字的物理意义是发出这个声音的物体的振动位移, 不是频率。

从样本 (时域) 求信号在各频率的分量 (频域) 这个操作叫傅立叶变换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏