デモ+概要
Python のPyAudio と matplotlib を使って、PC上で流れている音をリアルタイムで表示・分析できるスペクトルアナライザを作りました。以下の実装では VB-Audio社の仮想ミキサ "Voice Meeter" 向けの設定となっていますが、PortAudio 対応かつループバック録音できる環境なら多少変更すれば動くと思います。
描画としては matplotlib を使っています。PyQtGraph を使うか迷いましたが、FuncAnimationを使えば自分の環境では特に描画に支障は出なかったので matplotlib を採用しました。
スペクトルアナライザに表示されているオーディオ信号はNumpyの配列にできるので、機械学習やディープラーニングのデータ収集等にも使えるかもしれません。
実装の要点
ループバック録音
PC上の音を取得するためには、再生中の音を入力用として引っ張ってくる必要があります。イメージとしては、PCの音声出力をPCの音声入力に繋げる感じです。これをループバック録音といい、身近な例だとゲーム実況やデスクトップ操作の配信時に、操作時に流れている音を配信するために使われます。
仮想ミキサー
VB-Audio社の仮想ミキサ "Voice Meeter" を使いました。
A1、A2にスピーカー・ヘッドホンへの出力と、VB-Audio Point (Virtual Input) を設定します。そうすると、PyAudioのインプットストリーム用のデバイスとして VoiceMeeter Output を設定すれば、PC上の音をインプットストリームとして取得できる状態になります。

matplotlib
FuncAnimationを使います。大事なのは、Brit=True にし、描画をなるべく高速化します。
qiita.com
PyAudio
仮想ミキサー出力 (VoiceMeeter Output) をインプットストリームとしました。
