Datawhale AI 夏令营 · 泛终端智能语音交互认证(生成赛)学习笔记
主题:根据给定文本与参考音频,合成高自然度 & 高相似度的“克隆”语音(生成赛)。
本笔记聚焦快速上手、跑通 Baseline、批量生成与提分方向,适合 1–2 天完成「打卡」与形成可持续改进的代码骨架。
🗺️ 快速导航
- 赛题主页(天池 / 阿里云):(见文末参考)
- 数据集/基线资源(ModelScope):(见文末参考)
- 推荐基础模型:F5-TTS(零样本语音克隆,CLI & Gradio 皆可)
📌 学习目标
- 知道赛题输入/输出与评测要点(自然度、相似度)。
- 在本地或云端 跑通 F5-TTS Baseline,完成 200 条语音生成。
- 按提交规范打包提交,获得首个基线分数。
- 能针对中文文本与参考音频做效果提升(断句、语速、噪声、停顿、发音一致性等)。
- 能定位常见报错(依赖、显存、缓存、采样参数)并排查。
📦 环境准备
✅ 建议 Python 3.10,CUDA 环境可选(有 GPU 更快)。
✅ 若使用云端 Notebooks(如 ModelScope Notebook/Colab),按需安装依赖即可。
# 1) 创建并激活环境(可用 conda 或 venv)
conda create -n f5-tts python=3.10 -y
conda activate f5-tts
# 2) 安装与显卡匹配的 PyTorch(示例:CUDA 12.4)
pip install torch==2.4.0+cu124 torchaudio==2.4.0+cu124 --extra-index-url https://download.pytorch.org/whl/cu124
# 3) 安装 F5-TTS 推理(仅推理可直接 pip)
pip install f5-tts
# 4) 常用音频工具(建议)
pip install soundfile librosa pydub jieba cn2an gradio
# 5) 可选:本地可执行 ffmpeg(Windows 可用 choco / scoop 安装)
# choco install ffmpeg 或 scoop install ffmpeg
📈 提分方向(实践友好清单)
A. 文本前处理(中文适配)
- 统一格式:全角/半角转换、数字读法(
cn2an)、常见词正则化(如将「AI」转为标准读法)。 - 自动断句:根据逗号、句号、分号、冒号、顿号等标点分句;长句子分段合成并拼接,听感更自然。
- 非中文字符清理:删除或替换非中文字符,避免生成夹杂英文或其他无关字符的语音。
B. 参考音频清洁与稳健性
- 降噪与静音裁切:去除头尾空白和环境噪声,保证参考音频干净。
- 多参考融合:将同一说话人的多条参考音频进行拼接或分段特征融合,提升稳定性和自然度。
- 采样参数优化:开启
--sway_sampling,适度提高--steps,必要时调整--cfg_strength提升合成一致性。
C. 发音 / 韵律与一致性
- 语速与停顿控制:长句子按标点位置合理分段,确保停顿自然。
- 术语与专有名词一致性:必要时提供
ref_text(参考文本)来提升发音准确性。 - 断句异常修正:先进行文本断句预处理,再逐句推理,最后进行无损拼接。
D. 工程与加速
- 并发批量处理:在显存和磁盘 IO 允许范围内提高批处理效率。
- 结果缓存:对于重复
(ref, text)的任务直接复用生成结果,避免重复推理。 - 批处理质量检查:合成后批量检测时长阈值、能量阈值、VAD 静音占比、重复片段等,确保结果质量。
参考与来源(部分)
- F5-TTS 官方仓库(安装、CLI、sway 采样、
--ref_text可触发 ASR、基准说明)。 :contentReference[oaicite:0]{index=0} - F5-TTS 论文(Flow Matching + DiT、零样本能力概述)。 :contentReference[oaicite:1]{index=1}
- ModelScope 数据集页:AISumerCamp_audio_generation_fight(资源入口与更新)。 :contentReference[oaicite:2]{index=2}
- ModelScope 上的 F5-TTS 模型条目(模型可用性)。 :contentReference[oaicite:3]{index=3}
- 天池赛题主页:2025 全球 AI 攻防挑战赛 · 赛道三(赛题描述/提交评测)。 :contentReference[oaicite:4]{index=4}
- 学员实践记录(语音方向 baseline 使用 F5-TTS、批量生成与初步分数经验)。 :contentReference[oaicite:5]{index=5}