2010-10-03 45 views
2

我想開發一個工具來做以下事情。Python + Qt組合可以生成實時頻譜分析工具嗎?

  1. 參加一個現場錄音
  2. 產生實時頻譜
  3. 顯示時域信號的頻譜分析

所有這些都提取

  • 輸出幾個值在記錄語音時保持在窗口中更新。

    我已經與numpy合作過。但我對Qt和其他GUI構建工具完全陌生。鑑於這種情況,最好的方法是什麼?在我向他們解釋任務後,我的同事們推薦Qt。如果有人知道一個更好的工具可用於Python的這項任務,請讓我知道。另外,請幫助我瞭解如何捕獲實時流並使用python進行處理,該python將在GUI窗口中顯示。一個給我一些希望的鏈接是http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python-scipy-and-wckgraph/。但要理解它有點困難。可能是一個不太密集的解決方案將幫助我入門。

  • +0

    音頻是相當平臺特定的。你在做什麼操作系統? – 2010-10-03 12:09:05

    +0

    Windows 7和Linux(Ubuntu 10.04),我已經在兩臺機器上準備好了安裝程序。 – gopalkoduri 2010-10-03 12:15:27

    回答

    2

    在Qt 4.6中,添加了QAudioInput API。這提供了獲取音頻輸入信號的跨平臺抽象,因此可用於實現第(1)點。

    至於(2)和(3),附帶Qt的Spectrum Analyzer demo可能是感興趣的。

    Screenshot of Spectrum Analyzer demo running on Symbian http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

    的實施是在C++中,而不是在Python,但也可以是使用作爲基準的。基本上你需要(2)的是計算輸入信號的快速傅立葉變換。 (3),這在概念上相當簡單,但需要一個函數來實現,而不需要編寫自己的代碼 - 這就是我在編寫演示時所採用的方法:)

    至於(3)一點思想,以獲得一個平穩的滾動波形。查看演示中波形類中使用的平鋪方法,瞭解一些提示。

    我認爲(4)您的意思是:將FFT輸出中的大量點減少爲少量值。這是演示爲繪製頻譜柱狀圖所做的工作。再次參考演示代碼,瞭解如何實現頻率振幅的合併。

    +0

    謝謝!這幾乎是我正在尋找的東西。 – gopalkoduri 2010-10-04 10:56:42

    1

    在Linux上,這絕對是可行的。其他平臺,但我真的只能回答Linux。 Python不一定是實時DSP的最尖端工具,但是在適當的現代化機器上並且適度適度的目標,您將會很好。

    首先,您需要Linux音頻驅動程序的接口。 ALSA非常普遍。對於ALSA庫有幾種不同的Python包裝器,請參閱Python In Music以獲取使用它們的庫和應用程序的列表。

    然後你做你的光譜分析。 SciPyNumPy都有。

    然後你畫到你的Qt窗口。我的專長是GTK,但您可能想要創建一個QtCanvas (tutorial),這是一個面向對象的繪圖區域,專爲此類用途而設計。

    或者您可以使用SciPy,它可能會被說服做到這一切!特別是看起來可能是一個很大的幫助。

    +0

    謝謝Bill Gribble!我會牢記這些。 – gopalkoduri 2010-10-03 15:10:27

    2

    Another example的一個實時音頻頻譜分析儀使用PyAudio,scipy,查科在一個腳本中可以找到Chaco的例子列表。 (在我的Precise上開箱即用)。

    Screenshot

    相關問題