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):

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

说话人转换(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


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:

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

2.2.1 特征分解

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



然后可以把Speaker Encoder轻松的换成新垣结衣的声音:


如何训练,用的方法很像是Auto-Encoder:


问题:如何做到内容用一个编码器,说话人用一个编码器?所以需要加一些额外的东西

Speaker Encoder做法:

使用说话人信息

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


每个说话人的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的几率

对抗性训练Adversarial Training

[Chou, et al., INTERSPEECH’18]


语音分类器和编码器是反复学习的

设计网络架构

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



对每一行进行标准正态化的处理:


AdaIN = 自适应实例归一化(adaptive instance normalization)(只影响说话人信息)


在IN之后加入说话人的分类器,希望只包含内容,所以精确度越低越好,可以发现IN是学到了一些东西的:



问题,训练是用同一个人的内容和说话人的信息,而测试是不同的说话人,这样最后的表现不好:


改进的方法可以是第二阶段训练[Chou, et al., INTERSPEECH’18][Liu, et al., INTERSPEECH’19],这里有一个GAN的概念


但以上训练结果不太好,所以加入Pacher,这样会让训练比较容易成功:

2.2.2 直接转换

Direct Transformation:

  • 无并行数据的训练
  • 使用CycleGAN[Kaneko, et al., ICASSP’19]

    GX→YG_{X→Y}GXY的结果并不是我们想要的,有可能是新垣结衣总是说的那一句话,所以需要一个GY→XG_{Y→X}GYX


有一个Tips,就是丢一个Y的声音,GX→YG_{X→Y}GXY的结果应该就是Y的声音

以上网络还可以是双向的:

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


StarGAN[Kaneko, et al., INTERSPEECH’19]

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


CycleGAN和StarGAN训练方式的对比如下:


比StarGAN更进阶的做法:Blow[Joan, et al., NeurIPS’19] ,原理可参考之前课程flow-based model


研究上主要专注于不是成对的数据

3. 语音分离

3.1 为什么需要语音分离

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

  • 语音增强(Speech Enhancement):语音-非语音分离(去噪)
  • 说话人分离(Speaker Separation):多说话人说话


本课程:

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

训练数据:很容易生成训练数据

3.2 评价语音分离

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

  • 信噪比(Signal-to-noise ratio, SNR)
  • 规模不变的信噪比(Scale invariant signal-to-distortion ratio, SI-SDR=SI-SNR)


  • 语音质量的感性评价(Perceptual evaluation of speech quality, PESQ)旨在评价语音质量,分数范围为-0.5~4.5
  • 短时客观智能性(Short-time objective intelligibility, STOI)被设计为计算智能性,分数范围从0到1

替换问题(Permutation Issue)


为了实现说话人独立训练,训练数据中包含许多不同的说话人

4. 深度聚类

Deep Clustering

屏蔽(Masking),掩码(Mask)可以是二进制或连续的

4.1 Ideal Binary Mask

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


问题:并不知道原来的声音讯号是什么


但这还是没有解决之前的问题,但是这两个IBM是非常有关系的,因为知道一个就知道另外一个

4.2 深度聚类

[Hershey, et al., ICASSP’16]


K-means聚类不能训练,但是Embedding Generation可以训练:



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

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

5. 组合不变训练

Permutation Invariant Training (PIT)


但我们需要换位思考来训练说话人分离模型…


6. TaskNet

Time-domain Audio Separation Network[Luo, et al., TASLP’19]

这是没有抽特征的模型,其训练需要PIT




真正的Seperator:

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

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



结果:

7. 更多…

发言人数不详

[Takahashi, et al., INTERSPEECH’19]

多个麦克风
[Luo, et al., ASRU’19]


视觉信息
[Ephrat, et al., SIGGRAPH’18]


面向任务的优化

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

  • 给人听,优化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. 更多其他的东西还是需要面向任务吧

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

  1. 【深度学习人类语言处理】1 课程介绍、语音辨识1——人类语言处理六种模型、Token、五种Seq2Seq Model(LAS、CTC、RNN-T、Neural Transducer、MoChA)

    Deep Learning for Human Ianguage Processing 1. DLHLP-Introduction 1.1 概述 1.2 六种模型与应用 1.2.1 语音到文本 1.2 ...

  2. [学习资源分享]-3Blue1Brown数学课程、李宏毅《深度学习人类语言处理》等

    小编最近发现了一堆比较好的学习资源,在这里汇总一下,后面有时间慢慢学习! 1.3Blue1Brown数学课程 之前小编就整理过3Blue1Brown推出的<线性代数的本质>课程的学习笔记, ...

  3. 【一文讲解深度学习】语言自然语言处理(NLP)第一篇

    [一文讲解深度学习]语言自然语言处理(NLP) 博主介绍 自然语言处理概述 NLP 的定义 NLP的主要任务 分词 词义消歧 识别物体识别(NER) 词性标注(PoS) 文本分类 语言生成 问答(QA ...

  4. 深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression)

    深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression) 本文主要通过使用mlr3包来训练German credit数据集,实现不同的深度学习模型. 1. ...

  5. 深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述

    深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述 摘要 一.图像特征与描述 1.1.颜色特征 1.2.几何特征提取 1.3.基于特征点的特征描述子 1.3.1.几何特征:关键点 1. ...

  6. 【2022新书】深度学习R语言实战,第二版

    来源:专知 本文为书籍介绍,建议阅读5分钟使用R和强大的Keras库从头开始进行深度学习! R深度学习,第二版 使用R和强大的Keras库从头开始进行深度学习! 在R深度学习第二版中,您将学习: 从基 ...

  7. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...

    机器之心报道 作者:魔王.杜伟 想不想在动画电影中拥有自己的角色?这个网站一键满足你的需求,不过竟因流量太大成本过高而下线. 近期热映的电影<花木兰>总是让人回想起 1998 年上映的同名 ...

  8. 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结

    一.前言 对于在Deep Learning的学习中总会有几个数据类型的转换,这次想把这些常用的转换做一个总结,方便以后看. 这些主要包括:Dataframe.Series(pandas), array ...

  9. 自然语言处理:计算机学习人类语言的新方法

    自然语言处理(Natural Language Processing,简称NLP)是计算机科学和人工智能领域的一个重要分支,它旨在让计算机能够理解.分析和生成自然语言.NLP的应用场景非常广泛,包括机 ...

最新文章

  1. 用java编写战舰 游戏吗_java – 战舰游戏 – 船舶重叠
  2. 64位内核第一讲,和32位内核的区别
  3. matlab获取标量
  4. openresty开发系列16--lua中的控制结构if-else/repeat/for/while
  5. centos7下端口映射
  6. python 获取本机IP的三种方式
  7. tomcat提高图片服务器性能,Tomcat性能调优(windows)
  8. 逆向工程核心原理读书笔记-API钩取之隐藏进程(二)
  9. Chromium下载各类版本(pyppeteer爬虫)
  10. SpringBoot定义全局统一业务异常,且处理filter里面的异常
  11. flask(四)jinja2模板
  12. FreeBSD NetBSD OpenBSD DragonFlyBSD 操作系统
  13. PHP使用MySQL数据库
  14. 【转】Ubuntu 16.04安装配置TensorFlow GPU版本
  15. .bat批处理命令常用操作
  16. systrace简介
  17. rtsp开源视频播放器VideoLAN
  18. java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
  19. 【工程光学】理想光学系统
  20. Android流式布局FlowLayout,一款针对Tag的布局

热门文章

  1. golang包time用法详解
  2. 计算机网络位置网盘怎么登陆,百度网盘使用小技巧,超全超详细!新手必备
  3. Nature :读博之前应该知道的二十件事情
  4. 校内练习 华山论剑 [最短路]
  5. PixHawk飞控和Mission Planner地面站安装调试
  6. 程序员屌丝的出路在哪?
  7. DB2密码过期的解决办法-创建新密码
  8. ecm 面向连接电子模型开发工具包
  9. 基于MATLAB GUI的串口通信
  10. 为什么在css中设置了font-family: 微软雅黑没有用