【深度学习人类语言处理】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):
- 保存了什么?- 内容
- 改变什么了? - 许多不同的方面…
说话人转换(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}GX→Y的结果并不是我们想要的,有可能是新垣结衣总是说的那一句话,所以需要一个GY→XG_{Y→X}GY→X:
有一个Tips,就是丢一个Y的声音,GX→YG_{X→Y}GX→Y的结果应该就是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]
小结
- 首先介绍了语音转换的应用场景,语音转换一般是不成对的数据,对其可以是特征分解,对于说话人编码器和内容编码器有不同的模型;对其也可以是直接转换,重点是GAN的内容,这一块没有接触过,介绍了CycleGAN和StarGAN两种方法,但是没有客观指标可以来评判
- 语音分离的评价比较好懂,其替换问题确实是一个问题,就像我们人一样,同时听到两个声音其实也不会有特殊的排序,所以这就不好训练,为了解决这个问题,提出了一些方法
- IDM的语谱图具体的原理不太清楚,只知道是时域和频域同时考虑的一个图,深度聚类的Embedding Generation不同清楚是如何实现的,反正可以训练呗,以及三维的向量怎么k-means聚类也不知道具体的细节,反正能聚类就对了,但这实际上也没有解决之前的问题?而且不能端到端
- PIT模型很好懂,就是一个先有鸡还是先有蛋的问题,反正有了模型就可以训练,能训练就有模型,所以一开始就随机给初始化,这样不断调整标签的排列,结果是能表现比较好的
- TaskNet就是不要提特征,直接用时域的大串数据,Encoder和Decoder就是简单的Linear Model,在Separator用很多层卷积神经网络,重复三次,CNN表现比LSTM要好,具体的结果有个什么Wavesplit表现更好,但是老师通过一个具体的例子展示了一下Deep Clustering和TaskNet,感觉虽然TaskNet的评价指标好一些,但是Deep Clustering的人听起来表现好一些
- 更多其他的东西还是需要面向任务吧
【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)相关推荐
- 【深度学习人类语言处理】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 ...
- [学习资源分享]-3Blue1Brown数学课程、李宏毅《深度学习人类语言处理》等
小编最近发现了一堆比较好的学习资源,在这里汇总一下,后面有时间慢慢学习! 1.3Blue1Brown数学课程 之前小编就整理过3Blue1Brown推出的<线性代数的本质>课程的学习笔记, ...
- 【一文讲解深度学习】语言自然语言处理(NLP)第一篇
[一文讲解深度学习]语言自然语言处理(NLP) 博主介绍 自然语言处理概述 NLP 的定义 NLP的主要任务 分词 词义消歧 识别物体识别(NER) 词性标注(PoS) 文本分类 语言生成 问答(QA ...
- 深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression)
深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression) 本文主要通过使用mlr3包来训练German credit数据集,实现不同的深度学习模型. 1. ...
- 深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述
深度学习图像处理目标检测图像分割计算机视觉 02--图像特征与描述 摘要 一.图像特征与描述 1.1.颜色特征 1.2.几何特征提取 1.3.基于特征点的特征描述子 1.3.1.几何特征:关键点 1. ...
- 【2022新书】深度学习R语言实战,第二版
来源:专知 本文为书籍介绍,建议阅读5分钟使用R和强大的Keras库从头开始进行深度学习! R深度学习,第二版 使用R和强大的Keras库从头开始进行深度学习! 在R深度学习第二版中,您将学习: 从基 ...
- 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站竟因「太火」而下线...
机器之心报道 作者:魔王.杜伟 想不想在动画电影中拥有自己的角色?这个网站一键满足你的需求,不过竟因流量太大成本过高而下线. 近期热映的电影<花木兰>总是让人回想起 1998 年上映的同名 ...
- 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结
一.前言 对于在Deep Learning的学习中总会有几个数据类型的转换,这次想把这些常用的转换做一个总结,方便以后看. 这些主要包括:Dataframe.Series(pandas), array ...
- 自然语言处理:计算机学习人类语言的新方法
自然语言处理(Natural Language Processing,简称NLP)是计算机科学和人工智能领域的一个重要分支,它旨在让计算机能够理解.分析和生成自然语言.NLP的应用场景非常广泛,包括机 ...
最新文章
- 用java编写战舰 游戏吗_java – 战舰游戏 – 船舶重叠
- 64位内核第一讲,和32位内核的区别
- matlab获取标量
- openresty开发系列16--lua中的控制结构if-else/repeat/for/while
- centos7下端口映射
- python 获取本机IP的三种方式
- tomcat提高图片服务器性能,Tomcat性能调优(windows)
- 逆向工程核心原理读书笔记-API钩取之隐藏进程(二)
- Chromium下载各类版本(pyppeteer爬虫)
- SpringBoot定义全局统一业务异常,且处理filter里面的异常
- flask(四)jinja2模板
- FreeBSD NetBSD OpenBSD DragonFlyBSD 操作系统
- PHP使用MySQL数据库
- 【转】Ubuntu 16.04安装配置TensorFlow GPU版本
- .bat批处理命令常用操作
- systrace简介
- rtsp开源视频播放器VideoLAN
- java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
- 【工程光学】理想光学系统
- Android流式布局FlowLayout,一款针对Tag的布局