PCM音频幅度值?

sta*_*010 31 iphone audio android pcm audio-recording

我开始使用我的Android智能手机进行录音.

我成功将录音保存到PCM文件中.当我解析数据并打印出带符号的16位值时,我可以创建如下图所示的图形.但是,我不了解沿y轴的振幅值.

  1. 振幅值的单位究竟是多少?这些值是16位符号,因此它们的范围必须介于-32K到+ 32K之间.但这些价值代表什么呢?分贝?

  2. 如果我使用8位值,则值必须在-128到+128之间.如何将其映射到16位值的音量/"响度"?你会使用16比1的量化映射吗?

  3. 为什么会出现负值?我认为完全沉默会导致值为0.

如果有人可以将我指向一个网站,其中包含有关录制内容的信息,我将不胜感激.我发现PCM文件格式的网页,但不是数据值.

在此输入图像描述

hot*_*aw2 22

想想麦克风的表面.当它静音时,表面在零位置处不动.当你说话时,会导致嘴巴周围的空气振动.振动类似于弹簧,并且在两个方向上都有运动,如前后,或上下,或进出.空气中的振动也会导致麦克风表面振动,如上下移动.当它向下移动时,可以测量或采样正值.当它向上移动时可能被采样为负值.(或者它可能正好相反.)当你停止说话时,表面会回落到零位置.

从PCM录制数据中获得的数字取决于系统的增益.对于常见的16位采样,范围从-32768到32767,可以记录振动的最大可能偏移,无失真,削波或溢出.通常将增益设置得稍低,以使最大值不在失真边缘.

添加:

8位PCM音频通常是无符号数据类型,范围从0..255,值128表示"静音".因此,您必须加/减这个偏差,并缩放大约256,以便在8位和16位音频PCM波形之间进行转换.

  • @stackoverflowuser2010 你混淆了数字世界和模拟世界。样本值和分贝水平**没有相关性**。基本上,如果麦克风和录音电路设计为录制高达 40db,那么 +32k(或 -32k)的采样电平将接近 40db 声音的峰值电平。将麦克风移离声源更远,*相同*的峰值将数字化为低于 +32k。这仍然忽略了 AGC 电路的影响! (2认同)

sta*_*san 7

原始数字是用于将模拟音频信号转换为数字信号的量化过程的产物。将音频信号视为 0 附近的振动更有意义,延伸至 +1 和 -1 以实现信号的最大偏移。除此之外,你会得到削波,这会扭曲谐波并且听起来很糟糕。

但是,计算机在分数方面的工作并不是那么好,因此使用从 0 到 65536 的离散整数来映射该范围。在大多数此类应用中,+32767 被认为是麦克风或扬声器振膜的最大正偏移。有没有相关性的样品点和声压级之间,除非你在记录(或再现)电路的特性开始理。

(顺便说一句,16 位音频是非常标准和广泛使用的。它是信噪比和动态范围的良好平衡。除非您进行一些时髦的非标准缩放,否则 8 位是嘈杂的。)