一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法与流程
本发明涉及语音合成,语音转换领域,更具体地,涉及一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法。
背景技术:
随着人工智能领域的快速发展,智能语音交互,个性化语音生成等技术吸引了人们的广泛关注。语音转换作为其中的一项重要技术,涉及信号处理、深度学习、语音学等多方面学科领域,是目前语音交互的热点和难点。语音转换通常是指把源说话人的个性化特征转换成目标说话人的个性化特征,保持说话的内容不变。个性化特征包括语音的频谱、韵律等信息,本质是使转换后的语音在听觉上像目标说话人的语音。
传统的语音转换方法是对源和目标说话人语音进行统计理论分析,通过参数映射方式实现。方法从线性映射到非线性映射,数据从平行语料到平行语料过渡。但是,需要大量的平行语料。平行语料的获取难度大,成本高,这给技术应用造成极大困难和不便;多数方法是一对一的语音转换,对于多对多的语音转换,需要重复训练,效率不高。
专利cn103886859b,公开日为2014.06.25,公开了一种一对多码书映射的语音转换方法,采用矢量量化的方法减少源与目标语音的特征数量,然后将最接近源码书的质心矢量通过聚类方法转换成相应的目标码书,从而实现语音转换。但由于这种方法在量化时会导致特征空间的不连续,且忽略了帧与帧之间的信息,所以转换效果不够理想。
技术实现要素:
本发明为克服上述现有技术中的至少一个缺陷,提供一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法,实现多对多语音转换,成本低,效率高。
为解决上述技术问题,本发明采用的技术方案是:一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法,包括以下步骤:
s1.数据增强:采用文字到语音的多说话人语音合成模块生成平行语料;
s2.语音信号的特征提取:对于生成的平行语料,进行提取原音频和目标音频的声学特征;
s3.对说话人的身份特征进行编码,得到代表说话人身份的声纹特征向量;
s4.利用序列到序列的语音转换模型对步骤s2的声学特征和步骤s3的声纹特征向量进行训练,序列到序列的语音转换模型采用的是编码器和解码器的神经网络进行训练的,在训练阶段,语音转换模型的输入是步骤s2提取的源说话人语音声学特征和步骤s3提取的目标说话人身份编码声纹特征向量,输出的是目标说话人的mel谱,最终让语音转换模型学会源说话人声学特征映射到目标说话人的声学特征;在测试阶段,直接输入源说话人的mel谱和任意目标说话人声纹特征向量,语音转换模型自动转换成任意目标说话人的mel谱;
s5.采用声码器模块对步骤s3的mel谱进行转换,输出重构语音的时域波形。
在其中一个实施例中,所述的步骤s1中,语音合成模块是建立在tacotron2基础上的端到端多说话人合成;所述的语音合成模块具体包括以下步骤:
s11.输入一串文字,经过文字转音素的前端处理转换成音素,作为tacotron2的真正输入;
s12.tacotron2将输入的音素经过词嵌入层得到高维字符特征,然后依次经过卷积神经网络,循环神经网络编码成高维信息,最后经过带有注意力机制的解码器,一次一步自回归的解码成mel谱;且得到的mel谱不转换成音频。
在其中一个实施例中,所述的步骤s3中声学特征选择梅尔频谱;所述的梅尔频谱特征的提取具体包括以下步骤:
s21.每条语音信号先降采样到16k,经过预加重、分帧、加窗处理;
s22.对语音信号序列进行短时傅里叶变换,得到幅度谱;
s23.对生成的频率频谱图通过梅尔滤波器组得到梅尔频谱,对频谱结果取模,再取10倍的对数值,转换成db大小,最后通过一个滤波器组得到mel谱。
在其中一个实施例中,所述的步骤s3中,是在说话人识别中对说话者的语音进行提取声纹特征向量;说话人识别任务与文本无关,说话人的音频输入到模型中后,被模型自动分类成是哪一个说话人。
在其中一个实施例中,说话人识别包括训练阶段和测试阶段,所述的训练阶段包括:
s311.语音信号经过预加重,分帧加窗,短时傅里叶变换,再经过梅尔滤波器组得到mel谱;
s312.卷积神经网络对mel谱进行深层次的特征提取,输出一个固定维度的声纹特征向量;
s313.利用判别器判断是哪一个人说话;
所述的测试阶段包括:
s321.某个人的语音信号经过预加重,分帧加窗,短时傅里叶变换,再经过梅尔滤波器组得到mel谱;
s322.卷积神经网络对mel谱提取高层次的固定维度的声纹特征向量,输出这个声纹特征向量,能够表征说话人身份信息。
在其中一个实施例中,所述的判别器是一些全连接层,输出维度是说话人的个数,它的值是一个概率,某个维度概率越大,网络就判别为哪一个人。
在其中一个实施例中,所述的序列到序列的语音转换模型的训练阶段具体包括:
s411.源说话人的每帧mel谱经过编码器编码成隐向量,把mel谱映射到高维空间;
s412.隐向量、源说话人的声纹特征向量和目标说话人的声纹特征向量这三者一起输入到解码器中,最终输出三者拼接在一起后的结果;
s413.解码是一个自回归的过程,一次解码一帧信息,上次解码的输出作为下一次解码的输入,由解码器自动判断解码是否停止;上一个时间步的输出mel谱yi-1经过前置全连接层得到中间变量pyi-1;
s414.pyi-1和上一个时间步的文本向量ci-1拼接在一起喂入循环神经网络,选择2层长短期记忆人工神经网络lstm,输出当前时间步的隐状态si;
s415.隐状态si和步骤s42的输出以及上个时间步的累加文本向量pci-1一起计算注意力权重,得到当前时间步的文本向量ci和当前的累加文本向量pci;
s416.文本向量ci和隐状态si一起输入到一个线性预测层,得到预测的mel谱,另一个线性预测层用来判断是否停止生成mel谱,输出0或1,1代表停止;
s417.得到的mel谱经过后置卷积神经网络和残差连接,捕获前后帧上下文之间的关系,提高预测mel谱的质量;
s418.每次设置预测一帧mel谱,训练时,上一个时间步的输出,不作为下一个时间步的输入,而是用真实对应帧的mel谱;不断重复步骤s413、s414、s415、s16、s417的过程。
在其中一个实施例中,所述的序列到序列的语音转换模型的测试阶段具体包括:
s421.提取源说话人一条语音的mel谱;
s422.提取源说话人的声纹特征向量和目标说话人的声纹特征向量,拼接在编码器的输出;
s423.重复训练过程中s413、s414、s415、s16、s417的过程,唯一不同的是测试时没有真实对应帧的mel,用上一个时间步输出的mel谱作为下一个时间步的输入,是一个自回归的过程。
在其中一个实施例中,语音转换模型的损失函数包括四个loss,在线性预测之后的mel谱和真实的mel谱进行一个前向mse的loss的计算,在后置的卷积层得到的mel谱与真实的mel谱计算一个mse的后向loss,预测的停止标签和真实的停止标签计算一个crossentropyloss,最后外加一个参数正则化;参数优化过程一开始设置较大的学习率,然后前向传播,计算总的loss,后向传播,更新参数;随着迭代次数的增加不断减小到0.00001。
在其中一个实施例中,所述的声码器采用能够把频域特征转换成时域波形的神经网络wavernn,wavernn模型结构采用单层循环神经网络以及双softmax层;语音转换的mel谱作为wavernn模型的输入,输出为重构语音的波形。
与现有技术相比,有益效果是:
1.本发明可以解决缺少平行语料数据的问题,降低了在应用中的实际成本和难度;
2.本发明算法使用深度学习算法,利用大数据驱动的方式相对于传统算法效果更佳;
3.本发明把源说话人特征映射到目标说话人特征,使用高端的神经网络声码器wavernn重构语音波形,比传统声码器world更好;
4.本发文利用说话人验证任务的模型产生说话人的声纹特征,两个说话人声纹特征作为条件输入到模型中,指导模型实现任意人之间的语音转换。
综上,本文发明提供的一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法,利用深度学习技术对语音特征建模,实现语音转换。解决缺少平行语料的问题,用多说话人的语音合成技术产生大量平行语料,降低了成本和难度。源说话人和目标说话人的双身份特征作为条件输入,从而实现多对多的语音转换。
附图说明
图1是本发明方法流程图。
图2是本发明整体模型的框架示意图。
图3是本发明多说话人语音合成示意图。
图4是本发明语音信号特征提取的流程示意图。
图5是本发明说话人识别流程示意图。
图6是本发明序列到序列的语音转换模型结构示意图。
具体实施方式
如图1、2所示,一种基于双声纹特征向量和序列到序列建模的多对多语音转换方法,包括以下步骤:
s1.数据增强:采用文字到语音的多说话人语音合成模块生成平行语料;平行语料是指源说话人和目标说话人说话的内容是一致的;由于缺少大量平行语料数据,采用文字到语音的多说话人语音合成技术产生平行语料;
s2.语音信号的特征提取:对于生成的平行语料,进行提取原音频和目标音频的声学特征;
s3.对说话人的身份特征进行编码,得到代表说话人身份的声纹特征向量;
s4.利用序列到序列的语音转换模型对步骤s2的声学特征和步骤s3的声纹特征向量进行训练,序列到序列的语音转换模型采用的是编码器和解码器的神经网络进行训练的,在训练阶段,语音转换模型的输入是步骤s2提取的源说话人语音声学特征和步骤s3提取的目标说话人身份编码声纹特征向量,输出的是目标说话人的mel谱,最终让语音转换模型学会源说话人声学特征映射到目标说话人的声学特征;在测试阶段,直接输入源说话人的mel谱和任意目标说话人声纹特征向量,语音转换模型自动转换成任意目标说话人的mel谱;
s5.采用声码器模块对步骤s3的mel谱进行转换,输出重构语音的时域波形。
本发明用多说话人的语音合成技术生成大量的平行预料,这为模型的训练提供了极大的方便。然后使用序列到序列的神经网络对输入的源说话人特征建模映射到目标说话人特征。为了实现多对多的语音转换,本发明使用说话人验证任务的模型产生表征说话人身份的声纹特征向量。源说话人和目标说话人的声纹特征向量作为辅助信息加入序列到序列的模型中去。经过模型训练测试,本发明能够取得不错的效果。
在其中一个实施例中,如图3所示,所述的步骤s1中,语音合成模块是建立在tacotron2基础上的端到端多说话人合成;所述的语音合成模块具体包括以下步骤:
s11.输入一串文字,经过文字转音素的前端处理转换成音素,作为tacotron2的真正输入;
s12.tacotron2将输入的音素经过词嵌入层得到高维字符特征,然后依次经过卷积神经网络,循环神经网络编码成高维信息,最后经过带有注意力机制的解码器,一次一步自回归的解码成mel谱;且得到的mel谱不转换成音频。得到的mel谱并不转换成音频,因为mel谱可直接作为语音转换模型的输入,不转换的目的是尽量减少合成数据的损失。
在其中一个实施例中,为了符合人的人耳听觉特性,所述的步骤s3中声学特征选择梅尔频谱,将一维的语音信号转换成二维的声学特征,让模型更好的对特征建模;如图4所示,所述的梅尔频谱特征的提取具体包括以下步骤:
s21.每条语音信号先降采样到16k,经过预加重、分帧、加窗处理;由于语音的低频段能量较大,能量主要分布在低频段,预加重是起到了提升高频的作用。这里预加重系数为0.97。语音信号在宏观上是不平稳的,在微观上是平稳的,具有短时平稳性,一般10~30ms为一帧,对语音分帧后,需要加窗是为了避免出现吉布斯效应。加窗时,原本没有周期性的语音信号呈现出周期函数的部分特征。其中,窗长800,窗移200,窗函数为汉明窗。
s22.对语音信号序列进行短时傅里叶变换,得到幅度谱;短时傅里叶变换是一种在音频处理领域常用的时频变换工具,将时域的波形转换成频谱图。其中,fft点数设置为800。
s23.对生成的频率频谱图通过梅尔滤波器组得到梅尔频谱,频率尺度变换到梅尔尺度,它的特点是在低频位置有较高的幅值,较窄的频宽。随着频率的升高,三角滤波器的幅值逐渐降低,频宽逐渐下降。这样的设置是符合人耳的听觉特性。对频谱结果取模,再取10倍的对数值,转换成db大小,最后通过一个滤波器组得到mel谱,其中梅尔频谱设置为80。
在其中一个实施例中,所述的步骤s3中,是在说话人识别中对说话者的语音进行提取声纹特征向量;说话人识别任务与文本无关,说话人的音频输入到模型中后,被模型自动分类成是哪一个说话人。
说话人识别是一种通过人的声音来识别人身份的技术。在说话人识别中对说话者的语音提取特征,让模型自动分类是哪一个说话人。本文用这种来产生说话人的声纹特征向量,它可以表征文本无关的说话人身份特征。这里的说话人识别任务是文本无关的,说话人的音频输入到模型中去,会被模型自动分类成哪一个说话人。如图5所示,spk1,spk2,spk3,…spkn代表n个不同的说话人。
在其中一个实施例中,说话人识别包括训练阶段和测试阶段,所述的训练阶段包括:
s311.语音信号经过预加重,分帧加窗,短时傅里叶变换,再经过梅尔滤波器组得到mel谱;
s312.卷积神经网络对mel谱进行深层次的特征提取,输出一个固定维度的声纹特征向量;维度为256维;
s313.利用判别器判断是哪一个人说话;判别器是一些全连接层,输出维度是说话人的个数,它的值是一个概率,某个维度概率越大,网络就判别为哪一个人。
所述的测试阶段包括:
s321.某个人的语音信号经过预加重,分帧加窗,短时傅里叶变换,再经过梅尔滤波器组得到mel谱;
s322.卷积神经网络对mel谱提取高层次的256维的声纹特征向量,输出这个声纹特征向量,能够表征说话人身份信息。
在其中一个实施例中,如图6所示,序列到序列的语音转换模型的训练阶段具体包括:
s411.源说话人的每帧mel谱经过编码器编码成隐向量,把mel谱映射到高维空间;
s412.隐向量、源说话人的声纹特征向量和目标说话人的声纹特征向量这三者一起输入到解码器中,最终输出三者拼接在一起后的结果;
s413.解码是一个自回归的过程,一次解码一帧信息,上次解码的输出作为下一次解码的输入,由解码器自动判断解码是否停止;上一个时间步的输出mel谱yi-1经过前置全连接层得到中间变量pyi-1;
s414.pyi-1和上一个时间步的文本向量ci-1拼接在一起喂入循环神经网络,选择2层长短期记忆人工神经网络lstm,输出当前时间步的隐状态si;
s415.隐状态si和步骤s42的输出以及上个时间步的累加文本向量pci-1一起计算注意力权重,得到当前时间步的文本向量ci和当前的累加文本向量pci;
s416.文本向量ci和隐状态si一起输入到一个线性预测层,得到预测的mel谱,另一个线性预测层用来判断是否停止生成mel谱,输出0或1,1代表停止;
s417.得到的mel谱经过后置卷积神经网络和残差连接,捕获前后帧上下文之间的关系,提高预测mel谱的质量;
s418.每次设置预测一帧mel谱,训练时,上一个时间步的输出,不作为下一个时间步的输入,而是用真实对应帧的mel谱;不断重复步骤s413、s414、s415、s16、s417的过程。
序列到序列的神经网络模型非常适合种语音转换的特点,输出和输入的长度都是动态的,基本的框架由编码器和带有注意力机制的解码器组成。其中:
编码器由一层双向长短期记忆(blstm)网络组成,它能够捕捉上下文信息,解决长期依赖问题。双向长短期记忆网络是循环神经网络的一种,前向层能记忆过去发生的信息,后向层记忆未来发生的信息。语音信号帧与帧之间密切相关,非常适合采用blstm来编码信息。
注意力机制,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。为了合理利用有限的视觉信息处理资源,人类需要选择视觉区域中的特定部分,然后集中关注它。为了模仿视觉特性,注意力机制层是让网络自己学习关注输入的特定部分信息。这里的注意力机制是采用位置敏感的注意力机制。
前置全连接层是两层全连接层,直接是线性运算,用于捕获上个时间步的输出瓶颈信息。
线性预测层,一个是预测mel谱,一个是输出0或1用于判断是否停止预测mel谱。
后置卷积层,是5层卷积神经网络加1层全连接层,能对线性输出的mel谱更好的重构。因为卷积层能够捕获前后语音帧之间的关系。
在其中一个实施例中,所述的序列到序列的语音转换模型的测试阶段具体包括:
s421.提取源说话人一条语音的mel谱;
s422.提取源说话人的声纹特征向量和目标说话人的声纹特征向量,拼接在编码器的输出;
s423.重复训练过程中s413、s414、s415、s16、s417的过程,唯一不同的是测试时没有真实对应帧的mel,用上一个时间步输出的mel谱作为下一个时间步的输入,是一个自回归的过程。
在其中一个实施例中,语音转换模型的损失函数包括四个loss,在线性预测之后的mel谱和真实的mel谱进行一个前向mse的loss的计算,在后置的卷积层得到的mel谱与真实的mel谱计算一个mse的后向loss,预测的停止标签和真实的停止标签计算一个crossentropyloss,最后外加一个参数正则化;参数优化过程一开始设置较大的学习率0.001,然后前向传播,计算总的loss,后向传播,更新参数;随着迭代次数的增加不断减小到0.00001。
在其中一个实施例中,为了使获得高质量语音,后端声码器采用wavernn,它是一种能够把频域特征转换成时域波形的神经网络。模型的结构采用单层循环神经网络以及双softmax层,合成音频质量可接近最先进的wavenet模型。语音转换的mel谱作为wavernn模型的输入,输出为重构语音的波形。
为了方便理解,举例说明语音转换的过程。假设已经有一批多人的语音数据s,但是大部分是不平行的。目标是给一条说话人a的语音,要转换成说话人b的语音。具体流程如下:
(1)用多说话人的语音合成技术对已有的多人语音数据生成平行语料,给语音转换模型准备训练数据。
(2)把s的语音进行特征提取,降采样到16k,预加重,分帧加窗之后做短时傅里叶变换,对变换结果取模,然后取10倍的log10,再经过梅尔滤波器组,得到mel谱。其中,预加重系数0.97,帧长800,窗长800,帧移200,fft的点数800,mel谱的维度设置成80。
(3)用开源的大量的说话人数据训练说话人识别系统,模型训练完成后保存。测试时对测试的语音经过身份编码器,产生一个256维的代表声纹特征向量。
(4)对于每一条匹配的平行语料,源的mel谱和源说话人、目标身份声纹特征向量作为输入,真实的目标mel谱作为输出,按照前面介绍的训练流程,完成模型的训练。
(5)对于转换阶段,按照相同的参数配置,提取a语音的mel谱,a语音的声纹特征向量,随机选取b的一条声纹特征向量,输入到(4)训练好的模型中去,产生b的mel谱。
(6)对于b的mel谱,用训练好的声码器wavernn重构语音音频。
到此整个转换过程完成,得到a的语音转换为b的语音,说话的内容保持不变。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除