aiXander/Realtime_PyAudio_FFT

Realtime audio analysis in Python to extract audio features from streaming audio and send them over OSC to any client app.

解決する課題

このプロジェクトは、ライブオーディオ入力(マイクやサウンドカードなど)とクリエイティブなアプリケーションとの間の低遅延なブリッジを提供します。ビートトリガー、周波数帯域、テンポといった「すぐに使える」処理済みオーディオデータを、VJソフトウェア、ゲームエンジン、カスタムスクリプトなどのツールに、複雑な信号処理コードを記述することなく取り込めるようにします。

仕組み

サーバーは生のオーディオをキャプチャし、NumPyとSciPyを使用して最適化されたワーカースレッドで、フィルタリング、FFT解析、オンセット検出といった負荷の高い信号処理をすべて実行します。その後、以下の2つの方法でデータをブロードキャストします。

  • OSC (Open Sound Control): リアルタイムパフォーマンスツール向けの高速・低遅延ストリーム。
  • WebSockets: ブラウザベースのUIから設定(帯域幅や感度など)を制御しながら、データ更新を受信できる双方向チャネル。

対象ユーザー

ビジュアルやゲームロジックをライブオーディオに同期させる必要があるクリエイティブコーダー、VJ、開発者向けに設計されています。Raspberry Piのような低電力ハードウェア上でも高速に動作する「プラグアンドプレイ」のオーディオ特徴量ソースを求めるTouchDesigner、Max/MSP、Unity、またはp5.jsのユーザーに最適です。

ハイライト

  • 低遅延: エンドツーエンドで8〜15msの遅延を目標としています。
  • すぐに使える特徴量: 自動スケーリングされた帯域エネルギー(低/中/高)、キック/スネア/ハイハット用のオンセットトリガー、および計算されたBPMを出力します。
  • ブラウザベースの制御: フィルターの調整、プリセットの保存、設定の切り替えをリアルタイムで行えるUIが含まれています。
  • 効率的: アロケーションフリーのコールバックとベクトル化されたC最適化パスを使用し、高負荷時でもオーディオストリームの安定性を維持します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト