PCM音频幅度值?

时间:2011-05-04 22:14:55

标签: iphone android audio audio-recording pcm

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

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

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

  2. 如果我使用8位值,则值必须介于-128到+128之间。如何将其映射到16位值的音量/“响度”?您是否只使用16对1量化映射?

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

  4. 如果有人可以将我指向一个网站,其中包含有关录制内容的信息,我将不胜感激。我在PCM文件格式上找到了webpages,但没有找到数据值。

    enter image description here

5 个答案:

答案 0 :(得分:21)

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

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

增加:

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

答案 1 :(得分:4)

原始数字是用于将模拟音频信号转换为数字的量化过程的假象。将音频信号视为0附近的振动更为有意义,延伸至+1和-1以获得最大的信号偏移。除此之外,你会受到削波,这会使谐波和声音变得很糟糕。

但是,就分数而言,计算机无法正常工作,因此使用0到65536之间的离散整数来映射该范围。在大多数这样的应用中,+32767被认为是麦克风或扬声器振膜的最大正偏移。除非您开始考虑记录(或回放)电路的特性,否则采样点和声压级之间存在无相关

(顺便说一下,16位音频是非常标准和广泛使用的。它是信噪比和动态范围的良好平衡。除非你做一些时髦的非标准缩放,否则8位是有噪声的。)< / p>

答案 2 :(得分:3)

Why are there negative values? I would think that complete silence
     

将导致值为0

     

麦克风上的振膜在两个方向上振动并作为a   结果产生正负电压。值为0是静音   因为它表明隔膜没有移动。看看麦克风如何   工作

小澄清:正在记录隔膜的位置。当没有振动时,当位置没有改变时,就会发生沉默。因此,您所看到的振动是推动空气并随着时间推移产生气压变化的原因。空气不再被推动在任何振动的顶部和底部峰值,因此峰值是在发生静音时。信号最响亮的部分是当位置变化最快时,位于峰值中间的某个位置。隔膜从一个峰值移动到另一个峰值的速度决定了隔膜产生的压力大小。当顶部和底部峰值减小到零(或者它们共享的其他数字)时,没有振动,也没有声音。此外,当振膜减速时,峰值之间的时间间隔更长,产生或记录的声压更小。

我建议Yamaha Sound Reinforcement Handbook进行更深入的阅读。理解微积分的概念也有助于理解音频和振动。

答案 3 :(得分:2)

这里有很多好的答案,但它们并没有以易于理解的方式直接解决您的问题。

  

振幅值的单位究竟是多少?价值观是   签名16位,所以他们必须从   -32K至+ 32K。但这些价值代表什么呢?分贝?

这些值没有单位。它们只是代表了一个从模数转换器中产生的数字。 A / D转换器的数字是麦克风和前置放大器特性的函数。

  

如果我使用8位值,那么值   必须在-128到+128之间。怎么样   会被映射到   16位的音量/“响度”   值?你会用16比1吗?   量化映射?

我不明白这个问题。如果要录制8位音频,则值为8位。您是否将8位音频转换为16位?

  

为什么会出现负值?我会   认为完全沉默会   结果值为0

麦克风上的振膜在两个方向上振动,因此产生正负电压。值0表示静音,因为它表示光圈没有移动。见how microphones work

有关如何以数字方式表示声音的详细信息,请参阅here

答案 4 :(得分:2)

16位数字是麦克风的A / D转换器值(你知道这一点)。另请注意,麦克风和A / D转换器之间的放大器具有自动增益控制(AGC)。 AGC将主动改变麦克风信号的放大,以防止过多的电压撞击A / D转换器(通常<2伏特直流)。此外,还有直流电压去耦,它将输入信号设置在A / D转换器的范围中间(比如1伏直流)。

因此,当麦克风没有声音时,AGC放大器正在向A / D转换器发送一条1.0伏直流信号。当声波撞击麦克风时,它会产生相应的交流电压波。 AGC放大器采用交流电压波,以1.0 Vdc为中心,并将其发送到A / D转换器。 A / D采样(测量直流电压,例如44,000 /秒),并吐出电压的+/- 16位值。所以-65,536 = 0.0 Vdc和+65,536 = 2.0 Vdc。值为+100 = 1.00001529 Vdc和-100 = 0.99998474 Vdc命中A / D转换器。

+值高于1.0 Vdc, - 值低于1.0 Vdc。

请注意,大多数音频系统使用对数公式以对数方式对音频波进行曲线处理,因此人耳可以更好地听到它。在数字音频系统(带有ADC)中,数字信号处理将此曲线置于信号上。 DSP芯片是一项重要的业务,TI已经将它们用于各种应用,而不仅仅是音频处理。 DSP可以将非常复杂的数学运算到实时数据流上,这会扼杀iPhone的ARM7处理器。假设你正在向256个超声波传感器/接收器阵列发送2MHz脉冲 - 你明白了。