🎙️ whisper-telegram-mcp
轉錄與語音合成 —— 通過 Telegram 為 Claude 提供雙向語音能力

一個 MCP 服務器,通過 Telegram 賦予 Claude 雙向語音能力:使用 Whisper 轉錄接收到的語音消息,並以合成語音進行回覆。兼容 Claude Desktop、Claude Code 以及任何支持 MCP 的客戶端。
🚀 快速開始
⚡ 使用 Claude Code 在 30 秒內完成配置
這是最快的上手方式 —— 只需告訴 Claude Code 幫你配置即可:
- 添加到
.mcp.json(Claude Code)或 claude_desktop_config.json(Claude Desktop):
{
"mcpServers": {
"whisper-telegram-mcp": {
"command": "uvx",
"args": ["whisper-telegram-mcp"],
"env": {
"TELEGRAM_BOT_TOKEN": "your-bot-token-here"
}
}
}
}
- 重啟 Claude 並說:"Set up my Telegram bot for voice transcription" —— Claude 會引導你通過 BotFather 創建機器人並完成全部配置。
📦 使用 uvx 一鍵運行
uvx whisper-telegram-mcp
無需安裝 —— uvx 會處理一切。
🐍 或使用 pip 安裝
pip install "whisper-telegram-mcp[all]"
whisper-telegram-mcp
✨ 主要特性
- 轉錄本地音頻文件 —— 支持 OGG、WAV、MP3、FLAC 等多種格式
- 轉錄 Telegram 語音消息 —— 傳入
file_id,返回文本
- 將文本合成為語音消息 —— 合成語音並以 OGG 格式返回(在 Telegram 中顯示為原生語音消息)
- 兩種轉錄後端 —— 本地 faster-whisper(免費、隱私安全)或 OpenAI Whisper API(雲端)
- 自動模式(auto) —— 優先嚐試本地後端,失敗時回退到 OpenAI
- 語言檢測 —— 自動檢測,或指定 ISO-639-1 語言代碼
- 詞級時間戳 —— 可選的細粒度計時
📋 前提條件
| 功能 |
要求 |
| 轉錄(本地) |
無 —— faster-whisper 已通過 [local] 附加依賴打包 |
| 轉錄(雲端) |
環境變量 OPENAI_API_KEY |
| 語音回覆 —— Kokoro(最佳音質) |
需要 Docker —— 運行 docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest |
| 語音回覆 —— OpenAI TTS(回退方案) |
環境變量 OPENAI_API_KEY |
| 語音回覆 —— macOS say(最終兜底) |
僅限 Mac,無需配置 |
⚠️ 重要提示
Kokoro 依賴 Docker。 如果 Docker 未運行,語音回覆會自動回退到 OpenAI TTS 或 macOS say。
🤖 Telegram 機器人配置
- 打開 Telegram,向 @BotFather 發送消息
- 發送
/newbot 並按照提示創建機器人
- 複製 token(形如
1234567890:ABCdef...)
- 將
TELEGRAM_BOT_TOKEN 添加到 MCP 配置的環境變量中(見下文)
- 向你的機器人發送消息即可開始 —— 它只會響應已授權的用戶
💡 使用建議
Claude Telegram 插件負責訪問控制。關於配對/白名單的設置,請參閱其官方文檔。
🔌 集成配置
Claude Desktop
添加到 Claude Desktop 配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"whisper-telegram-mcp": {
"command": "uvx",
"args": ["whisper-telegram-mcp"],
"env": {
"WHISPER_MODEL": "base",
"WHISPER_BACKEND": "auto",
"TELEGRAM_BOT_TOKEN": "your-bot-token-here"
}
}
}
}
Claude Code
添加到項目的 .mcp.json:
{
"mcpServers": {
"whisper-telegram-mcp": {
"command": "uvx",
"args": ["whisper-telegram-mcp"],
"env": {
"WHISPER_MODEL": "base",
"WHISPER_BACKEND": "auto",
"TELEGRAM_BOT_TOKEN": "your-bot-token-here"
}
}
}
}
🛠️ 工具列表
| 工具 |
說明 |
transcribe_audio |
將本地音頻文件(OGG、WAV、MP3 等)轉錄為文本 |
transcribe_telegram_voice |
通過 file_id 下載並轉錄 Telegram 語音消息 |
speak_text |
將文本轉換為語音 → OGG/Opus 文件(在 Telegram 中顯示為語音消息) |
list_models |
列出可用的 Whisper 模型大小,附帶速度/準確率信息 |
check_backends |
檢查哪些後端(local/OpenAI)可用且已配置 |
transcribe_audio
file_path: str # 音頻文件的絕對路徑
language: str | None # ISO-639-1 代碼(例如 "en"),None 表示自動檢測
word_timestamps: bool # 是否包含詞級時間戳(默認:false)
transcribe_telegram_voice
file_id: str # Telegram 語音消息的 file_id
bot_token: str | None # 機器人 token(默認回退到 TELEGRAM_BOT_TOKEN 環境變量)
language: str | None # ISO-639-1 代碼,None 表示自動檢測
word_timestamps: bool # 是否包含詞級時間戳(默認:false)
speak_text
將文本轉換為 OGG/Opus 音頻文件,會自動選擇當前可用的最佳 TTS 後端。
text: str # 要合成的文本
voice: str # 語音名稱(默認:"af_sky")
output_path: str|None # 輸出 .ogg 文件的可選路徑
🎵 TTS 後端(按優先級排序)
| 後端 |
成本 |
音質 |
配置 |
| Kokoro(本地) |
免費 |
自然、高音質 |
需手動啟動(見下文) |
| OpenAI TTS(雲端) |
約 $0.015/千字符 |
高音質 |
環境變量 OPENAI_API_KEY |
| macOS say(兜底) |
免費 |
機械音 |
僅限 Mac,無需配置 |
在 auto 模式(默認)下,服務器會依次嘗試 Kokoro、OpenAI、macOS say。可通過環境變量 TTS_BACKEND 進行配置。
🐳 在本地啟動 Kokoro
Kokoro FastAPI 並未發佈在 PyPI 上 —— 需要在啟動 MCP 服務器之前手動啟動:
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:latest
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu-mac:latest
git clone https://github.com/remsky/Kokoro-FastAPI && cd Kokoro-FastAPI && ./start-cpu.sh
啟動後,MCP 服務器會自動在 http://127.0.0.1:8880/v1 檢測到它。可通過環境變量 KOKORO_BASE_URL 覆蓋該地址。
🎤 Kokoro 語音(主要)
| 語音 |
口音 |
風格 |
af_sky |
美式 |
女聲(默認) |
af_bella |
美式 |
女聲 |
af_sarah |
美式 |
女聲 |
af_nicole |
美式 |
女聲 |
am_adam |
美式 |
男聲 |
am_michael |
美式 |
男聲 |
bf_emma |
英式 |
女聲 |
bf_isabella |
英式 |
女聲 |
bm_george |
英式 |
男聲 |
bm_lewis |
英式 |
男聲 |
🎤 OpenAI 語音(回退方案)
| 語音 |
風格 |
alloy |
中性 |
echo |
男聲 |
fable |
敘事風格 |
onyx |
低沉男聲 |
nova |
女聲 |
shimmer |
柔和女聲 |
回退時,Kokoro 的語音名稱會自動映射到最接近的 OpenAI 或 macOS 語音。
📤 返回值
{
"file_path": "/tmp/tmpXXX.ogg",
"size_bytes": 16555,
"backend": "kokoro",
"voice": "af_sky",
"success": true,
"error": null
}
將返回的 file_path 作為 Telegram 附件發送,它便會以原生語音消息的形式呈現。
📄 轉錄響應格式
所有轉錄工具均返回以下格式:
{
"text": "Hello, this is a voice message.",
"language": "en",
"language_probability": 0.98,
"duration": 3.5,
"segments": [
{"start": 0.0, "end": 3.5, "text": "Hello, this is a voice message."}
],
"backend": "local",
"success": true,
"error": null
}
⚙️ 配置項
所有配置均通過環境變量完成:
| 變量 |
默認值 |
說明 |
WHISPER_BACKEND |
auto |
auto、local 或 openai |
WHISPER_MODEL |
base |
Whisper 模型大小(見下文) |
OPENAI_API_KEY |
— |
使用 openai 轉錄和 TTS 後端時為必填 |
TELEGRAM_BOT_TOKEN |
— |
使用 transcribe_telegram_voice 時為必填 |
WHISPER_LANGUAGE |
自動檢測 |
ISO-639-1 語言代碼 |
TTS_BACKEND |
auto |
auto、kokoro、openai 或 macos |
TTS_VOICE |
af_sky |
speak_text 的默認語音(Kokoro 語音名稱) |
KOKORO_BASE_URL |
http://127.0.0.1:8880/v1 |
Kokoro FastAPI 基礎 URL |
🔧 工作原理
MCP Client (Claude)
|
[MCP stdio]
|
whisper-telegram-mcp
/ | \
/ | \
transcribe_audio transcribe_ speak_text
telegram_voice |
| | auto_tts()
| [Bot API DL] / | \
+--------+------+ Kokoro OpenAI macOS
| (local) (cloud) (say)
auto_transcribe() |
/ \ .ogg file
LocalBackend OpenAIBackend
(faster-whisper) (Whisper API)
- Claude 通過 MCP(stdio 傳輸)發送工具調用
- 對於 Telegram 語音消息,通過 Bot API 下載文件
auto_transcribe() 選擇當前可用的最佳轉錄後端
auto_tts() 選擇當前可用的最佳 TTS 後端(Kokoro → OpenAI → macOS)
- 結果以結構化 JSON 返回
⚖️ 本地方案 vs OpenAI 方案
|
本地(faster-whisper) |
OpenAI API |
| 成本 |
免費 |
$0.006/分鐘 |
| 隱私 |
所有數據保留在設備本地 |
音頻發送至 OpenAI |
| 速度 |
視模型而定,約 1-10 秒 |
約 1-3 秒 |
| 配置 |
自動(首次使用下載模型) |
需要 OPENAI_API_KEY |
| 準確率 |
使用 base 或更大模型時表現出色 |
出色 |
| 離線 |
支持 |
不支持 |
📊 模型大小
| 模型 |
參數量 |
速度 |
準確率 |
顯存 |
tiny |
39M |
最快 |
最低 |
~1GB |
base |
74M |
快 |
良好 |
~1GB |
small |
244M |
中等 |
較好 |
~2GB |
medium |
769M |
慢 |
高 |
~5GB |
large-v3 |
1550M |
最慢 |
最高 |
~10GB |
turbo |
~800M |
快 |
高 |
~6GB |
純英文變體(tiny.en、base.en、small.en、medium.en)在英文場景下準確率略高。
🔒 隱私與數據
- 本地後端(faster-whisper):音頻保留在你的設備上,任何數據都不會離開本機。
- OpenAI 後端:音頻將發送至 OpenAI API,遵循其數據保留政策
- 臨時文件:從 Telegram 下載的音頻會寫入
/tmp,並在轉錄完成後立即刪除
- 日誌:僅輸出到 stderr —— 任何音頻內容或憑據都不會被記錄到日誌
🧑💻 開發
git clone https://github.com/abid-mahdi/whisper-telegram-mcp.git
cd whisper-telegram-mcp
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v -m "not integration"
pytest tests/ -m integration -v
pytest tests/ --cov=src/whisper_telegram_mcp --cov-report=term-missing
🔍 MCP Inspector
uvx mcp dev src/whisper_telegram_mcp/server.py
🤝 貢獻指南
- Fork 本倉庫
- 創建特性分支(
git checkout -b feat/amazing-feature)
- 運行測試(
pytest tests/ -v -m "not integration")
- 使用 Conventional Commits 規範提交(
feat:、fix:、docs: 等)
- 提交 Pull Request
📄 許可證
MIT