上周调试语音克隆功能时遇到个典型场景:客户只提供了五条发音人样本,总时长不到十秒,要求合成出自然流畅的任意文本。常规TTS模型直接崩了——梅尔谱扭曲得像抽象画,音素对齐完全错乱。这让我重新翻出Few-shot和Zero-shot这两个老伙计,今天咱们就聊聊如何在资源极度匮乏时让AI开口说话。从经典问题出发传统语音合成需要什么?数小时的高质量音频、精准的音素标注、稳定的声学特征。但在真实产品环境中,你常遇到的是:用户上传的30秒自我介绍视频、客服系统中残留的几条历史录音、甚至只是两三句预设的唤醒词。这时候你会发现,基于大量数据训练的TTS pipeline每个模块都在抗议。几年前我们尝试用Tacotron2处理短样本,结果合成音频里总带着诡异的嗡嗡声——后来发现是位置编码在短序列上过拟合了。类似的问题在FastSpeech2里表现为基频预测完全失控,毕竟基频轮廓在短样本中根本统计不出规律。这时候就得换思路:既然数据不够,那就让模型学会“举一反三”。Few-shot的实战套路Few-shot的核心逻辑是“先预训练,后适配”。我们团队在OpenClaw TTS里实现的方案分三层:第一层是通用声学模型预训练。用LibriTTS、AISHELL-3这类多说话人数据集,训练时在encoder里加入说话人ID嵌入。关键技巧在这里:说话人ID不要用one-hot,我们吃过亏。早期版本用one-hot导致新说话人编码时产生剧烈偏移,后来改用可学习的说话人查询向量,效果稳定多了。