eric2013 发表于 2017-1-1 11:01:13

【原创】2017年第一天,说说音乐频谱的那些事,主流的音频软件一般都是采用对数谱。

说明:
1. 关于这个问题有必要说说,所以元旦假期就花了些时间研究了三款音频软件。
(1)千千静听
(2)foobar2000,一款功能强劲的音频软件
(3)GoldWave,一款功能超级强劲的音频编辑软件
2. 基础知识补充:信号做FFT变换后,我们可以得到信号的频率特性,频率特性又分为幅频特性和相频特性。
做频谱显示的话,我们仅需要用到幅频特性就可以了,幅值和频率取不取对齐,又分为以下三种情况:
(1)将FFT变换后,由幅值和频率绘制的频谱称为幅值谱
(2)幅值取对数的话,我们将其称之为对数谱。
(3)如果幅值和频率都取对数的话,其实就是我们学习信号与系统时,伯德图的幅频响应,如果没有印象的话,需要翻翻课本了。
         

我们下面要讲的音乐频谱显示就用到这三种方式。
==========================================================
下面我先把这三款软件做一个介绍,有个感性认识,介绍完毕后再做问题总结,总结很重要。
1.千千静听
   千千静听是一款早期的音频播放器,现在已经没落了,用的人很少了,不过频谱功能依然还在。频谱的显示效果是如下这个样子。

经过与软件GoldWave频谱设置对比,千千静听生成的频谱是将FFT变换后的幅值取了对数,而横坐标频率没有取对数。
2.foobar2000
   当前测试的版本是1.3.9,测试发现foobar2000对横坐标和纵坐标都取了对数,有10,20,40,80和160段可选配置,
下面是10段,20端和40段的显示效果,特别注意横坐标的频率,这个频率是呈指数式递增的。



3.GoldWave   
       当前测试的版本是6.19,由于GoldWave是音频编辑软件,所以频谱效果可以编辑,而支持各种各样的频谱,效果极其绚丽。
这里我们先看下幅值取对数时,频谱的显示效果。


下面我们通过软件配置,将横坐标修改为对数坐标系,坐标的频率改成指数增长,而不是以前的线性增长




===================================================
总结:
有了上面的感性认识后,我们再来分析下,为什么要对幅值和频率坐标取对数。
1. 如果幅值是A的话,对幅值取对数就是20log(A),底数是10,单位dB。如果取对数的话,好处有二:
(1) 可以让低,中,高频幅值小的信号被拉高,这样更容易展示中高频细节,从而使频谱效果更佳。
          比如显示出来的频谱高度是3:1的关系,实际幅值大小关系是1000:1,
(2)网上还有一种说法是人的听觉响应与强度成对数关系。
现在我已经将MP3软件播放器频谱显示设置为了两种显示方案,幅值谱和对数谱,千千静听是采用这种对数谱。

2.横坐标改成对数坐标系有什么好处。
   其实音乐频谱横坐标取对数的好处就是伯德图的横坐标取对数的好处。
(1)横坐标的频率改成指数增长,而不是以前的线性增长,比如频率刻度为10、100、1000、10^4、等,
         每一小格代表不同的频率跨度,使一条横轴能表示如1hz到10KHz这么大的频率范围,屏幕显示时很方便。
(2)另一个原因是这样做符合人耳对声音的敏感程度(对数效应)。
foobar2000是把横坐标和纵坐标都取了对数,纵坐标取对数比较简单,横坐标取对数稍有些麻烦,研究了foobar2000和GoldWave
没有整理出来对数公式,不过foobar2000横坐标的频率是固定的,测试了不同的采样率基本都是那几个频点。仅仅知道这几个频率点
还不够,比如我们FFT的采样率是44.1KHz,采样点1024,转换后有1024个频率点,如果我们仅用到128个频率点,其它没用到的怎么办?
不显示的话,完全表现不出真实的频谱,这个时候就得需要一种简单的加权算法,把其它没有用到的做一个加权处理,叠加到频率点上面
这样显示效果就比较真实了,当然还有很多其它的算法,有待研究。


参考文献:
wiki百科和百度百科。

eric2013 发表于 2017-1-3 18:57:28

已更新

yumeng 发表于 2017-1-3 22:26:39

byccc 发表于 2017-1-4 09:30:01

页: [1]
查看完整版本: 【原创】2017年第一天,说说音乐频谱的那些事,主流的音频软件一般都是采用对数谱。