2

我想开发一个工具来做以下事情。

  1. 进行现场录音
  2. 生成实时频谱图
  3. 显示时域信号
  4. 输出从光谱分析中提取的几个值

在录制语音时,所有这些都必须在窗口中保持更新。

我和 numpy 一起工作过。但我对 Qt 和其他 GUI 构建器工具完全陌生。鉴于这种情况,最好的方法是什么?在我向他们解释任务后,我的同事推荐了 Qt。如果有人知道用于此任务的 python 更好的工具,请告诉我。另外,请帮助我提供有关如何捕获实时流并在 python 中处理它的技术细节,这将显示在 GUI 窗口中。给我一些希望的链接是http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python- scipy 和 wckgraph/。但是有点难以理解。可能是一个不太密集的解决方案将帮助我入门。

4

3 回答 3

2

在 Qt 4.6 中,添加了 QAudioInput API。这为获取音频输入信号提供了跨平台抽象,因此可用于实现第 (1) 点。

至于(2)和(3),Qt 附带 的Spectrum Analyzer 演示可能会很有趣。

在 Symbian 上运行的频谱分析仪演示的屏幕截图 http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

该实现是用 C++ 而不是 Python 实现的,但它可以用作参考。基本上,您需要 (2) 计算输入信号的快速傅立叶变换。您可能希望使用提供 FFT 实现的库,而不是自己编写 - 这是我在编写演示时采用的方法 :)

至于(3),这在概念上非常简单,但需要一些思考才能获得平滑滚动的波形。查看演示中 Waveform 类中使用的平铺方法以获取一些提示。

我认为(4)你的意思是:将FFT输出中的大量点减少到少量值。这就是演示为绘制频谱条形图所做的工作。同样,请参阅演示代码以了解如何实现频率幅度的合并。

于 2010-10-04T06:16:35.237 回答
2

在一个脚本中使用 PyAudio、scipy、Chaco 的实时音频频谱分析仪的另一个示例可以在 Chaco 的示例列表中找到。(在我的 Precise 上开箱即用)。

截屏

于 2013-05-22T23:31:59.403 回答
1

在 Linux 上,这绝对是可行的。其他平台也是如此,但我真的只能回答 Linux。Python 不一定是实时 DSP 最锋利的工具,但在适当现代的机器和适当适度的目标上,你会没事的。

首先,您需要一个 Linux 音频驱动程序的接口。ALSA 非常普遍。ALSA 库有几个不同的 Python 包装器,请参阅Python In Music以获取使用它们的库和应用程序的列表。

然后你做你的光谱分析。SciPyNumPy拥有这一切。

然后你画到你的 Qt 窗口。我的专长是 GTK,但您可能想创建一个 QtCanvas (教程),这是一个面向对象的绘图区域,专为这种用途而设计。

或者你可以只使用 SciPy,它可能会被说服去做所有这些!尤其是AudioLab,它看起来可能会有很大帮助。

于 2010-10-03T12:40:49.510 回答