Live Audio Intelligence について
Live Audio Intelligenceは、決算説明会などを監視する分析担当者向けの、ライブ配信の文字起こしと音声ストレス分析を行うMCP サーバーです。音高の揺れなどに基づくスコアはヒューリスティックで、市場結果との関連は検証されていません。
主な機能
- 01ライブ配信音声の文字起こし
- 02音高の揺れとポーズの分析
- 03ヒューリスティックな音声ストレススコア
- 04時間範囲を指定した逐次文字起こしの取得
- 05音声ストリームの管理と停止
活用シーン
- 01決算説明会の発言をリアルタイムで確認
- 02業績見通しに関する直近の発言を確認
- 03話者の音声ストレスの変化を観察
MCP 対応
MCP サーバーとしてstdio経由で4つのツールを公開し、配信監視、文字起こし取得、音声分析、ストリーム停止を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
live-audio-intelligence-mcp
ライブ配信される金融ウェブキャストの文字起こしと、ヒューリスティックな声のストレス分析を行う MCP サーバーです。
ライブ配信のウェブキャスト URL(決算説明会、CNBC、投資家向け説明会など)を、次の 2 つを同時に LLM に渡すリアルタイムパイプラインに変換します。
faster-whisperによるローリング文字起こし(CPU、int8)。- 基本周波数(F0)のピッチジッター、ためらいの割合、有声音フレームの割合から算出されるヒューリスティックな声のストレススコア(0~100)。これらの韻律特徴量は、声の分析に関する研究において、話者の覚醒度との相関が広く確認されています。以下のスコアへの組み合わせはヒューリスティックなものであり、市場の結果に対する実証的な検証は行われていません。絶対的な指標ではなく、大まかなシグナルとして扱ってください。
Model Context Protocol 上に構築されています。stdio 経由で 4 つのツールを公開します。Claude Desktop、Claude Code、または任意の MCP クライアントに追加して使用できます。
このプロジェクトの目的
セルサイドアナリストやヘッジファンドのポートフォリオマネージャーが知りたいのは、決算説明会の文字起こしを後から読むことだけではありません。Q4 の業績見通しについて質問されたとき、CFO の声にどれだけ自信が感じられるかをリアルタイムで把握したいのです。このサーバーは Whisper パイプラインと pYIN ベースの韻律アナライザーを LLM のツールループに直接組み込み、モデルが同じ会話の中で 「CEO はたった今、中国について何と言いましたか?」 と 「それを話すとき、どれくらい緊張しているように聞こえましたか?」 の両方を尋ねられるようにします。
インストール
1. システム要件 — FFmpeg
FFmpeg はシステムバイナリであり、Python パッケージではありません。ffmpeg-python
ラッパーはこのプロジェクトの依存関係ではなく、subprocess 経由でバイナリを直接実行します。FFmpeg はご自身でインストールしてください。
macOS(Homebrew):
brew install ffmpeg
Linux(Debian / Ubuntu):
sudo apt-get update && sudo apt-get install -y ffmpeg
Linux(Fedora / RHEL):
sudo dnf install -y ffmpeg
Windows — 次のいずれかを選択してください。
# Option A — winget (Windows 10/11)
winget install --id=Gyan.FFmpeg -e
# Option B — Chocolatey
choco install ffmpeg
# Option C — Scoop
scoop install ffmpeg
PATH に含まれていることを確認します。
ffmpeg -version
コマンドで「not found」エラーが表示された場合は、ターミナルを開き直す(PATH の変更は、すでに開いているシェルには反映されません)か、ffmpeg の bin/ ディレクトリを手動で PATH に追加してください。
2. Python パッケージ
Python ≥ 3.10 が必要です。
pip install live-audio-intelligence-mcp
または、uv を使ってインストールせずに直接実行できます。
uvx live-audio-intelligence-mcp
初回実行時に、faster-whisper base.en モデル(約 140 MB)が Hugging Face からダウンロードされ、~/.cache/huggingface/ にキャッシュされます。
実行方法
stdio MCP サーバー:
live-audio-intelligence-mcp
または、同等の方法として:
python -m live_audio_intelligence_mcp
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"live-audio-intelligence": {
"command": "live-audio-intelligence-mcp"
}
}
}
Claude Code
claude mcp add live-audio-intelligence -- live-audio-intelligence-mcp
ツール
| ツール | 目的 |
|---|---|
monitor_live_stream(url, disable_vad=False) | 音声 URL を解決し、ffmpeg を起動して、チャンク分割と文字起こしを開始します。stream_id を返します。 |
get_rolling_transcript(stream_id, minutes_back=10) | 連結された文字起こしテキストの直近 N 分間の内容を取得します。 |
analyze_speaker_stress(stream_id, time_window_seconds=60) | 直近 N 秒間の音声に対して韻律分析を実行します。ストレススコア、ピッチジッター、ためらいの割合、ポーズの統計情報、人が読める形式の解釈を返します。 |
stop_monitor(stream_id) | ffmpeg を終了し、一時ファイルをクリーンアップして、文字起こしバッファを破棄します。 |
ストレススコア
| スコア | 解釈 |
|---|---|
| 0–20 | 自信に満ちた流暢な話し方 |
| 20–45 | 通常の変動 |
| 45–75 | ストレスの上昇 — モニタリングする価値があります |
| 75–100 | 高いストレス — 市場を動かす可能性のあるシグナル |
以下の要素を組み合わせています。
- ピッチジッター(F0 の変動係数)— 重み 50%、ジッター = 0.12 で飽和
- ためらい率(400 ms を超える休止が音声に占める割合)— 重み 35%、0.30 で飽和
- 無声音の割合(話者が語尾を弱める)— 重み 15%
これら3つの特徴は、話者の覚醒度と関連することが文献で裏付けられています(F0 の追跡には pYIN を参照。「非流暢さは認知負荷の相関要因」という幅広い研究分野も参照してください)。重みと飽和点は、落ち着いた話者がきれいなスタジオ音声で 0~20 の範囲に収まり、目に見えてストレスを感じている話し方が 45 以上になるように選んだ手動設定のデフォルト値であり、ラベル付きデータセットに適合させたものではありません。絶対値を重視する利用者は、自身の録音に基づいてしきい値を再調整してください。
合成音声のキャリブレーション用ハーネスは scripts/validate_stress_score.py にあります。 制御された音声(滑らかな正弦波、ピッチにジッターを加えた音声、無音を挿入した音声)を生成し、スコアが想定した方向に反応することを検証します。これはキャリブレーションの根拠であり、市場の結果を検証するものではありません。
低 SNR モード
スピーカーフォンの音声(決算説明会の質疑応答の多く)では、
monitor_live_stream に disable_vad=true を渡してください。Silero VAD は、音質の悪い電話会議の音声を積極的に無音と判定する傾向があります。これを無効にすると、周囲の雑音も多少多く文字起こしされますが、音声をより多く保持できます。
同時実行数の上限
デフォルトでは、サーバーは同時ストリーム数を 4 に制限します(各ストリームは ffmpeg のサブプロセス、yt-dlp のサブプロセス、スレッド、一時ディレクトリを使用します)。 高スループットのデプロイでは、環境変数で上書きできます。
LAI_MAX_CONCURRENT_STREAMS=16 live-audio-intelligence-mcp
上限を超えると、キューに入れて処理するのではなく StreamLimitExceededError が発生します。
アーキテクチャ
┌──────────────────┐
URL ─────▶ │ yt-dlp resolve │
└────────┬─────────┘
│ audio URL
▼
┌──────────────────┐ ┌────────────────┐
│ ffmpeg (bg) │ ───▶ │ 15s WAV chunk │
│ 16kHz mono PCM │ │ queue │
└──────────────────┘ └───────┬────────┘
│
┌──────────────────┴────────────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ faster-whisper │ │ librosa.pyin │
│ (int8 / CPU) │ │ + pause detect │
└────────┬─────────┘ └────────┬─────────┘
│ rolling transcript │ stress score
▼ ▼
┌────────────── MCP stdio ───────────────┐
│ LLM (Claude) — calls tools freely │
└────────────────────────────────────────┘
MCP のイベントループが応答性を保てるよう、ブロッキング処理(Whisper の推論、ffmpeg の I/O、librosa の DSP)はすべて asyncio.to_thread を使ってスレッドにディスパッチされます。
開発
git clone https://github.com/ykshah1309/live-audio-intelligence-mcp
cd live-audio-intelligence-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest
live-audio-intelligence-mcp
テストの実行
tests/ にある pytest スイートでは、ネットワークや ffmpeg を必要としない純粋な Python ロジックを対象にしています。
- URL の構文検証(スキームの許可リスト、ホストの有無)
StreamManagerにおける同時実行数の上限の適用- カスタム例外の階層(
ValueError/RuntimeErrorとの後方互換性) - 合成音声(正弦波、無音、ピッチにジッターを加えた音声)を使った韻律分析
pytest -q
キャリブレーションベンチマーク
python scripts/validate_stress_score.py
既知の音響特性を持つ合成音声を生成し、ストレススコアが想定した方向に反応することを検証します。これは重み付けのヒューリスティクスに対する妥当性確認であり、実際の決算説明会の結果を用いた実証検証の代わりにはなりません。
トラブルシューティング
ffmpeg: command not found — ffmpeg が PATH にありません。上記のインストールセクションを参照してください。Windows では、インストール後にターミナルを開き直してください。
yt-dlp could not resolve URL — サイトが yt-dlp に対応していないか、URL の形式に誤りがあります。コマンドラインから yt-dlp -F <url> を実行して確認してください。これに失敗する場合、サーバーでも失敗します。
初回実行時に Whisper のダウンロードが停止する — 約 140 MB のモデルは ~/.cache/huggingface/ にダウンロードされます。ネットワークと Hugging Face へのアクセスを確認してください。
ストレス出力における「Insufficient voiced frames」 — 音声ウィンドウの大半が無音または雑音です。通常はストリームがまだバッファリング中であることを意味します。30 秒待ってから再試行してください。スピーカーフォンでの質疑応答では、disable_vad=true を指定してモニターを起動してください。
貢献
CONTRIBUTING.md を参照してください。
変更履歴
CHANGELOG.md を参照してください。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。