Skip to content

语音合成与语音克隆技术

语音合成(TTS)和语音克隆技术是语音生成的两个核心方向。TTS 将文本转换为自然语音,语音克隆则从少量参考音频中复制说话人的声音特征,两者在数字人、有声读物和辅助技术中广泛应用。

语音合成架构示意

TTS 架构演进

语音合成技术经历了从拼接合成到统计参数合成再到神经网络的演进:

早期方案

  1. 拼接合成:从语音库中选取合适的语音片段拼接
  2. 统计参数合成:使用 HMM/DNN 预测语音参数,通过声码器生成波形

神经网络 TTS

  1. 两阶段方案:文本 → 频谱(Tacotron/FastSpeech)→ 波形(WaveNet/Hifi-GAN)
  2. 端到端方案:文本直接生成波形(VITS/Voicebox)
python
import torch
import torch.nn as nn

class VITS(nn.Module):
    """VITS 端到端 TTS 架构概要"""
    def __init__(self, vocab_size, hidden_dim=192):
        super().__init__()
        # 文本编码器
        self.text_encoder = nn.TransformerEncoder(
            nn.TransformerEncoderLayer(hidden_dim, 8, hidden_dim*4),
            num_layers=6
        )
        # 后验编码器(训练时从梅尔频谱提取)
        self.posterior_encoder = PosteriorEncoder()
        # 流模型(从简单分布变换到复杂后验)
        self.flow = FlowSequence(num_flows=4)
        # 解码器(HiFi-GAN 声码器)
        self.decoder = HiFiGANGenerator()

    def forward(self, text_tokens, mel_spectrogram):
        # 文本编码
        text_features = self.text_encoder(text_tokens)
        # 后验编码
        z, m_q, logs_q = self.posterior_encoder(mel_spectrogram)
        # 流变换
        z_p = self.flow(z)
        # 解码为波形
        waveform = self.decoder(z)
        return waveform

语音克隆技术

语音克隆分为三种场景:

零样本克隆

仅需几秒参考音频,无需微调:

  • SpeakTTS:使用说话人编码器提取声音嵌入
  • Voicebox:基于流匹配的零样本语音生成
  • ChatTTS:中文零样本 TTS

少样本微调

少量参考音频微调预训练模型:

  • So-VITS-SVC:变声与语音克隆
  • GPT-SoVITS:仅需 5 分钟音频即可克隆

大规模数据训练

需要数小时目标说话人数据:

  • 传统方案,质量最高但成本大

伦理与安全

语音克隆技术存在被滥用的风险(如深度伪造诈骗)。在使用时应遵守法律法规,获取说话人授权,并考虑添加水印等防伪措施。

ChatTTS:中文语音合成

ChatTTS 是专为对话场景设计的中文 TTS 模型:

  • 支持细粒度控制:笑声、停顿、韵律
  • 零样本说话人克隆
  • 对话式语音合成,自然度极高
python
import ChatTTS

chat = ChatTTS.Chat()
chat.load(compile=False)

texts = ["今天天气真好,我们一起出去散步吧。"]
wavs = chat.infer(texts, use_decoder=True)

评估指标

指标衡量维度说明
MOS自然度平均意见分(1-5)
WER准确性词错误率
Speaker Sim.相似度说话人嵌入余弦相似度
RTF速度实时因子(<1 即实时)

相关资源

最近更新