
Live Audio Intelligence
io.github.ykshah1309由 GitHub 账号 ykshah1309 发布v0.1.3更新于 Oct 24, 2026
Live webcast transcription + vocal stress analysis (F0 jitter, hesitation) for earnings calls.
概览
实时转写财经直播音频,并给出说话人语音压力的启发式评分。
- 可以做什么
- 解析直播网址,用 ffmpeg 抓取音频,并通过 faster-whisper 在 CPU 上分块滚动转写。提供四个工具:monitor_live_stream 启动监听并返回 stream_id,get_rolling_transcript 获取最近若干分钟的转写文本,analyze_speaker_stress 返回 0-100 的压力评分以及音高抖动、犹豫比例和停顿统计,stop_monitor 结束监听并清理。压力评分是若干韵律特征的手工加权组合,文档明确说明其为启发式,未经过市场结果验证。
- 适用场景
- 适合需要实时转写财报电话会、投资者日或财经新闻直播,并粗略判断说话人紧张程度的场景。分析师可以在同一对话中既询问刚说了什么,也询问说话时的语气状态。
- 运行要求
- 以 stdio 方式在本地运行;需要 Python 3.10 或更高版本,可从 PyPI 安装或用 uvx 运行。FFmpeg 必须作为系统二进制单独安装并加入 PATH。首次运行会从 Hugging Face 下载 faster-whisper base.en 模型(约 140 MB),需要网络访问。可选环境变量 LAI_MAX_CONCURRENT_STREAMS 可提高默认 4 路并发上限。
安装
在 SourceWeft 中
- 打开 控制台中的 Live Audio Intelligence,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
live-audio-intelligence-mcp
MCP server for live financial webcast transcription and heuristic vocal stress analysis.
Turns any live webcast URL (earnings calls, CNBC, investor days) into a real-time pipeline that feeds an LLM two things simultaneously:
- A rolling transcript via
faster-whisper(CPU, int8). - A heuristic vocal stress score (0–100) derived from F0 pitch jitter, hesitation ratio, and voiced-frame fraction. These prosodic features are well-established correlates of speaker arousal in the vocal-analysis literature; their composition into the score below is heuristic and has not been empirically validated against market outcomes. Treat it as a coarse signal, not an oracle.
Built on the Model Context Protocol. Exposes 4 tools over stdio; drop it into Claude Desktop, Claude Code, or any MCP client.
Why this exists
Sell-side analysts and hedge-fund PMs don't just want to read the earnings transcript after the fact — they want a real-time signal about how confident the CFO sounds when asked about Q4 guidance. This server wires a Whisper pipeline and a pYIN-based prosody analyzer directly into an LLM's tool loop, so the model can ask "what did the CEO just say about China?" and "how stressed did they sound saying it?" in the same conversation.
Install
1. System prerequisite — FFmpeg
FFmpeg is a system binary, not a Python package. The ffmpeg-python
wrapper is not a dependency here — we drive the binary directly via
subprocess. You must install it yourself.
macOS (Homebrew):
Linux (Debian / Ubuntu):
Linux (Fedora / RHEL):
Windows — choose one:
Confirm it's on your PATH:
If the command errors with "not found", reopen the terminal (PATH changes
don't propagate to already-open shells) or add the ffmpeg bin/ directory
to your PATH manually.
2. Python package
Requires Python ≥ 3.10.
Or run directly without installing with uv:
The first run will download the faster-whisper base.en model (~140 MB) from
Hugging Face and cache it under ~/.cache/huggingface/.
Run it
Stdio MCP server:
Or equivalently:
Claude Desktop
Add to claude_desktop_config.json:
Claude Code
Tools
The stress score
Composite of:
- Pitch jitter (coefficient of variation of F0) — 50% weight, saturating at jitter = 0.12
- Hesitation ratio (fraction of audio in pauses > 400 ms) — 35% weight, saturating at 0.30
- Unvoiced fraction (speaker trailing off) — 15% weight
The three features are literature-backed correlates of speaker arousal (see pYIN for F0 tracking, and the broad "disfluency is a correlate of cognitive load" line of work). The weights and saturation points are hand-picked defaults, chosen so that a calm speaker scores in the 0–20 band on clean studio audio and visibly stressed speech scores ≥ 45 — they are not fit to any labeled dataset. Consumers who care about absolute numbers should recalibrate thresholds against their own recordings.
A synthetic-audio calibration harness lives at scripts/validate_stress_score.py. It generates controlled audio (smooth sine, jittered pitch, silence-padded speech) and asserts that the score responds in the expected direction. This is calibration evidence, not market-outcome validation.
Low-SNR mode
For speakerphone audio (most earnings Q&A), pass disable_vad=true to
monitor_live_stream. Silero VAD tends to aggressively classify muddy
conference-call speech as silence; disabling it preserves more of the speech
at the cost of transcribing a bit more ambient noise.
Concurrency limits
By default the server caps concurrent streams at 4 (each stream holds an ffmpeg subprocess, a yt-dlp subprocess, a thread, and a temp directory). Override via env var for high-throughput deployments:
Exceeding the cap raises StreamLimitExceededError rather than silently
queuing.
Architecture
All blocking work (Whisper inference, ffmpeg I/O, librosa DSP) is dispatched
to threads via asyncio.to_thread so the MCP event loop stays responsive.
Development
Running the tests
The pytest suite in tests/ covers the pure-Python logic that doesn't require network or ffmpeg:
- URL syntactic validation (scheme allow-list, host presence)
- Concurrency-cap enforcement in
StreamManager - Custom exception hierarchy (backward-compat with
ValueError/RuntimeError) - Prosody analyzer on synthetic audio (sine tone, silence, jittered pitch)
Calibration benchmark
This generates synthetic audio with known acoustic properties and verifies the stress score responds in the expected direction. It's a sanity check for the weighting heuristics — not a replacement for empirical validation against real earnings-call outcomes.
Troubleshooting
ffmpeg: command not found — ffmpeg isn't on PATH. See the install
section above. On Windows, reopen your terminal after installing.
yt-dlp could not resolve URL — The site isn't supported by yt-dlp
or the URL is malformed. Test with yt-dlp -F <url> from the command
line; if that fails, the server will too.
Whisper downloads hang on first run — The ~140 MB model download goes
to ~/.cache/huggingface/. Check your network and Hugging Face access.
"Insufficient voiced frames" in stress output — The audio window is
mostly silence or noise. Usually means the stream is still buffering;
wait 30s and retry. For speakerphone Q&A, start the monitor with
disable_vad=true.
Contributing
See CONTRIBUTING.md.
Changelog
See CHANGELOG.md.
License
MIT — see LICENSE.
来源:README.md,提交 71f03a3
工具
0版本历史
1- v0.1.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分