首页 > 乐器声学 专利正文
一种多人语音分离方法及语音分离模型的训练方法与流程

时间:2022-02-18 阅读: 作者:专利查询

一种多人语音分离方法及语音分离模型的训练方法与流程

1.本发明涉及多人语音分离领域,特别涉及一种多人语音分离方法及语音分离模型的训练方法。


背景技术:

2.目前在语音分离领域中,基于数据驱动的深度学习方法已经超越了传统信号处理的算法,其高度的非线性建模能力会在任务中取得较好的效果。在深度学习的方法中,由于循环神经网络(rnn)有着天然的时序依赖的特性,特别适合用来描述自然语言和时间序列中有序列关系的输入数据,它是现代智能语音处理系统中的一个重要组成部分,特别是lstm和gru,它们的循环连接对于学习语音的长序列关系和正确管理语音上下文至关重要。但是,由于rnn下一步的计算依赖于上一步输出的隐含状态,下一层只有等到上一层输出之后才能进行计算,其固有的循环顺序性质不利于模型计算的并行性,尤其在处理长序列的大型数据集中尤为明显。另外一方面,对语音信号的处理一般会变换到频域进行分析,近几年逐渐流行采用编解码结构直接在时域上进行处理,这种结构的编码器将待处理的整个语音序列进行信息压缩,形成一个固定长度向量,再对这个向量进行解码得到目标数据,这个固定长度的语音向量是编码器和解码器之间的唯一联系,所以如果对输入编码器的语音数据序列特征提取不足,会导致解码出来的目标语音的准确率也难以提升,因此亟需对其改进以提升其准确率和运算效率。


技术实现要素:

3.为了克服现有技术存在的不足,本发明提供了一种多人语音分离方法及语音分离模型的训练方法,所述技术方案如下:
4.一方面,本发明提供了一种多人语音分离方法,包括以下步骤:
5.s1、将n个人的混合语音数据输入编码器处理以输出三维的特征张量x1;
6.s2、对特征张量x1进行组归一化处理、卷积操作和分段处理,以得到多段特征信息;
7.s3、将所述特征信息输入到自注意力块中处理,以对其进行分离函数映射;
8.s4、将分离函数映射后的结果经过第一激活函数处理、卷积操作后进行重叠操作,得到特征张量x2,且所述特征张量x2的长度与步骤s1中特征张量x1的长度相同;
9.s5、对步骤s4中的特征张量x2进行卷积操作后分别经过第二激活函数和第三激活函数的处理,以得到特征张量x3和特征张量x4;
10.s6、对所述特征张量x3和特征张量x4作乘积运算后进行卷积操作和第四激活函数处理,以得到特征张量x5;
11.s7、将所述特征张量x5的数据分为n份后,分别与所述特征张量x1进行乘积操作,以分离出不同说话人的特征数据,将分离出的特征数据输入解码器以输出单个人的语音信号。
12.进一步地,在步骤s3中,所述自注意力块中处理所述特征信息包括以下步骤:
13.s301、所述特征信息分别通过查询卷积和键卷积处理以分别得到输出结果,对所述输出结果进行相似度计算以得到相应权重参数;
14.s302、使用第五激活函数对所述权重参数进行归一化处理;
15.s303、将经过值卷积处理后的所述多段特征信息与步骤s302中的处理结果进行加权求和以得到自注意力输出特征;
16.s304、将所述自注意力输出特征经过双向长短时记忆网络层和全连接层处理后输出;
17.s305、将步骤s304中输出的结果与步骤s301中的所述特征信息进行拼接输出。
18.进一步地,在步骤s305后还包括
19.s306、将步骤s305拼接输出的结果作为特征信息,重复执行步骤s301

s305再输出。
20.进一步地,在步骤s2中分段处理包括:将经过组归一化处理和卷积操作的特征张量x1按块大小为k、块移为p分成s个块,并对最后一个块进行填充操作。
21.进一步地,在步骤s1中编码器处理混合语音数据包括以下步骤:
22.将混合语音数据作为输入数据,进行卷积操作,然后进行归一化操作,并使用relu激活函数将所有负值置为0,整数原样输出,以得到一个三维的特征张量x1。
23.进一步地,在步骤s7中解码器解码特征数据包括:将所述特征数据进行归一化操作,然后进行相应的反卷积操作后输出。
24.进一步地,所述第一激活函数为prelu激活函数,所述第二激活函数为tanh激活函数,所述第三激活函数为sigmoid激活函数,所述第四激活函数为relu激活函数,所述第五激活函数为softmax激活函数。
25.另一方面,本发明提供了一种语音分离模型的训练方法,所述语音分离模型采用编码器、分离器和解码器的分离结构,所述编码器采用卷积、归一化和激活函数对多人混合语音数据进行特征提取,以得到相应的特征张量;所述分离器对所述编码器输出的特征张量进行分段,并采用自注意力机制,建立输入序列中某一段数据相对于其它分段数据之间的联系,以进行并行计算分离出单人语音数据;所述解码器采用归一化和逆卷积对分离出的单人语音数据进行解码,以得到相应的单人语音信号;
26.所述训练方法包括以下步骤:
27.p1、获取多个单人语音音频数据和其混合形成相应的混合语音音频数据,分别提取所述混合语音音频数据和单人语音音频数据中的波形点数据到张量中,以作为所述语音分离模型训练时输入数据中的特征数据和标签数据;
28.p2、将所述特征数据和标签数据输入初始化后的所述语音分离模型,并进行模型训练和评估验证,使用优化器调节梯度,再根据标签特征和所述语音分离模型分离出的单人语音信号,计算模型训练的损失值,并将每次训练的损失值进行反向传播计算;
29.p3、在模型训练的过程中对模型参数求范数,并结合使用所述优化器更新参数,以得到优化后的模型。
30.进一步地,将获取的数据分为训练集和验证集,所述训练集和验证集均含有对应的单人语音音频数据和混合语音音频数据,使用所述训练集内的数据进行模型训练学习,
使用所述验证集内的数据进行模型评估验证。
31.进一步地,在步骤p1中,通过torchaudio库提取语音音频数据中的波形点数据到张量中。
32.本发明提供的技术方案带来的有益效果如下:
33.(1)基于时域进行语音分离,不需要使用傅里叶变换,具备较小的延迟,不存在相位缺失的情况;
34.(2)数据计算不依赖时序关系,能够很容易地进行并行计算,提升模型的训练效率;
35.(3)主要利用矩阵的乘法作为运算方式,简化了模型结构。
附图说明
36.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1是本发明实施例提供的多人语音分离方法中语音分离模型总体结构示意图;
38.图2是本发明实施例提供的多人语音分离方法中自注意力块内部结构示意图;
39.图3是本发明实施例提供的多人语音分离方法中自注意力层内部结构示意图;
40.图4是本发明实施例提供的多人语音分离方法中自注意力块内部流程图;
41.图5是本发明实施例提供的语音分离模型的训练方法中训练过程示意图。
具体实施方式
42.为了使本技术领域的人员更好地理解本发明方案,更清楚地了解本发明的目的、技术方案及其优点,以下结合具体实施例并参照附图对本发明实施例中的技术方案进行清楚、完整地描述。需要说明的是,附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。除此,本发明的说明书和权利要求书中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
43.在本发明的一个实施例中,提供了一种多人语音分离方法,包括以下步骤:
44.s1、将n个人的混合语音数据输入编码器处理以输出三维的特征张量x1;
45.具体地,将混合语音数据作为编码器的输入数据,进行卷积操作,然后进行归一化操作,并使用relu激活函数将所有负值置为0,整数原样输出,以得到一个三维的特征张量x1;
46.s2、对特征张量x1进行组归一化处理、卷积操作和分段处理,以得到多段特征信
息;
47.具体地,所述分段处理包括将经过组归一化处理和卷积操作的特征张量x1按块大小为k、块移为p分成s个块,并对最后一个块进行填充操作。
48.s3、将所述特征信息输入到自注意力块中处理,以对其进行分离函数映射;
49.其中,所述自注意力块中处理所述特征信息包括:
50.s301、所述特征信息分别通过查询卷积和键卷积处理以分别得到输出结果,对所述输出结果进行相似度计算以得到相应权重参数;
51.s302、使用第五激活函数对所述权重参数进行归一化处理;
52.s303、将经过值卷积处理后的所述多段特征信息与步骤s302中的处理结果进行加权求和以得到自注意力输出特征;
53.s304、将所述自注意力输出特征经过双向长短时记忆网络层和全连接层处理后输出;
54.s305、将步骤s304中输出的结果与步骤s301中的所述特征信息进行拼接输出。需要说明的是步骤s305中拼接输出的结果可以直接输出至下一步,也可以将步骤s305拼接输出的结果作为特征信息,重复循环执行一次或者多次步骤s301

s305再输出。
55.s4、将分离函数映射后的结果经过第一激活函数处理、卷积操作后进行重叠操作,得到特征张量x2,且所述特征张量x2的长度与步骤s1中特征张量x1的长度相同;
56.s5、对步骤s4中的特征张量x2进行卷积操作后分别经过第二激活函数和第三激活函数的处理,以得到特征张量x3和特征张量x4;
57.s6、对所述特征张量x3和特征张量x4作乘积运算后进行卷积操作和第四激活函数处理,以得到特征张量x5;
58.s7、将所述特征张量x5的数据按序分为n份后,分别与所述特征张量x1进行乘积操作,以分离出不同说话人的特征数据,将分离出的特征数据输入解码器以输出单个人的语音信号。其中,解码器将所述特征数据进行归一化操作,然后进行相应的反卷积操作后直接输出,也可以将该输出数据再次作为特征数据重复循环执行一次或多次相应的归一化和反卷积的操作。
59.所述多人语音分离方法在在编解码结构框架中引入自注意力机制进行语音分离任务,计算编码器的输出对解码器贡献的权重,计算加权平均后解码器的输出。使用自注意力机制来描述时间序列的上下文相关性,有效解决传统循环神经网络无法对长时间序列建模的问题,使得模型可以并行运算,同时也方便了程序的优化,能够获得更大的加速比。
60.在本实施例中,所述第一激活函数优选为prelu激活函数,所述第二激活函数优选为tanh激活函数,所述第三激活函数优选为sigmoid激活函数,所述第四激活函数优选为relu激活函数,所述第五激活函数为softmax激活函数。
61.在步骤s1之前,需要进行语音数据集准备,语音数据集包括训练集、验证集、测试集三部分,均是多个目标说话人的语音音频数据,均是单通道音频,采样率为16khz,采用wav格式的音频文件,但并不限定于此,每个部分中包括多个单人的纯净语音数据,以及其相应的混合语音数据。
62.参见图1,下面以两人混合语音为例进行语音分离:
63.a.在编码器中,将混合语音数据作为输入数据mix,分别使用1
×
512的卷积层、512
×
256的卷积层对输入数据mix进行一维的卷积操作,然后对操作后的数据进行归一化操作,并使用relu激活函数将所有的负值置为0,整数原样输出,从而得到一个三维的特征张量x1;
64.b.将编码器的输出特征张量x1作为输入数据输入到分离器,在分离器中,首先采用组归一化对特征张量x1作数据标准化处理,并对结果使用一个256
×
64的一维卷积操作。
65.c.在步骤b的基础下,进行分段处理,将三维张量x1按块大小为k、块移为p分成s个块,其中k可以是200、250、300,块移p采用k/2,同时为了均匀分块,采用padding对最后一个块进行填充操作。
66.d.然后将分段后的特征张量输入到自注意力块中,对其进行进一步的分离函数映射,参见图2,在自注意力块中包含2个连续的自注意力单元,所述自注意力单元包括自注意力层、双向长短时记忆网络层和全连接层。
67.在自注意力层中,参见图3和图4,定义了三个二维卷积,分别是查询卷积、键卷积、值卷积,输入的分段数据分别通过查询卷积和键卷积后的输出,并将两者的输出结果进行相似度计算得到权重,然后使用softmax激活函数对这些权重进行归一化处理,接着将处理后的权重和经过值卷积处理后的分段数据,进行加权求和以得到最后的自注意力输出特征,最后将该特征输入到双向长短时记忆网络层和全连接层,实现对特征数据的序列化建模以及分类作用,并对前层的特征进行一个加权求和,然后将结果再经过一次自注意力层、双向长短时记忆网络层和全连接层后输出。
68.e.对步骤d的输出结果依次经过prelu激活函数、64
×
128的二维卷积操作之后,再对s个块进行重叠相加操作,重叠相加是步骤c中分段处理的逆过程,是将s个块按块移p来重叠相加块大小为k的块,恢复成步骤b中编码器的特征张量x1的长度。
69.f.将步骤e的输出结果分别进行64
×
64的一维卷积和tanh激活函数处理,以及64
×
64的一维卷积和sigmoid激活函数处理之后,分别得到特征张量x3、x4,再将特征张量x3和特征张量x4作乘积运算,再对其结果使用64
×
256的卷积层进行一维卷积、relu激活函数处理的操作,最终得到分离器的特征张量x5,特征张量x5包含n个输出张量,输出张量用out[i]表示。
[0070]
例如特征张量x5有1000个数据,这1000个数据由n个数组组成,x5=[out[1],out[2],out[3]

out[n]],0<i≤n,n表示混合语音的说话人个数,对应的数组out[i]分别对应分离后的第i个人的分离语音,每个数组包含的数值个数相同。比如对两个人的混合语音分离,第一个数组作为输出张量out[1]对应第一说话人,第二个数组作为输出张量out[2]对应第二说话人。本发明不限定以等分方式得到各个说话人的输出张量,比如还可以根据预设的规则将特征张量x5的不同段数据分割组成一个说话人的输出张量,或者,对特征张量x5进行维度变换,得到分别对应各个说话人的输出张量的变换结果。
[0071]
g.在解码器中,输出张量out[i]和编码器输出的特征张量x1作乘积运算,然后将结果分别进行归一化处理之后再分别使用256
×
512的一维反卷积层和512
×
1的一维反卷积层进行反卷积操作,从而将编码特征数据还原成第i个说话人的语音信号。需要注意的是解码器中的反卷积操作与编码器中的卷积操作相对应。
[0072]
本实施提供的多人语音分离方法基于自注意力机制的计算模式,该模式能建立输入序列中某一段数据相对于其他所有段数据之间的联系,模型算法的数据计算不依赖时序
关系,能够很容易地进行并行计算,提升模型的训练效率;在算法的计算过程中的主要运算方式是矩阵的乘法,可简化模型结构。加入自注意力机制的编解码器,在不同时刻通过产生不同的语义向量,将原有的固定的语义向量替换成根据时间变化而不断变化的语义表示,解决了编解码模型结构中语义向量固定的问题。
[0073]
在本发明的一个实施例中,提供了一种语音分离模型的训练方法,参见图5,所述语音分离模型采用编码器

分离器

解码器的分离结构,将训练集内的混合语音数据输入至语音分离模型,该语音分离模型为自注意力机制语音分离模型(self

attention speech separation),记作sasep网络模型,所述编码器采用卷积、归一化和激活函数对多人混合语音数据进行特征提取,以得到相应的特征张量;所述分离器对所述编码器输出的特征张量进行分段,并采用自注意力机制,建立输入序列中某一段数据相对于其它分段数据之间的联系,以进行并行计算分离出单人语音数据;所述解码器采用归一化和逆卷积对分离出的单人语音数据进行解码,以得到相应的单人语音信号;
[0074]
具体地,所述语音分离模型采用多个不同尺寸的一维卷积、归一化、relu激活函数构建编码器,对语音数据进行特征提取;采用多个串联在一起的自注意力层、双向长短时记忆网络层和全连接层来构建分离器中的自注意力块,使用两个跳跃连接来缓解梯度消失的问题,也有助于梯度的反向传播和加快训练过程;分离器通过模型的自我学习,不断更新模型学习的权重和参数值,拟合出分离混合语音的映射函数从而实现对混合语音数据的分离功能。在解码器中,通过采用归一化和多个不同尺寸的一维逆卷积,将分离得到的不同说话人的语音数据作为其输入数据进行解码工作,从而得到说话人的语音波形。最后,将分离器的输出与编码器的输出作乘积运算之后,将每个说话人的语音数据输入到解码器中逐个进行解码工作,从而实现从混合语音中分离出多个说话人的语音数据。
[0075]
所述语音分离模型的训练方法包括以下步骤:
[0076]
p1、获取多个单人语音音频数据和其混合形成相应的混合语音音频数据,分别提取所述混合语音音频数据和单人语音音频数据中的波形点数据到张量中,以作为所述语音分离模型训练时输入数据中的特征数据和标签数据;
[0077]
p2、将所述特征数据和标签数据输入初始化后的所述语音分离模型,并进行模型训练和评估验证,使用优化器调节梯度,再根据标签特征和所述语音分离模型分离出的单人语音信号,计算模型训练的损失值,并将每次训练的损失值进行反向传播计算;
[0078]
p3、在模型训练的过程中对模型参数求范数,并结合使用所述优化器更新参数,以得到优化后的模型。
[0079]
其中,将获取的数据分为训练集和验证集,所述训练集和验证集均含有对应的单人语音音频数据和混合语音音频数据,使用所述训练集内的数据进行模型训练学习,使用所述验证集内的数据进行模型评估验证。
[0080]
本实施例中的语音分离模型训练采用多线程来处理数据集,以批训练的方式进行训练,具体地如下:
[0081]
a.将训练集中混合音频文件和纯净音频文件,通过torchaudio库提取语音的波形点数据到张量中,分别作为模型训练时的输入数据的特征数据和标签数据,同样地,将验证集中混合音频文件和纯净音频文件,通过torchaudio库提取语音的波形点数据到张量中,分别作为模型评估时的输入数据的特征数据和标签数据。
[0082]
b.语音分离模型在gpu上进行的训练和运算,通过编码器可以实现对语音信号的特征提取工作,从而得到特征张量,通过分离器可以实现对特征数据的有效分类,从而得到输出张量。
[0083]
需要初始化语音分离模型结构,对编码器、分离器、解码器进行初始化操作,将特征数据和标签数据载入已初始化的模型中,并进行模型训练和评估验证,数据在模型中的具体训练过程,参见上个实施例中的步骤a

步骤g;
[0084]
使用optimizer优化器将梯度置为0,再根据标签特征和模型的输出的语音信号,分别计算模型训练和模型验证的损失值,并将每次训练的损失值进行反向传播计算。
[0085]
c.在模型训练的过程中采用默认的l2类型(其最大范数设置为5)对模型参数求范数以及使用优化器(其采用adam进行优化)来更新所有的参数。
[0086]
所述语音分离模型的训练方法通过构建深度学习模型来实现对混合语音数据的分离功能,采用卷积编码的方式对语音数据先进行编码工作,进而对提取到的特征使用分离器分离不同说话人的语音数据,最后通过解码器将特征数据还原成语音波形。该模型是基于时域的语音分离方法,相比于基于频域的语音分离方法,它不需要使用傅里叶变换,所以它更具备较小的延迟,而且不存在相位缺失的概念。
[0087]
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。