数据决定上限

TTS模型效果好不好,80%取决于数据质量。

常见问题:

  • 录音有底噪 → 合成出来有杂音
  • 音量不稳定 → 合成忽大忽小
  • 断句不自然 → 合成节奏奇怪

录音要求

硬件

设备推荐预算
麦克风电容麦(如AT2020)¥500-1500
声卡独立声卡或USB麦¥300-800
环境安静房间+吸音棉¥100-300

录音参数

1
2
3
采样率: 48kHz(至少16kHz)
位深: 24-bit
格式: WAV(无损)

录音技巧

  1. 距离:麦克风离嘴15-20cm
  2. 音量:保持-12dB到-6dB之间
  3. 状态:正常语速,自然呼吸
  4. 时长:至少2小时(5-10小时效果更好)

数据清洗流程

graph LR
    A[原始音频] --> B[降噪]
    B --> C[音量标准化]
    C --> D[切分句子]
    D --> E[对齐文本]
    E --> F[质量检查]
    F --> G[训练数据]

1. 降噪

工具:Audacity(免费)、Adobe Podcast(在线)

1
2
# 使用ffmpeg + rnnoise降噪
ffmpeg -i input.wav -af "arnndn=m=rnnoise-models/bd.rnnn" output.wav

⚠️ 注意:过度降噪会导致声音失真,宁可保留少量底噪

2. 音量标准化

1
2
# 标准化到-16 LUFS
ffmpeg -i input.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 output.wav

3. 切分句子

原则:一个音频片段 = 一句话(3-15秒)

工具

  • Whisper:自动转写+时间戳
  • UVR:人声分离(去除背景音乐)
1
2
3
4
# 使用Whisper获取时间戳
import whisper
model = whisper.load_model("medium")
result = model.transcribe("audio.wav", word_timestamps=True)

4. 文本对齐

每个音频片段需要对应的文本标注:

1
2
3
audio_001.wav | 今天天气真不错。
audio_002.wav | 我们去公园散步吧。
audio_003.wav | 好的,等我换个衣服。

常见格式

  • LJSpeech格式:文件名|文本
  • CSV格式:带时间戳

常见坑

坑1:录音环境不一致

同一批数据,有的在卧室录,有的在办公室录 → 合成效果不稳定

解决:固定一个录音环境

坑2:情绪变化大

开始精神饱满,后面疲惫无力 → 合成声音不稳定

解决:分多次录,每次1小时以内

坑3:文本标注错误

音频说"今天",标注写"昨天" → 模型学混了

解决:用Whisper自动转写,人工校验

坑4:切分太碎

3个字一个片段 → 模型学不到完整语调

解决:保持5-15秒一个片段


数据量参考

目标数据量效果
快速验证10分钟勉强能用
基本可用1-2小时像那么回事
效果不错5-10小时接近真人
专业级20小时+几乎分不出

推荐工具

用途工具备注
录音Audacity免费
降噪Adobe Podcast在线免费
人声分离UVR5开源
转写Whisper开源
批处理FFmpeg命令行工具

下一步

数据准备好后,就可以开始训练了。下篇讲TTS模型微调。

有问题留言。