首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

怎么通过波形计算音量

2012-02-17 
如何通过波形计算音量?将媒体中的声音部分可解码为PCM格式,对于一帧音频数据有多个采样点,每个采样点的值

如何通过波形计算音量?
将媒体中的声音部分可解码为PCM格式,对于一帧音频数据有多个采样点,每个采样点的值不同,如果是16位,可能还有正负区别,请问正负数代表什么?如何获得该帧的平均音量值?

[解决办法]
音量值计算:db=20*lg(x/2^15),其中x表示样点幅度值,db表示分贝值。
对于16位,波形纵轴表示幅值,正负好像代表电压,表征音量大小。0表示无声。
求平均音量就应该计算所有采样点的平均值吧。
[解决办法]
楼主可以先查一下PCM的采样原理。声音是一种波,PCM数据是波形的描述,音量值表示波的能量,和波的振幅相关,和各点的相对差值有关。16bits的采样值表示范围是-32768~32767。把每个点依次连接起来就是声音的波形了。求音量先将数据转换成-1~1之间(因为位率是是精度表示,要转换成相对最大值的比例),进行傅立叶变换,提高速度使用快速傅立叶变换(FFT),求出当时的频谱图,就是各个频率的音量大小。求平均就是总音量了。
[解决办法]
FFT变换有实部数据和虚部数据,其能量值是(实部*实部+虚部*虚部)的开方,而声音的大小是分贝,20*lg(能量值),所以频谱图各音量是10*lg(实部*实部+虚部*虚部)

热点排行