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

Posted 草上爬

tags:

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

关于原理详见博客:Qt之调用FFTW3实现音频频谱(原理)

一.音频输入

下图是采用率为8000、双声道、采样大小为16,对着麦克风吹气,并分析1024个采样点的频谱图

1.首先获取麦克风等音频输入设备
2.然后设置音频采样参数,这里将参数设置成最简单的方式:单声道、采样大小为8。因为第二部分音频输出会将采样参数设置为双声道、采样大小为16,这样的话就方便对比不同采样参数下的音频数据获取

m_audioFormat.setSampleRate(8000);
m_audioFormat.setChannelCount(1);
m_audioFormat.setSampleSize(8);
m_audioFormat.setCodec("audio/pcm");
m_audioFormat.setByteOrder(QAudioFormat::LittleEndian);
m_audioFormat.setSampleType(QAudioFormat::UnSignedInt);

3.子类化QIODevice,并将该子类作为QAudioInput的Start方法的参数
这样只需重写QIODevice中的writeData函数,就能很方便的获取到麦克风输入的音频数据
qint64 writeData(const char *data, qint64 maxSize) override;
参数解释如下:
Writes up to maxSize bytes from data t

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

使用 FFTW3/QWT 绘制频谱需要哪个框架

频谱显示的 SDR 问题

FFT 频谱未正确显示

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

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

H5录音音频可视化-实时波形频谱绘制频率直方图