【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)

Deep Learning for Human Ianguage Processing 3

  • 1. 语音转换应用场景
  • 2. 语音转换类别
    • 2.1 成对的资料
    • 2.2 不成对的资料
      • 2.2.1 特征分解
      • 2.2.2 直接转换
  • 3. 语音分离
    • 3.1 为什么需要语音分离
    • 3.2 评价语音分离
  • 4. 深度聚类
    • 4.1 Ideal Binary Mask
    • 4.2 深度聚类
  • 5. 组合不变训练
  • 6. TaskNet
  • 7. 更多...
  • 小结

1. 语音转换应用场景

什么是Voice Conversion(VC):
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第1张图片

  • 保存了什么?- 内容
  • 改变什么了? - 许多不同的方面…

说话人转换(Speaker)

可见此[Nachmani, et al., INTERSPEECH’19]和此[Deng, et al., ICASSP’20]:

  • 同样的一句话,不同的人说出来的效果是不一样的
  • 深度造假。愚弄人类/扬声器验证系统
  • 实现个性化TTS(TextToSpeech)的一个简单方法
  • 唱歌
  • 隐私保护[Srivastava, et al., arXiv’19]

说话风格

  • 情绪[Gao, et al., INTERSPEECH’19]
  • 普通到伦巴德(Lombard,不由自主的放大你的声音)[Seshadri, et al., ICASSP’19]
  • 悄悄话到正常[Patel, et al., SSW’19]
  • 歌手声乐技巧转换[Luo, et al., ICASSP‘20] 例如:‘lip thrill’ (弹唇) or ‘vibrato’ (颤音)

增进可理解性(Intelligibility)

  • 提高语音清晰度
    • 被切除部分关节的手术患者[Biadsy, et al., INTERSPEECH’19][Chen et al., INTERSPEECH’19]
  • 口(重)音转换
    • 非母语者的语音质量和母语者的发音模式
    • 可用于语言学习[Zhao, et al., INTERSPEECH’19]

数据增强

  • 把数据集中男生的声音转成女生的声音,女生的声音转成男生的声音,这样训练数据就是原来的两倍[Keskin, et al., ICML workshop’19]
  • 把干净的声音转成有杂讯的声音,直接把杂讯加在干净的语音上不太好;或者是去噪[Mimura, et al., ASRU 2017]

在实际执行中…

输出也是Acoustic Feature,不见得能够直接对应回原来的Voice

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第2张图片
Vecoder怎么做呢:

  • Rule-based: Griffin-Lim algorithm
  • Deep Learning: WaveNet
    Used in VC, TTS, Speech Separation, etc. (not today) ,Vecoder今天不细讲

2. 语音转换类别

2.1 成对的资料

Parallel Data:缺少训练数据:
在这里插入图片描述

  • 预训练模型[Huang, et al., arXiv’19]
  • 综合数据![Biadsy, et al., INTERSPEECH’19],用google把所有的文本都念一遍

2.2 不成对的资料

Unparallel Data:
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第3张图片

  • 这就是 “音频式传输(audio style transfer)”
  • 借鉴图像风格转移的技术

2.2.1 特征分解

Feature Disentangle,主要思想就是内容用一个Encoder,说话人用一个Encoder:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第4张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第5张图片
然后可以把Speaker Encoder轻松的换成新垣结衣的声音:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第6张图片
如何训练,用的方法很像是Auto-Encoder:

在这里插入图片描述
问题:如何做到内容用一个编码器,说话人用一个编码器?所以需要加一些额外的东西

Speaker Encoder做法:

使用说话人信息

假设我们知道训练语句的说话者[Hsu, et al., APSIPA’16]:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第7张图片
每个说话人的One-hot矢量,局限:很难生成新的说话人

预训练编码器(Pre-training Encoders)

说话人嵌入(i-向量、d-向量、x-向量…)[Qian, et al., ICML’19] [Liu, et al., INTERSPEECH’18]

Content Encoder做法:

语音辨识系统

[Sun, et al., ICME’16][Liu, et al., INTERSPEECH’18],但不能是一个一般的语音辨识系统,那样输出会是文本,我们可以用深度学习在HMM中的应用,输出在一个x向量下state的几率

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第8张图片

对抗性训练Adversarial Training

[Chou, et al., INTERSPEECH’18]

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第9张图片
语音分类器和编码器是反复学习的

设计网络架构

IN = 实例归一化(instance normalization)去除说话人信息

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第10张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第11张图片
对每一行进行标准正态化的处理:
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第12张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第13张图片
AdaIN = 自适应实例归一化(adaptive instance normalization)(只影响说话人信息)

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第14张图片
在IN之后加入说话人的分类器,希望只包含内容,所以精确度越低越好,可以发现IN是学到了一些东西的:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第15张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第16张图片
问题,训练是用同一个人的内容和说话人的信息,而测试是不同的说话人,这样最后的表现不好:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第17张图片
改进的方法可以是第二阶段训练[Chou, et al., INTERSPEECH’18][Liu, et al., INTERSPEECH’19],这里有一个GAN的概念

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第18张图片
但以上训练结果不太好,所以加入Pacher,这样会让训练比较容易成功:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第19张图片

2.2.2 直接转换

Direct Transformation:

  • 无并行数据的训练
  • 使用CycleGAN[Kaneko, et al., ICASSP’19]
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第20张图片
    G X → Y G_{X→Y} GXY的结果并不是我们想要的,有可能是新垣结衣总是说的那一句话,所以需要一个 G Y → X G_{Y→X} GYX

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第21张图片
有一个Tips,就是丢一个Y的声音, G X → Y G_{X→Y} GXY的结果应该就是Y的声音

以上网络还可以是双向的:
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第22张图片

对于CycleGAN,如果有N个说话人,你需要N×(N-1)个generators:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第23张图片
StarGAN[Kaneko, et al., INTERSPEECH’19]

主要是generator和discriminator的改变,每个发言人用一个矢量表示

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第24张图片
CycleGAN和StarGAN训练方式的对比如下:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第25张图片
比StarGAN更进阶的做法:Blow[Joan, et al., NeurIPS’19] ,原理可参考之前课程flow-based model

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第26张图片
研究上主要专注于不是成对的数据

3. 语音分离

3.1 为什么需要语音分离

什么是Speech Separation?——在拥挤嘈杂的环境中,人类可以专注于单个扬声器产生的声音(鸡尾酒会效应)

  • 语音增强(Speech Enhancement):语音-非语音分离(去噪)
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第27张图片
  • 说话人分离(Speaker Separation):多说话人说话
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第28张图片

在这里插入图片描述
本课程:

  • 专注于两名发言者
  • 专注于单麦克风
  • 演讲者独立(Speaker independent):培训和测试演讲者是完全不同的
  • 输入和输出的长度相同,不需要Seq2seq

训练数据:很容易生成训练数据
在这里插入图片描述

3.2 评价语音分离

之前的语音转换没有客观评价,但是语音分离可以进行客观评价:

  • 信噪比(Signal-to-noise ratio, SNR)
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第29张图片
  • 规模不变的信噪比(Scale invariant signal-to-distortion ratio, SI-SDR=SI-SNR)
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第30张图片
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第31张图片
    【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第32张图片
  • 语音质量的感性评价(Perceptual evaluation of speech quality, PESQ)旨在评价语音质量,分数范围为-0.5~4.5
  • 短时客观智能性(Short-time objective intelligibility, STOI)被设计为计算智能性,分数范围从0到1

替换问题(Permutation Issue)

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第33张图片
为了实现说话人独立训练,训练数据中包含许多不同的说话人

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第34张图片

4. 深度聚类

Deep Clustering
在这里插入图片描述
屏蔽(Masking),掩码(Mask)可以是二进制或连续的

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第35张图片

4.1 Ideal Binary Mask

IBM ——每个音频都由它的频谱图来表示

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第36张图片
问题:并不知道原来的声音讯号是什么

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第37张图片
但这还是没有解决之前的问题,但是这两个IBM是非常有关系的,因为知道一个就知道另外一个

4.2 深度聚类

[Hershey, et al., ICASSP’16]

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第38张图片
K-means聚类不能训练,但是Embedding Generation可以训练:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第39张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第40张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第41张图片

  • 不同说话人的格局是很远的
  • 属于同一发言者的格子互相靠近
  • 可以用两个扬声器进行训练,但要在三个说话人上进行测试(k-means期间K=3)![Hershey, et al., ICASSP’16]

深度聚类问题:但没有端到端

5. 组合不变训练

Permutation Invariant Training (PIT)

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第42张图片
但我们需要换位思考来训练说话人分离模型…

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第43张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第44张图片

6. TaskNet

Time-domain Audio Separation Network[Luo, et al., TASLP’19]
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第45张图片
这是没有抽特征的模型,其训练需要PIT

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第46张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第47张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第48张图片
真正的Seperator:
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第49张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第50张图片

  • 如果重复3次,模型考虑1.53s
  • 深度可分离卷积,这是一个让CNN轻量化的技术

LSTM习惯听一个句子的开头,感觉有点脆弱,好像有点过拟合:

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第51张图片
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第52张图片
结果:
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第53张图片

7. 更多…

发言人数不详

[Takahashi, et al., INTERSPEECH’19]
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第54张图片
多个麦克风
[Luo, et al., ASRU’19]

在这里插入图片描述
视觉信息
[Ephrat, et al., SIGGRAPH’18]

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第55张图片
面向任务的优化

谁会听语音增强或说话人分离的结果?

【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)_第56张图片

  • 给人听,优化STOI、PESQ(无差异性) [Fu, et al., ICML’19]
  • 给机器听,优化系统性能 [Shon, et al., INTERSPEECH’19]

学习更多…

  • Denoise Wavnet [Rethage, et al., ICASSP’18]
  • Chimera++ [Wang, et al., ICASSP’18]
  • Phase Reconstruction Model [Wang, et al., ICASSP’19]
  • Deep Complex U-Net: Complex masking [Choi, et al., ICLR’19]
  • Deep CASA: Make CASA great again! [Liu, et al., TASLP’19]
  • Wavesplit: state-of-the-art on benchmark corpus WSJ0-2mix [Zeghidour, et al., arXiv’20]

小结

  1. 首先介绍了语音转换的应用场景,语音转换一般是不成对的数据,对其可以是特征分解,对于说话人编码器和内容编码器有不同的模型;对其也可以是直接转换,重点是GAN的内容,这一块没有接触过,介绍了CycleGAN和StarGAN两种方法,但是没有客观指标可以来评判
  2. 语音分离的评价比较好懂,其替换问题确实是一个问题,就像我们人一样,同时听到两个声音其实也不会有特殊的排序,所以这就不好训练,为了解决这个问题,提出了一些方法
  3. IDM的语谱图具体的原理不太清楚,只知道是时域和频域同时考虑的一个图,深度聚类的Embedding Generation不同清楚是如何实现的,反正可以训练呗,以及三维的向量怎么k-means聚类也不知道具体的细节,反正能聚类就对了,但这实际上也没有解决之前的问题?而且不能端到端
  4. PIT模型很好懂,就是一个先有鸡还是先有蛋的问题,反正有了模型就可以训练,能训练就有模型,所以一开始就随机给初始化,这样不断调整标签的排列,结果是能表现比较好的
  5. TaskNet就是不要提特征,直接用时域的大串数据,Encoder和Decoder就是简单的Linear Model,在Separator用很多层卷积神经网络,重复三次,CNN表现比LSTM要好,具体的结果有个什么Wavesplit表现更好,但是老师通过一个具体的例子展示了一下Deep Clustering和TaskNet,感觉虽然TaskNet的评价指标好一些,但是Deep Clustering的人听起来表现好一些
  6. 更多其他的东西还是需要面向任务吧

你可能感兴趣的:(【课程学习】,人工智能,机器学习,深度学习,自然语言处理,nlp)