Files
skills/audio-generator/SKILL.md
T
hmo 04db423416 Initial commit: skills library
- 70 skills with code and documentation
- Add .gitignore (ignore __pycache__, output/, temp/, venv/)
- Clean up test intermediates and caches
2026-04-26 19:27:40 +08:00

6.7 KiB
Raw Blame History

Audio Generator

文本转音频生成技能

将文本内容转换为自然流畅的中文语音,支持多种格式和批量生成。


触发词

  • "生成音频"
  • "文本转语音"
  • "文字转音频"
  • "制作有声书"
  • "生成朗读音频"

功能描述

核心功能

  1. 多格式支持

    • Markdown 格式(按标题分割)
    • 纯文本格式(按大小分割)
    • 分隔符格式(按【章节】分割)
  2. 高质量语音

    • 使用微软 Edge TTS 引擎
    • 支持多种中文语音(晓晓、云希等)
    • 语音自然流畅,适合长文朗读
  3. 智能分割

    • 自动识别章节结构
    • 支持自定义分割策略
    • 过滤过短内容
  4. 批量处理

    • 批量生成所有章节
    • 支持增量更新
    • 可指定特定章节生成
  5. 音频合并

    • 合并多个章节为完整版
    • 自动按文件名排序
    • 保持原有文件不变
    • 支持自定义输出文件名

使用场景

场景一:知识库转音频课程

用户:"帮我把这个知识库文档转成音频课程"

执行步骤:

  1. 读取知识库文档
  2. 分析文档结构
  3. 转换为适合朗读的纯文本
  4. 按章节生成音频文件
  5. 合并为完整版音频
  6. 创建播放说明文档

场景二:长文分段朗读

用户:"把这篇文章分成几个音频文件"

执行步骤:

  1. 分析文本长度
  2. 按合适长度分割
  3. 生成多个音频文件
  4. 合并为完整版
  5. 提供播放建议

场景三:特定章节生成

用户:"只生成第一章和第三章的音频"

执行步骤:

  1. 解析用户指定的章节
  2. 定位对应文本内容
  3. 只生成指定章节的音频
  4. 保持文件命名连贯

场景四:音频合并

用户:"帮我把这些章节音频合并成一个完整版"

执行步骤:

  1. 扫描目录中的所有音频文件
  2. 按文件名排序
  3. 使用 ffmpeg 合并
  4. 生成完整版文件
  5. 保留原有分章节版本

工作流程

文本输入
    ↓
格式识别 (Markdown/纯文本/分隔符)
    ↓
章节分割
    ↓
内容过滤(跳过过短段落)
    ↓
音频生成(异步批量)
    ↓
输出到指定目录
    ↓
合并为完整版(可选)
    ↓
生成播放说明文档

输入要求

文本格式

推荐格式 - 分隔符格式:

================================================================
【第一章:标题】
内容内容内容...

================================================================
【第二章:标题】
内容内容内容...

Markdown 格式:

## 第一章:标题
内容...

## 第二章:标题
内容...

纯文本格式:

  • 将自动按字符数分割
  • 建议预处理添加章节标记

内容建议

  1. 口语化处理

    • 移除 Markdown 标记(#、*、-等)
    • 转换为口语化表达
    • 添加适当的停顿和强调
  2. 添加术语解释

    • 专业术语首次出现时添加解释
    • 使用通俗易懂的语言
  3. 控制章节长度

    • 每个章节 5-10 分钟为宜
    • 过长内容建议细分

输出说明

文件结构

output_dir/
├── 01_第一章标题.mp3
├── 02_第二章标题.mp3
├── 03_第三章标题.mp3
└── ...

音频规格

  • 格式:MP3
  • 编码:128kbps
  • 采样率:24kHz
  • 语音:Microsoft Edge TTS

参数配置

命令行参数

python scripts/generate_audio.py <input_file> [options]

Options:
  --format {plain,markdown,separator}  文本格式 (默认: plain)
  --output-dir DIR                     输出目录 (默认: ./audio_output)
  --voice VOICE                        语音模型 (默认: zh-CN-XiaoxiaoNeural)
  --chapters CHAPTERS                  只生成指定章节,逗号分隔

推荐语音

语音代码 性别 适用场景
zh-CN-XiaoxiaoNeural 女声 课程内容、长文朗读(默认)
zh-CN-YunxiNeural 男声 旁白解说、故事朗读
zh-CN-YunjianNeural 男声 正式场合、官方内容
zh-CN-XiaoyiNeural 女声 故事朗读、温柔亲切
zh-CN-YunyangNeural 男声 新闻播报、官方声明

命令行选择音色

# 使用男声(云希)
python scripts/generate_audio.py text.txt --voice zh-CN-YunxiNeural

# 使用女声(晓晓,默认)
python scripts/generate_audio.py text.txt --voice zh-CN-XiaoxiaoNeural

依赖要求

pip install edge-tts

系统要求:

  • Python 3.7+
  • 网络连接(Edge TTS 需要联网)
  • 磁盘空间(每小时音频约 50MB

示例用法

示例 1:基本使用

python scripts/generate_audio.py article.txt

示例 2Markdown 文档

python scripts/generate_audio.py document.md --format markdown --output-dir ./audio

示例 3:指定章节

python scripts/generate_audio.py book.txt --chapters "第一章,第三章,第五章"

示例 4:使用男声

python scripts/generate_audio.py text.txt --voice zh-CN-YunxiNeural

示例 5:合并音频文件

# 合并所有章节为一个完整版
python scripts/merge_audio.py ./audio_chapters

# 合并并指定输出文件名
python scripts/merge_audio.py ./audio_chapters -o 完整课程.mp3

# 合并特定模式的文件
python scripts/merge_audio.py ./audio_chapters --pattern "part_*.mp3"

故障排除

问题 原因 解决方案
生成失败 edge-tts 未安装 pip install edge-tts
网络错误 无法连接 Edge TTS 检查网络连接
乱码 文本编码错误 确保文本为 UTF-8 编码
文件名为空 章节标题非法 检查并清理标题中的特殊字符
部分章节缺失 内容过短被过滤 调整 MIN_SECTION_LENGTH 或合并短章节

最佳实践

  1. 预处理文本

    • 移除不适合朗读的内容(代码、表格等)
    • 添加口语化过渡
    • 确保术语有解释
  2. 测试小样本

    • 先生成一个章节测试
    • 确认语音效果满意后再批量生成
  3. 合理分割

    • 根据内容逻辑分割
    • 控制单个音频时长
    • 保持章节间连贯性
  4. 添加元数据

    • 创建播放说明文档
    • 标注章节内容摘要
    • 提供学习建议

相关技能

  • videocut-subtitle: 视频字幕生成
  • video-creator: 视频创作
  • story-to-scenes: 故事拆镜

更新记录

v1.0.0 (2026-02-19)

  • 初始版本发布
  • 支持三种文本格式
  • 支持章节过滤
  • 支持多种语音选择

维护者

  • 创建者:AI Assistant
  • 联系方式:通过 OpenCode 平台

License

MIT License