[自然语言处理-入门] 语音转换VC
个人导航
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
- [[自然语言处理-入门] 语音转换VC](#[自然语言处理-入门] 语音转换VC)
- 个人导航
- [VC: Voice Conversion: 语音转换](#VC: Voice Conversion: 语音转换)
- [两大分类 Categories](#两大分类 Categories)
-
-
-
- [1. 平行数据 (Parallel Data)](#1. 平行数据 (Parallel Data))
- [2. 非平行数据(Unparallel Data)](#2. 非平行数据(Unparallel Data))
-
-
- [特征解耦 Feature Disentangle](#特征解耦 Feature Disentangle)
-
-
-
- [1. One-hot 说话人编码](#1. One-hot 说话人编码)
- [2. 说话人嵌入](#2. 说话人嵌入)
- [3. 对抗训练](#3. 对抗训练)
- [4. 网络结构设计](#4. 网络结构设计)
- [5. 两阶段训练](#5. 两阶段训练)
-
-
- [直接转换 Direct Transformation](#直接转换 Direct Transformation)
-
-
-
- [1. CycleGAN](#1. CycleGAN)
- [2. StarGAN](#2. StarGAN)
- [3. Blow](#3. Blow)
-
-
VC: Voice Conversion: 语音转换
语音转换 = 保留语音内容 ,改变说话人 / 风格 / 音色 / 口音 等信息,实现语音→语音的直接转换
- 保留:内容(语义、发音)
- 改变:说话人、情绪、风格、口音、音质等
- 用途:个性化 TTS、声音修复、语言学习、数据增强、深度伪造等
四大应用场景:
-
说话人转换
换音色、换说话人,用于 TTS、声音模仿、声纹对抗。
-
风格 / 情绪转换
正常↔低语、正常↔朗巴德语音、唱歌技巧(颤音 / 弹唇)。
-
音质与可懂度提升
术后发音修复、口音标准化、外语发音矫正。
-
数据增强
扩数据集、干净语音↔噪声语音转换。
两大分类 Categories
1. 平行数据 (Parallel Data)
定义:内容一样 ,只是说话人不同
例:A 说 "How are you" + B 说 "How are you"
优点:训练简单,像图像风格迁移
缺点:现实很难收集,成本高
2. 非平行数据(Unparallel Data)
定义:内容不一样 ,说话人也不同
例:A 说 "天气真好",B 说 "How are you"
优点:真实场景、数据易得
缺点:训练难,必须靠特征解耦
特征解耦 Feature Disentangle
把语音拆成内容特征 + 说话人特征,分开建模、再组合
- 内容编码器 (Content Encoder):只抽内容 (语义),扔掉说话人信息
- 说话人编码器 (Speaker Encoder):只抽说话人信息 (音色/声纹)
- 解码器 (Decoder):内容 + 目标说话人 → 合成新语音
有5种实现方法
1. One-hot 说话人编码
给每个说话人一个独热向量
简单,但不支持新说话人
2. 说话人嵌入
用预训练模型抽向量:i-vector / d-vector / x-vector
i‑vector :传统统计方法,老、大、慢,但稳定
d‑vector :深度学习第一代说话人向量,简单直接
x‑vector :现在最主流、最好用的说话人向量,语音转换标配
优点:支持未知说话人(见过 / 没见过都能转)
这是现在 VC 标配
3. 对抗训练
一句话: 用判别器 "逼" 内容编码器去掉说话人信息
加一个Speaker Classifier(判别器)
目标:
- 判别器努力判断 "这是谁的声音"
- 内容编码器努力骗过判别器(让它分不清是谁)
结果:内容编码器被迫丢掉说话人信息
4. 网络结构设计
- IN(Instance Normalization):去掉说话人信息
- AdaIN(自适应 IN):注入目标说话人信息
5. 两阶段训练
Stage1:正常重建(同说话人)
Stage2:加一个 Patcher(修补器)
只修 "跨说话人转换" 的瑕疵,不改动内容
解决问题:不同说话人转换时音质变差
直接转换 Direct Transformation
不用解耦,直接做语音域迁移
1. CycleGAN
双向生成器: G ( X → Y ) 、 G ( Y → X ) G (X→Y)、G (Y→X) G(X→Y)、G(Y→X)
循环一致性: X → Y → X ≈ X X→Y→X ≈ X X→Y→X≈X
-> 保证内容不跑偏
缺点:N 个说话人需要 N×(N-1) 个生成器,爆炸
2. StarGAN
一个生成器 搞定所有说话人
输入:语音 + 目标说话人向量
优点:高效、工业常用
3. Blow
基于 Flow 的 VC 模型
生成稳定、可控、速度快