2

以下のことを行うツールを開発したいと考えています。

  1. 生の音声録音を取り込む
  2. リアルタイム スペクトログラムを作成する
  3. 時間領域信号を表示
  4. スペクトル分析から抽出されたいくつかの値を出力します

これらはすべて、音声が録音されるときにウィンドウで更新し続ける必要があります。

私はnumpyで働いてきました。しかし、私は Qt やその他の GUI ビルダー ツールはまったく初めてです。この状況を考えると、どのように進めるのが最善でしょうか? タスクについて説明した後、同僚は Qt を勧めてくれました。このタスクのために Python で使用するためのより良いツールを誰かが知っていたら、私に知らせてください。また、ライブ ストリームをキャプチャし、GUI ウィンドウに表示される Python で処理する方法に関する技術的な詳細を教えてください。希望を与えてくれたリンクの 1 つは、http: //www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python- です。 scipy-and-wckgraph/ . しかし、それを理解するのは少し難しいです。それほど集中的でない解決策が、私が始めるのに役立つかもしれません。

4

3 に答える 3

2

Qt 4.6 では、QAudioInput API が追加されました。これにより、オーディオ入力信号を取得するためのクロスプラットフォームの抽象化が提供されるため、ポイント (1) を達成するのに役立ちます。

(2) と (3) に関しては、Qt に同梱されて いるSpectrum Analyzer のデモが興味深いかもしれません。

Symbian で実行されている Spectrum Analyzer デモのスクリーンショット http://labs.trolltech.com/blogs/wp-content/uploads/2010/05/spectrum.png

実装は Python ではなく C++ ですが、参考になるかもしれません。基本的に (2) に必要なのは、入力信号の高速フーリエ変換を計算することです。おそらく、FFT 実装を独自に作成するのではなく、FFT 実装を提供するライブラリを使用することをお勧めします。それが、私がデモを作成するときに取ったアプローチです :)

(3) に関しては、これは概念的には非常に単純ですが、スムーズにスクロールする波形を得るには少し考える必要があります。いくつかのヒントについては、デモの Waveform クラスで使用されているタイリング アプローチをご覧ください。

(4)の意味は、FFT出力の多数のポイントを少数の値に減らすことだと思います。これは、スペクトルの棒グラフをプロットするためにデモが行うことです。繰り返しになりますが、デモ コードを参照して、周波数振幅のビニングがどのように実装されているかを確認してください。

于 2010-10-04T06:16:35.237 に答える
2

1つのスクリプトで 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 に答える