telegram-offline-voice 是一个在本地生成 Telegram 语音消息的技能,核心特点是无需 API Token,完全离线处理。它使用 Microsoft Edge-TTS 生成高质量中文语音,再通过 FFmpeg 转换为符合 Telegram 语音气泡标准的格式。
用途
该技能用于把文本转换为可直接在 Telegram 中作为语音气泡发送的音频文件。由于不依赖 OpenAI、Google、Azure 等云服务的 Token,适合希望避免申请 API Key、控制成本或在本地完成语音生成的场景。
主要能力
- 完全本地:无需任何云服务 Token。
- 零成本:Edge-TTS 免费使用,无调用限制。
- 高质量声线:默认使用微软晓晓(zh-CN-XiaoxiaoNeural)。
- Telegram 原生支持:输出格式符合语音气泡标准。
- 支持语速调节,例如加速 5% 或减速 10%。
- 支持查看并选择多种中文声线。
安装依赖
Edge-TTS:
pip install edge-tts
FFmpeg(Debian/Ubuntu):
apt install ffmpeg
使用方式
第一步,生成原始音频:
edge-tts --voice zh-CN-XiaoxiaoNeural --rate=+5% --text "你好,这是测试" --write-media raw.mp3
第二步,转换为 Telegram 语音格式:
ffmpeg -y -i raw.mp3 -c:a libopus -b:a 48k -ac 1 -ar 48000 -application voip voice.ogg
文本格式清洗
生成语音前需清洗文本,避免朗读出标记符号。需移除的内容包括:Markdown 标记(如 加粗、代码、# 标题)、URL 链接(如 https://example.com)、特殊符号(如 ---、***、>>>)。
清洗示例:
# 简单清洗(去除常见 Markdown)
TEXT=$(echo "$RAW_TEXT" | sed 's/\*\*//g; s/`//g; s/^#\+ //g')
Telegram 语音气泡格式
Telegram 要求语音消息使用 OGG Opus 格式,否则会显示为文件而非语音气泡:
ffmpeg -i input.mp3 -c:a libopus -b:a 48k -ac 1 -ar 48000 -application voip output.ogg
参数说明:
- -c:a:libopus,Telegram 要求的编码器。
- -b:a:48k,音频比特率。
- -ac:1,单声道(语音标准)。
- -ar:48000,采样率 48kHz。
- -application:voip,针对语音优化。
可用声线
查看所有中文声线:
edge-tts --list-voices | grep zh-CN
推荐声线:
- zh-CN-XiaoxiaoNeural — 女声,自然亲和(默认)。
- zh-CN-YunxiNeural — 男声,沉稳专业。
- zh-CN-XiaoyiNeural — 女声,活泼年轻。
语速调节
# 加速 5%
edge-tts --rate=+5% --text "..." --write-media out.mp3
# 减速 10%
edge-tts --rate=-10% --text "..." --write-media out.mp3
适用场景
适合需要在 Telegram 中发送中文语音消息、又希望避免使用云服务 Token 的用户。可用于本地批量生成语音、控制语速与声线,以及将文本内容转为语音气泡发送。
限制
资料未提供除 Edge-TTS 与 FFmpeg 之外的其他依赖要求,也未说明支持的操作系统范围、并发或批量处理能力、音频时长上限等信息。使用前需自行完成文本清洗,否则可能朗读出 Markdown 标记、URL 或特殊符号。语音气泡效果依赖输出为 OGG Opus 格式,格式不符时会显示为文件而非语音气泡。