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实现音频频谱(实现)的主要内容,如果未能解决你的问题,请参考以下文章