Qt之调用FFTW3实现音频频谱(原理)

Posted 草上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt之调用FFTW3实现音频频谱(原理)相关的知识,希望对你有一定的参考价值。

一.效果

最近在用播放器业界天花板PotPlayer听歌时,发现其频谱跳动非常有趣,如下所示:

 于是决定自己实现一个,如下所示:

别看功能很简单,但是涉及到的原理还是挺多的,本篇主要是关于原理的总结。 

 二.频谱的原理

既然是频谱,必然和频率相关。鼓声和弦乐的频率范围相差很大,当音乐中有震耳的鼓声时,频谱中低频的部分就跳的很高,说明这部分频率的功率比较高。同样,当高亢的小提琴声音响起时,频谱中高频的部分就跳的很高,说明高频部分的功率比较高。正是因为这个关系,频谱总是和正在播放的音乐“相映成趣”。因此要在播放器中显示跳动的频谱,就需要知道音频数据中各个频率对应的功率,常见的音频数据都是时域信号,需要转换成频域信号才能进行分析。

三.傅里叶变换

既然是频谱,也就是时域信号的频域展示。一维傅立叶变换的数学意义就是将时域信号转换为频域信号。连续时域信号以及对应的连续傅里叶变换都是连续函数(且是无限长度的时域信号),但是用计算机进行数字处理只能处理有限长度的离散信号,所以必须将原始信号离散化,同时建立对

以上是关于Qt之调用FFTW3实现音频频谱(原理)的主要内容,如果未能解决你的问题,请参考以下文章

音频频谱动画的原理与实现

wav音频文件解析读取 定点转浮点分析 幅值提取(C语言实现)

实时音频处理

FFT 频谱未正确显示

QT 5.7 分析音频输出

在 Unity 中预处理音频频谱数据