Install
openclaw skills install text-to-audio使用 edge-tts 将中文或英文文本转为自然语音 MP3。此 Skill 应在以下场景触发: 将图片或文本转成语音、朗读课文或作文、中文文字转语音、英文文字转语音、 TTS 文本朗读、生成音频 MP3、给文章配音、语音合成、 朗读故事、课文朗读、作文朗读、文字转 MP3、英文朗读。 支持晓晓等多款中文 Neural 语音,支持 Jenny 等英文 Neural 语音,支持语速调整和语音选择。
openclaw skills install text-to-audio将中文或英文文本转为自然语音 MP3 文件,使用微软 Edge TTS 在线服务,声音自然、文件小巧、跨设备通用。
pip install edge-tts)首次使用此 Skill 时,运行环境检测脚本确认依赖是否就绪:
python scripts/check_env.py
该脚本会自动检测并安装缺失的依赖。如果网络不通,提示用户开启 VPN 后重试。
保存文本后,必须先检测文本语言,以决定展示中文还是英文语音选项。
检测方法:如果文本中英文字母(a-zA-Z)占比超过 60%,判定为英文;否则判定为中文。
在生成 MP3 之前,必须先让用户选择语音和语速。 使用 ask_followup_question 工具向用户展示选项,不要自行假设。
如果检测为中文,展示中文语音选项:
问题:请选择朗读语音
选项:
- 晓晓(温暖女声,适合课文/故事朗读)
- 小艺(活泼女声,适合儿童故事)
- 云希(阳光男声,适合叙事/科普)
- 云健(激情男声,适合朗诵)
- 云扬(专业男声,适合新闻/说明文)
如果检测为英文,展示英文语音选项:
问题:请选择朗读语音
选项:
- Jenny(温暖女声,适合朗读/故事,推荐)
- Aria(自信女声,适合新闻/叙述)
- Emma(活泼女声,适合对话/讲解)
- Guy(激情男声,适合朗诵/叙事)
- Christopher(权威男声,适合新闻/分析)
- Michelle(亲切女声,适合日常叙述)
语速使用 三选一 + 数字输入 形式,让用户填写具体百分比:
问题:请选择朗读语速(在方括号中填写数字,0 为正常语速,负数更慢,正数更快)
选项:
- A 略慢 [ ]%(推荐填 10,即 -10%)
- B 正常语速
- C 略快 [ ]%(推荐填 10,即 +10%)
用户选择 A 或 C 时,解析其填写的数字作为 rate 值:
--rate -10--rate +0--rate +10如果用户没有填写数字,使用推荐默认值(A 为 -10,C 为 +10)。
如果用户在对话中已经明确指定了语音或语速(如"用晓晓的声音"、"读慢一点"),则直接使用用户的选择,无需再次询问。
.txt 文件(UTF-8 编码)scripts/tts_generate.py 生成 MP3 文件.txt 文件--batch 参数python scripts/tts_generate.py <文本文件> [选项]
| 参数 | 说明 | 默认值 |
|---|---|---|
--output, -o | 输出 MP3 文件路径 | <输入名>_<语音别名>.mp3 |
--voice, -v | 语音别名或完整 ID | xiaoxiao(中文)/ jenny(英文) |
--rate, -r | 语速调整 | +0% |
--batch, -b | 批量模式,传入 JSON 配置文件 | — |
# 中文默认(晓晓女声,正常语速)
python scripts/tts_generate.py story.txt
# 中文活泼女声 + 略慢语速(适合小学课文朗读)
python scripts/tts_generate.py story.txt --voice xiaoyi --rate -10
# 英文默认(Jenny女声,正常语速)
python scripts/tts_generate.py english.txt --voice jenny
# 英文男声 + 略慢语速
python scripts/tts_generate.py english.txt --voice guy --rate -10
# 指定输出文件名
python scripts/tts_generate.py story.txt -o my_story.mp3
# 批量模式
python scripts/tts_generate.py --batch batch_config.json
{
"defaults": { "voice": "xiaoxiao", "rate": "-10%" },
"files": [
{ "input": "story.txt", "output": "story.mp3" },
{ "input": "essay.txt", "output": "essay.mp3", "voice": "xiaoyi" }
]
}
| 用户选择 | 别名(脚本参数) | 性别 | 气质 | 推荐场景 |
|---|---|---|---|---|
| 晓晓 | xiaoxiao | 女 | 温暖 | 课文/故事朗读(默认) |
| 小艺 | xiaoyi | 女 | 活泼 | 儿童故事 |
| 云希 | yunxi | 男 | 阳光 | 叙事/科普 |
| 云健 | yunjian | 男 | 激情 | 朗诵 |
| 云扬 | yunyang | 男 | 专业 | 新闻/说明文 |
| 用户选择 | 别名(脚本参数) | 性别 | 气质 | 推荐场景 |
|---|---|---|---|---|
| Jenny | jenny | 女 | 温暖 | 朗读/故事(默认英文) |
| Aria | aria | 女 | 自信 | 新闻/叙述 |
| Emma | emma | 女 | 活泼 | 对话/讲解 |
| Guy | guy | 男 | 激情 | 朗诵/叙事 |
| Christopher | christopher | 男 | 权威 | 新闻/分析 |
| Michelle | michelle | 女 | 亲切 | 日常叙述 |
用户选择"Jenny" → 脚本参数 --voice jenny
| 用户选择 | 脚本参数 | 说明 |
|---|---|---|
| A 略慢 10 | --rate -10 | 适合课文朗读(推荐) |
| A 略慢 20 | --rate -20 | 适合跟读/低年级 |
| B 正常语速 | --rate +0 | 默认语速 |
| C 略快 10 | --rate +10 | 快速浏览 |
用户选"A 略慢"且填 15 → 脚本参数 --rate -15