PCM以及G711编码

PCM:

PCM模数转换时,具体的模拟量是如何确定为某一个数字值的?以前一直认为是这样的:比如模拟量(电压)是3V,则对应的数字量是3。其实这个形而上学的认识错了。

ADC时,存在一个参考电压,此参考电压就是用来确定模拟量对应的数字量的,详细可参考 http://wenku.baidu.com/link?url=ZnvwHHE10-0UZ8hPRvLczj56dEQlblRAkrW5_35BQVg8g_VRVXGKZNpc58m8zPm0LHJA-ERkoiNSJ2noHTIngHx5bazjUdAzkKcmHecmktu 。尤其第6、10、11、12,很能说明问题。

音频基准电平浅析 https://www.cnblogs.com/sys-engineer/archive/2012/09/18/2691001.html 这篇文章,讲的比较透彻:

我国国家标准规定,数字基准电平-20dBFS对应模拟信号的+4dBu,即当输入+4dBu幅度的sine模拟音频信号时,信号经过运算放大器调整,进入ADC采样输出的数字信号编码值应该为-20dBFS。

注:

1 : 0 dBFS 对应ADC最大量程,编码值为0x7FFF,请参考PCM编码相关标准。
2 : n dBFS = 20 * log( x / 0x7FFF ); 对于m bit采样adc,n = 20log(x / 2的(n-1)次方)
3 : n dBu = 20 * log( v / 0.775 );

实际上确定了dBu,就确定了输入电压的值,+4dBu,对应的模拟输入电压为:1.23V。而直到了dBFS,也就知道了对应的二进制编码,-20dBFS,对应的编码有2个,0x0CCD和0xF333,为什么会有两个呢?因为模拟输入电压是交流的,相同的值,如果电压极性相反,那就一个正值一个负值,数字是相同的。负值是采用补码表示的。而0xF333正好是-0x0CCD的补码表示。

有了+4dBu对应 -20dBFS这个基准,就能计算出任何一个输入信号的编码值,比如对于+5dBu的输入,则对应-19dBFS,编码为0x0E5D,当然还有一个对应的补码形式的负值。

同时一旦确定了这个基准,那么,输入端能接受的最大输入电压也就确定了:最大输入电压应该对应0dBFS,此时对应的编码时0x7FFF,也就是24dBu,可以计算出此时输入电压为12.28V。也就是说,对于一个麦克风系统,如果其输出电压超过12.28V,那么,PCM数字化后,信号就会失真。这也就是为什么我们对麦克风大吼的话,其输出在最大音量处会失真的原因。

 

G711压缩算法:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值