文字转语音/Text to Audio

使用 edge-tts 将中文或英文文本转为自然语音 MP3。此 Skill 应在以下场景触发: 将图片或文本转成语音、朗读课文或作文、中文文字转语音、英文文字转语音、 TTS 文本朗读、生成音频 MP3、给文章配音、语音合成、 朗读故事、课文朗读、作文朗读、文字转 MP3、英文朗读。 支持晓晓等多款中文 Neural 语音,支持 Jenny 等英文 Neural 语音,支持语速调整和语音选择。

Audits

Pass

Install

openclaw skills install text-to-audio

文字转语音(免费)

将中文或英文文本转为自然语音 MP3 文件,使用微软 Edge TTS 在线服务,声音自然、文件小巧、跨设备通用。

前置条件

  • Python 3.8+ 已安装
  • edge-tts 包已安装(pip install edge-tts
  • 网络连接可用(需访问微软 TTS 云服务)

环境初始化(首次使用时执行)

首次使用此 Skill 时,运行环境检测脚本确认依赖是否就绪:

python scripts/check_env.py

该脚本会自动检测并安装缺失的依赖。如果网络不通,提示用户开启 VPN 后重试。

工作流程

步骤 1:语言检测

保存文本后,必须先检测文本语言,以决定展示中文还是英文语音选项。

检测方法:如果文本中英文字母(a-zA-Z)占比超过 60%,判定为英文;否则判定为中文

步骤 2:让用户选择语音和语速

在生成 MP3 之前,必须先让用户选择语音和语速。 使用 ask_followup_question 工具向用户展示选项,不要自行假设。

语音选择(根据语言自动切换)

如果检测为中文,展示中文语音选项:

问题:请选择朗读语音
选项:
- 晓晓(温暖女声,适合课文/故事朗读)
- 小艺(活泼女声,适合儿童故事)
- 云希(阳光男声,适合叙事/科普)
- 云健(激情男声,适合朗诵)
- 云扬(专业男声,适合新闻/说明文)

如果检测为英文,展示英文语音选项:

问题:请选择朗读语音
选项:
- Jenny(温暖女声,适合朗读/故事,推荐)
- Aria(自信女声,适合新闻/叙述)
- Emma(活泼女声,适合对话/讲解)
- Guy(激情男声,适合朗诵/叙事)
- Christopher(权威男声,适合新闻/分析)
- Michelle(亲切女声,适合日常叙述)

语速选择(输入式)

语速使用 三选一 + 数字输入 形式,让用户填写具体百分比:

问题:请选择朗读语速(在方括号中填写数字,0 为正常语速,负数更慢,正数更快)
选项:
- A 略慢 [  ]%(推荐填 10,即 -10%)
- B 正常语速
- C 略快 [  ]%(推荐填 10,即 +10%)

用户选择 A 或 C 时,解析其填写的数字作为 rate 值:

  • 选 A + 填 10 → --rate -10
  • 选 B → --rate +0
  • 选 C + 填 10 → --rate +10

如果用户没有填写数字,使用推荐默认值(A 为 -10,C 为 +10)。

如果用户在对话中已经明确指定了语音或语速(如"用晓晓的声音"、"读慢一点"),则直接使用用户的选择,无需再次询问。

流程 A:图片转语音(最常见)

  1. 识别图片文字 — 读取用户上传的图片,识别其中的文字内容
  2. 保存文本 — 将识别的文字保存为 .txt 文件(UTF-8 编码)
  3. 语言检测 — 判断文本语言
  4. 让用户选择语音和语速 — 根据语言展示对应语音选项 + 语速选项
  5. 生成 MP3 — 根据用户选择调用 scripts/tts_generate.py 生成 MP3 文件

流程 B:文本转语音(用户直接提供文本)

  1. 保存文本 — 将用户提供的文字保存为 .txt 文件
  2. 语言检测 — 判断文本语言
  3. 让用户选择语音和语速 — 根据语言展示对应语音选项 + 语速选项
  4. 生成 MP3 — 根据用户选择调用生成脚本

流程 C:批量转换

  1. 语言检测 — 判断文本语言
  2. 让用户选择默认语音和语速 — 根据语言展示对应语音选项 + 语速选项
  3. 生成批量配置 — 创建 JSON 配置文件
  4. 执行批量生成 — 使用 --batch 参数

核心脚本用法

单文件生成

python scripts/tts_generate.py <文本文件> [选项]
参数说明默认值
--output, -o输出 MP3 文件路径<输入名>_<语音别名>.mp3
--voice, -v语音别名或完整 IDxiaoxiao(中文)/ 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专业新闻/说明文

英文语音

用户选择别名(脚本参数)性别气质推荐场景
Jennyjenny温暖朗读/故事(默认英文)
Ariaaria自信新闻/叙述
Emmaemma活泼对话/讲解
Guyguy激情朗诵/叙事
Christopherchristopher权威新闻/分析
Michellemichelle亲切日常叙述

用户选择"Jenny" → 脚本参数 --voice jenny

语速选项速查

用户选择脚本参数说明
A 略慢 10--rate -10适合课文朗读(推荐)
A 略慢 20--rate -20适合跟读/低年级
B 正常语速--rate +0默认语速
C 略快 10--rate +10快速浏览

用户选"A 略慢"且填 15 → 脚本参数 --rate -15

注意事项

  • edge-tts 需要网络连接,如生成失败先检查网络
  • 输出为 MP3 格式,任何设备均可播放
  • 文件大小约 0.5-1MB/分钟音频,远小于 WAV 格式
  • 无需 API Key,完全免费
  • 中文语音读英文会有口音,英文语音读中文效果也差,请根据文本语言选择对应语音组