语音处理系统和处理语音信号的方法与流程
本发明涉及语音处理系统、用于生成说话者矢量的系统、处理语音信号的方法、生成说话者矢量的方法、训练语音信号处理系统的方法以及训练系统以生成说话者矢量的方法。
背景技术:
口语翻译系统具有各种应用,例如电话会议和视频或音频录制的配音翻译(voice-overtranslation)。已知各种口语翻译系统。这类系统可以使用例如语音识别、文本到文本的翻译和文本到语音的处理步骤。持续需要改进这种口语翻译系统。
附图说明
现在将参考附图描述根据非限制性实施例的系统和方法,其中:
图1示出了根据实施例的用于处理语音信号的系统的示意图;
图2(a)示出了根据实施例的语音处理系统中包括的处理阶段的流程图;
图2(b)示出了根据实施例的在语音处理方法中执行的步骤的流程图;
图3示出了根据实施例的用于生成说话者矢量的系统的示意图;
图4示出了根据实施例的在语音处理系统中使用的语音合成模块的示意图;
图5示出了根据实施例的由在语音处理系统中使用的语音合成系统执行的步骤的流程图;
图6是根据实施例的在训练语音处理系统的方法中使用的语音合成模块的训练过程的阶段的示意图;
图7示出了根据实施例的训练语音合成系统的方法的流程图;
图8示出了根据实施例的训练系统以生成说话者矢量的方法的流程图;
图9是根据实施例的用于训练语音处理系统的训练过程的阶段的示意图;
图10是根据实施例的训练语音信号处理系统的方法的流程图;
图11是示出根据实施例的语音处理系统中包括的处理阶段的流程图;
图12示出了根据实施例的训练过程的示意图;
图13是示出根据实施例的语音处理系统中包括的处理阶段的流程图;
图14示出了根据实施例使用的训练语音合成系统的方法;
图15示出了根据实施例的语音处理系统中包括的处理阶段的流程图;
图16示出了源语言话语中的每个单词与目标语言话语中的每个单词之间的比对;
图17是计算图的示例的示意图;
图18是随着时间展开的计算图的示意图;
图19示出了根据实施例的在语音处理系统中使用的语音合成模块的示意图;
图20示出了根据实施例的训练语音信号处理系统的方法的示意图;
图21(a)示出了图20的训练方法的阶段1的示意图,而图21(b)示出了图20的训练方法的阶段2的示意图;
图22示出了生成关注权重的方法的示意图;
图23示出了根据实施例的语音处理系统中包括的处理阶段的流程图;
图24示出了根据另一实施例的语音处理系统中包括的处理阶段的流程图;
图25示出了根据另一实施例的语音处理系统中包括的处理阶段的流程图。
具体实施方式
根据实施例,提供了一种用于生成翻译语音的语音处理系统,该系统包括:
用于接收包括第二语言的第一语音信号的输入;
用于输出包括第一语言的第二语音信号的输出;以及
处理器,被配置成:
从第一语音信号的分段中生成第一文本信号,该第一文本信号包括第二语言;
从第一文本信号生成第二文本信号,该第二文本信号包括第一语言;
从第一语音信号的分段中提取多个第一特征矢量,其中该第一特征矢量包括与对应于第一语音信号的分段的音频数据有关的信息;
使用第一训练算法将第一特征矢量中的一个或多个作为输入来生成说话者矢量,其中该说话者矢量表示与说话者相对应的一组特征;
使用第二训练算法将与第二文本信号有关的信息作为输入并使用说话者矢量来生成第二语音信号分段,该第二语音信号分段包括第一语言。
从第一语音信号的分段中提取的第一特征矢量对应于第一语音信号的分段的帧。
在实施例中,音频数据包括频谱数据,例如频谱包络数据。第一特征矢量还可以包括以下一个或多个:与第一语音信号的帧的基频有关的信息,与第一语音信号的帧的非周期性有关的信息,以及与帧是浊音还是清音有关的信息。
第一语音信号的分段被输入到语音识别模块,该语音识别模块产生第一文本信号。从第一语音信号的分段生成第一文本信号包括:将第一语音信号的分段作为输入来执行语音识别,以产生输出文本信号。第一文本信号可以是输出文本信号或修改后的输出文本信号。例如,生成第一文本信号还可以包括接收对输出文本信号的修改。
第一文本信号被输入到文本到文本的翻译模块,产生第二文本信号。从第一文本信号生成第二文本信号包括:将第一文本信号作为输入来执行文本到文本的转换,以产生输出文本信号。第二文本信号可以是输出文本信号或修改后的输出文本信号。例如,生成第二文本信号还可以包括接收对输出文本信号的修改。
文本信号可以是包括实际文本的信号,或者可以替代地包括与文本有关的信息,例如音素序列。文本信号还可以包括附加信息,诸如例如时序信息。
时序信息可以用于在输出的第二语音信号内比对第二语音信号分段。
时序信息可以用于检测第一语音信号分段与第二语音信号分段之间的持续时间的差异。时序信息可以另外用于重新采样第二语音信号分段以匹配第一语音信号分段的持续时间。
第一训练算法可以包括训练神经网络。
在实施例中,第二训练算法是基于神经网络的文本到语音系统。
在实施例中,该系统是口语翻译系统,其中在基于神经网络的文本语音转换系统中,来自输入的说话者特性被保留并以不同的语言转换成输出语音。
说话者特性可以具体实施在压缩为纯文本期间丢失的输入语音的表达和语调。语音合成系统可以使用这些特征以目标语言重新创建说话者、他们的表达和语调。
在实施例中,生成第二语音信号分段包括:
将第二文本信号转换为语音单位的序列;
将语音单位转换为代表矢量,与第二文本信号有关的信息包括代表矢量;
使用第二训练算法生成多个第二特征矢量,该第二特征矢量包括与音频数据有关的信息;
从生成的第二特征矢量生成第二语音信号分段。
从生成的第二特征矢量生成第二语音信号分段可以包括使用第三训练算法,例如声码器。
在实施例中,音频数据包括频谱数据,例如频谱包络数据。第一特征矢量还可以包括以下一个或多个:与第一语音信号的帧的基频有关的信息,与第一语音信号的帧的非周期性有关的信息,以及与帧是浊音还是清音有关的信息。第二特征矢量可以包括与第一特征矢量相同的特征。
在实施例中,第二训练算法包括神经网络,其中在当前时间步长生成第二特征矢量包括:
生成代表矢量的加权组合;
生成表示加权组合的矢量;
将针对当前时间步长和一个或多个先前时间步长生成的矢量的序列与说话者矢量进行组合,以生成组合矢量;以及
将组合矢量输入到神经网络中,该神经网络针对当前时间步长输出第二特征矢量。
时间步长可以对应于输出语音信号的帧。
在实施例中,代表矢量在被输入到第二训练算法之前分别与说话者矢量进行组合。
在实施例中,使用第二训练算法生成第二语音信号分段还包括使用第一语言矢量。在实施例中,处理器还被配置成从第一文本信号生成第三文本信号,该第三文本信号包括第三语言,并且使用第二训练算法将与第三文本信号有关的信息作为输入并使用说话者矢量和第二语言矢量来生成第三语音信号分段,第二语音信号分段包括第三语言。
在实施例中,将语言矢量和说话者矢量组合以用于第二训练算法中。
在实施例中,第一训练算法输出表示针对说话者矢量中的一个或多个特征的概率分布的一个或多个参数,并且使用概率分布来生成说话者矢量。例如,参数可以包括平均值和标准偏差,并且其中概率分布是高斯分布,其中第一训练算法输出与说话者矢量中的特征相对应的平均值和标准偏差值,并且其中然后使用由平均值和标准偏差值定义的高斯分布来生成说话者矢量中的特征的值。
在实施例中,第一训练算法来生成多个说话者矢量,每个说话者矢量对应于第一语音信号的分段的不同部分。例如,每个说话者矢量可以对应于分段中的单词。处理器可以进一步被配置成生成第一文本信号中的单词与第二文本信号中的单词之间的比对信息,并且对与第二文本信号中的单词顺序相对应的说话者矢量进行重新排序。
根据另一个实施例,提供了一种用于生成说话者矢量的系统,该系统包括:
用于接收从包括第二语言的第一语音信号的分段中提取的多个第一特征矢量的输入,其中第一特征矢量包括与对应于第一语音信号的分段的音频数据有关的信息;
用于输出说话者矢量的输出;
处理器,被配置成:
使用第一训练算法将第一特征矢量中的一个或多个作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应并且与第一语言兼容的一组特征。
根据另一个实施例,提供了一种处理语音信号以生成翻译语音的方法,包括:
输入包括第二语言的第一语音信号;
从第一语音信号的分段生成第一文本信号,该第一文本信号包括第二语言;
从第一文本信号生成第二文本信号,该第二文本信号包括第一语言;
从第一语音信号的分段中提取多个第一特征矢量,其中第一特征矢量包括与对应于第一语音信号的分段的音频数据有关的信息;
使用第一训练算法将第一特征矢量中的一个或多个作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征;
使用第二训练算法将与第二文本信号有关的信息作为输入并使用说话者矢量来生成第二语音信号分段,该第二语音信号分段包括第一语言;
输出包括第一语言的第二语音信号。
该方法可以包括说话者自适应语音识别、文本到文本翻译和多说话者文本到语音(tts)处理。
根据另一个实施例,提供了一种生成说话者矢量的方法,包括:
输入从包括第二语言的第一语音信号的分段中提取的多个第一特征矢量,其中第一特征矢量包括与对应于第一语音信号的分段的音频数据有关的信息;
使用第一训练算法将第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应并且与第一语言兼容的一组特征;
输出说话者矢量。
根据另一个实施例,提供了一种使用训练数据集来训练语音信号处理系统的方法,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括第一语言和与该语音信号分段相对应的文本信息,该方法包括:
从语音信号分段中提取第一特征矢量,其中第一特征矢量包括与对应于从中提取第一特征矢量的语音信号分段的音频数据有关的信息;
使用第二算法将文本信息作为输入并使用说话者矢量来生成第一特征矢量,其中说话者矢量表示与说话者相对应的一组特征;
使用提取的第一特征矢量训练第二算法以提高性能,其中训练第二算法包括更新说话者矢量;
使用第一算法将提取的第一特征矢量作为输入来生成说话者矢量;
使用在第二算法的训练期间生成的更新的说话者矢量来训练第一算法,以提高性能。
根据另一个实施例,提供了一种使用训练数据集来训练语音信号处理系统的方法,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括与该语音信号分段相对应的第一语言和文本信息,该方法包括:
从语音信号分段中提取第一特征矢量,其中第一特征矢量包括与对应于从中提取第一特征矢量的语音信号分段的音频数据有关的信息;
使用第一算法将提取的第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征;
使用第二算法将文本信息作为输入并使用说话者矢量来生成第一特征矢量,
使用提取的第一特征矢量来训练第一算法和第二算法以提高性能,其中训练包括更新说话者矢量。
在实施例中,来自同一说话者的不同语音信号分段使用相同的说话者矢量。
在实施例中,训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括多种语言和与语音信号分段相对应的文本信息,
其中使用第二算法生成第一特征矢量还包括使用语言矢量,其中语言矢量表示与语言相对应的一组特征,其中来自不同说话者的包括相同语言的不同语音信号分段使用相同语言矢量,并且其中训练第二算法还包括更新语言矢量。
在实施例中,训练数据集还包括识别包括相同语言的语音信号分段的语言信息,其中训练方法包括:
使用对抗神经网络并将第一算法生成的说话者矢量作为输入来生成语言信息,
使用数据集中的语言信息训练对抗神经网络,以提高性能;
其中对抗神经网络的丢失被用于训练第一算法和第二算法。
根据实施例,提供了一种使用训练数据集来训练系统以生成说话者矢量的方法,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括第一语言和与该语音信号分段相对应的文本信息,该方法包括:
从语音信号分段中提取第一特征矢量,其中第一特征矢量包括与对应于从中提取第一特征矢量的语音信号分段的音频数据有关的信息;
使用第一算法将提取的第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征;
训练第一算法以提高性能。
这些方法是计算机实现的方法。由于根据实施例的一些方法可以由软件实现,因此一些实施例包含在任何合适的载体介质上提供给通用计算机的计算机代码。载体介质可以包括任何存储介质,诸如软盘、cdrom、磁性设备或可编程存储设备,或任何瞬态介质,诸如任何信号,例如电信号、光信号或微波信号。载体介质可以包括非暂时性计算机可读存储介质。
根据实施例,提供了一种包括计算机可读代码的载体介质,该计算机可读代码被配置成使计算机执行以上任何方法。
口语翻译系统可以从源语言la的语音文本翻译生成目标语言lb的语音。这类系统可以使用各种语音识别、文本到文本翻译和文本到语音(tts)应用程序。从源语言的语音提取文本信息,并将其用于生成目标语言的语音。在这类系统中,输入音频语音信号被压缩成纯文本,然后被翻译。在此过程中会丢失有关说话者特性的信息,换句话说,会丢弃说话者特性(诸如情绪和语调)。
在根据实施例的语音处理系统中,除了文本信息之外,还从源语言中的语音信号的分段的多个帧中的每一个提取第一特征矢量。第一特征矢量包括与音频数据有关的信息,例如与语音信号的分段的帧相对应的频谱数据或时域音频数据。然后,第一训练算法将第一特征矢量中的一个或多个作为输入,并生成表示与说话者相对应的一组特征的说话者矢量。然后将文本信号作为输入并使用说话者矢量来生成目标语言的语音信号,从而允许保留来自输入语音信号的说话者特性,并将其转换为另一种语言的输出语音信号。
在实施例中,该系统是说话者自适应口语翻译系统,其中来自输入语音的说话者特性(诸如口音,语调,音调或情感)可以在翻译过程中被保留并保存。
这类系统可以在涉及多个说话者的场景中具有特定的应用,诸如会议或多人视频/音频音素,其中每个人都可以说不同的语言。保持每个说话者的特征,以便听众可以分辨出说话者。该系统可以在诸如媒体和娱乐等领域中进一步应用,在该领域中,如果给定源语言的一段对话,它可以通过自动生成目标语言的对话序列来代替人类配音过程。这样可以实现自动配音翻译(无需使用人工翻译或配音演员)。
使用包括与音频数据有关的信息的第一特征矢量来生成说话者矢量,该说话者矢量又可以用于生成目标语言的语音信号,这意味着可以在不使用例如来自双语或多语言说话者的数据的情况下训练系统。第一训练算法将来自输入语音的音频数据作为输入,并输出可以在目标语言语音合成系统中使用的特征。第一训练算法不使用语言特定的信息(诸如文本),而是使用音频数据作为输入。目标语言特定的数据,即文本数据,不用于生成目标语言的说话者矢量。这尤其可以利于例如基于神经网络的文本到语音系统的使用,该系统是高度数据驱动的。
图1示出了根据实施例的用于处理语音信号1的系统的示意图。
系统1包括处理器3,该处理器获取源语言(也称为第二语言)的输入语音信号并输出目标语言(也称为第一语言)的语音信号。计算机程序5存储在非易失性存储器中。非易失性存储器由处理器访问,并且所存储的代码由处理器3检索和执行。处理器可以包括响应并处理程序指令的逻辑电路。存储器7存储程序5使用的数据。
系统1还包括输入模块11和输出模块13。输入模块11连接到用于接收源语言的语音信号的输入端15。输入端15可以是用于从外部存储介质或网络接收数据的接收器。可替代地,输入端15可以包括诸如麦克风的硬件。可替代地,输入端15可以从存储的音频或视频文件中读取数据,该音频或视频文件可以存储在系统上或存储在诸如软盘、cdrom、磁性设备或可编程存储设备的单独的存储介质上。
连接到输出模块13的是输出端17。输出端17可以包括硬件,诸如扬声器。可替代地,输出可以是用于将数据传输到外部存储介质或网络的传输机。可替代地,输出端17可以将数据写入存储的音频或视频文件中,该音频或视频文件可以存储在系统上或存储在诸如软盘、cdrom、磁性设备或可编程存储设备的单独的存储介质上。
在实施例中,系统1可以位于具有诸如用于输入和输出语音信号的麦克风和扬声器之类的硬件的通用系统中。可替代地,系统1可以是远程系统1,其接收关于从麦克风单元传输的输入语音信号的数据,并且将关于输出语音信号的数据传输到扬声器单元。例如,该系统可以在接收和传输数据的云计算系统上实现。虽然在所描述的系统中,使用了位于设备中的单个处理器3,但是该系统可以包括两个或更多个位于远程的处理器,这些处理器被配置成执行处理的不同部分并在它们之间传输数据。
在使用中,系统1通过数据输入端15接收与输入语音信号相对应的数据。在处理器3上执行的程序5通过输出端17以与将参考图1进行描述的方式输出与输出语音信号相对应的数据。处理器可以包括响应并处理程序指令的逻辑电路。
图2(a)示出了根据实施例的语音处理系统中包括的处理阶段的流程图。
输入包括源语言a(第二语言)的第一语音信号110的分段。例如,可以使用麦克风来收集源语言a中的语音输入110。语音信号110例如被输入到语音识别模块101,以源语言a产生文本111。该步骤包括从第一语音信号的分段生成第一文本信号,该第一文本信号包括源语言a。语音识别模块101中可以使用任何类型的语音识别过程。例如,可以使用先前已经使用源语言的音频和文本数据进行过训练的受过训练的语音识别模块101。例如,在云端或第三方api本地部署的基于神经网络或基于隐马尔可夫模型的系统。在实施例中,语音识别模块还被配置成输出单个单词或句子的时间戳。
然后将源语言文本111输入到文本到文本翻译模块102,以目标语言b产生输出文本112。该步骤包括从第一文本信号111生成第二文本信号112,该第二文本信号包括目标语言。文本到文本翻译模块102中可以使用任何类型的文本到文本翻译过程。例如,可以使用先前已经使用源语言和目标语言的文本数据进行过训练的受过训练的文本到文本翻译模块102。在实施例中,文本到文本翻译模块还被配置成输出比对信息,该比对信息指示源文本中的单词和目标语言文本中的单词之间的比对。
源语言语音110也被输入到说话者特性自适应模块104中。例如,该步骤可以与语音识别步骤101和文本到文本翻译步骤102并行,之前或之后执行。在该步骤中,从第一语音信号110的分段的多个帧的每一个中提取第一特征矢量,该第一特征矢量包括与对应于第一语音信号110的分段的帧的音频数据有关的信息。然后,使用第一训练算法将第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征。因此,从输入语音110中提取的音频特征被馈送到第一训练算法,该第一训练算法输出与目标语言b兼容的一组说话者特性113或说话者矢量。
然后文本语音转换模块103获取目标语言文本112和说话者特性113或说话者矢量两者,并产生目标语言b的音频输出117,其例如可以使用扬声器广播。该步骤包括使用第二训练算法将与第二文本信号112有关的信息作为输入并使用说话者矢量113来生成第二语音信号分段,该第二语音信号分段包括目标语言b。然后,输出第二语音信号117。
在实施例中,源语言文本111还可以包括来自源语言音频信号110的每个单词或句子的时序信息。然后该时序信息可以与目标语言文本112一起包括并馈送到tts模块103中,使得输出语音117的时序与输入音频同步。
图2(b)示出了根据实施例的在语音处理方法中执行的步骤的流程图。该方法是用于说话者自适应口语翻译的方法。
在s201中输入包括源语言a(第二语言)的第一语音信号110的分段。
例如将语音信号110输入到语音识别模块101,其在s202中以源语言产生文本111。
然后在s203中将源语言文本111输入到文本到文本翻译模块102,以目标语言产生输出文本112。
在s204中,源语言语音110也被输入到说话者特性自适应模块104中。在该步骤s204中,从第一语音信号110的分段中提取第一特征矢量,该第一特征矢量包括与对应于第一语音信号110的分段的帧的音频数据有关的信息。在该示例中,第一特征矢量是world语音特征矢量,将在下面进一步详细解释。
然后,在步骤s205至s207中,使用第一训练算法将第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征。在该示例中,第一训练算法包括卷积神经网络、最大函数和神经网络。步骤s205包括对第一特征矢量上的滤波器组(cnn)进行卷积以获得滤波器响应,步骤s206包括获取时间上的响应最大值,而步骤s207包括将神经网络用作非线性函数以生成目标语言说话者特性。将在下面相对于图3进一步详细描述这些步骤。
步骤s208至s210包括使用第二训练算法将与第二文本信号112有关的信息作为输入并使用说话者矢量113来生成第二语音信号分段,该第二语音信号分段包括目标语言b。在s208中,将目标语言文本转换为语音单位,在步骤s209中,使用目标说话者特性(生成的说话者矢量)和目标文本(生成的语音单位)合成第二特征矢量(在这种情况下为world特征矢量),然后在s210中执行声码器合成。下面将参考图4进一步详细描述这些步骤。最终在s211中输出第二语音信号。
现在将描述说话者特性自适应模块104的示例和生成说话者矢量的方法。说话者特性自适应模块104是用于生成说话者矢量的系统的示例。该系统包括用于接收从包括源语言的第一语音信号的分段中提取的第一特征矢量(例如,world特征矢量)的输入以及用于输出说话者矢量的输出。模块104被配置成使用第一训练算法将第一特征矢量作为输入来生成说话者矢量,其中说话者矢量表示与说话者相对应的一组特征。图3示出了根据实施例的说话者特性自适应模块104的示意图。
在这种生成说话者矢量的方法中,从第一语音信号的分段中提取第一特征矢量,该第一特征矢量包括与对应于第一语音信号的分段的每个帧的音频数据有关的信息。音频数据可以是频谱数据,例如频谱包络数据,或者是时域音频波形,例如音频波形的时域幅度值。
在实施例中,提取第一特征矢量包括world特征提取过程,其针对输入语音信号的分段产生维度为t乘以j的2d矩阵输出,其中t为语音信号分段中的音频特征帧的数量(并对应于行数),而j是world特征提取器401确定的输出维度。world特征矢量是音频信号本身的矢量表示,即可以通过算法将其转换回语音的音频波形的频谱图表示。
world提取器401的输出包括频谱数据sp,并且还可以包括与基本频率f0、非周期性bap和浊音-清音开关vuv中的一个或多个有关的信息。与频谱数据sp表示的谐波频谱相反,非周期性bap表示脉冲响应的大小。浊音-清音开关vuv表示声音是浊音(诸如在元音的情况下)还是清音(诸如“s”或“t”之类的辅音)。可以使用多个频率仓来提取频谱数据,例如大于或等于60个仓。在实施例中,j为63,并且对于语音分段的每个帧,第一特征矢量包括:对于16000hz的音频采样频率,一个f0值、一个vuv值、一个bap值和60个频谱数据值。在实施例中,j为67,并且对于语音段的每个帧,第一特征矢量包括:对于48000hz的音频采样频率,一个f0值、一个vuv值、五个bap值和60个频谱数据值。在实施例中,t为300(对于1.5秒长的音频段,具有相距5ms的连续帧)。
然后将对应于输入语音信号的分段的第一特征矢量的序列输入到第一训练算法中,例如以txj阵列的形式。在实施例中,第一训练算法包括训练神经网络。
在实施例中,第一训练算法包括卷积滤波器组402。从world特征提取器401输出的大小为t乘以j的world特征数组被馈送到卷积滤波器组402中,该卷积滤波器组对一组或一系列组滤波器器对其输入进行卷积。卷积滤波器组402输出大小为t乘以l的2d矩阵,其中l是最后一组滤波器组中的滤波器数量。在描述的示例中,l=64。
卷积滤波器组402可以是卷积神经网络,其中在训练阶段自动学习滤波器。将在后面详细讨论训练阶段。每组滤波器可被视为卷积神经网络内的一层。
卷积神经网络是包括一个或多个卷积层的一种神经网络。卷积层包括一组线性滤波器,每个线性滤波器的特征在于权重矢量,以及每个滤波器的加法偏差项。在操作期间,每个滤波器会卷积整个输入数据。每个卷积层可以具有不同数量的滤波器。滤波器在输入数据上的卷积导致与每个滤波器相对应的一维输出数据。步幅定义了在卷积的每个步骤中滤波器沿着输入数据移动了多少,并为每一层进行定义。卷积运算之后是可微分的非线性激活函数,例如relu(整流线性单元)函数。从滤波器输出的一维数据被输入到激活函数。然后,每一层的输出作为输入馈送到下一层,例如可以是其它卷积层或不同类型的层。特别地,可以在一个或多个卷积层之间包括一个或多个池化层,其用于对数据进行下采样。
在训练阶段的操作之前,学习表征每个层的权重和偏差,这将在下面进行描述。这些是可训练的参数。
在实施例中,滤波器组402包括5个卷积层和1个池化层。池化层可以位于第二或第三卷积层之后。每个卷积层可包含64个滤镜,步幅为1。
取大小为t乘以l的矩阵输出,然后可以跨时间(即,跨帧)应用时间归一化函数403以获得大小为l的矢量。时间归一化函数可以是最大函数、均值功能或递归神经网络。例如,在使用最大函数的情况下,对于数组中的每个列l,提取具有最大条目的行t的值作为输出矢量的值。
然后可以将长度为l的归一化函数的输出矢量输入到神经网络404中以获得说话者矢量113,该说话者矢量可以表示为维度为m的矢量,其中说话者矢量
在训练阶段期间的操作之前,学习表征每个层的权重和偏差,这将在下面进行描述。这些是可训练的参数。
因此,说话者特性自适应模块104使用第一训练算法将第一特征矢量作为输入来生成说话者矢量。在该示例中,第一训练算法包括卷积神经网络402、时间归一化函数403和神经网络404。
图4示出了根据实施例的语音合成模块(或tts系统)103的示意图。在实施例中,文本到语音系统103包括序列到序列神经网络。在所描述的示例中,输入文本信号“我是萨姆”作为目标语言文本输入112。
文本到语音系统103可以包括字素到音素转换器306,该转换器被配置成将目标语言文本输入112(包括一个或多个单词的序列)转换为一系列语音单位,例如国际语音字母表中的单位。在实施例中,字素到音素转换器306包括基于规则的算法。对于示例文本信号,导致五个语音单位的序列:al、m、s、
然后,编码器304将语音单位的序列转换为代表矢量的序列。编码器304可以包括用于每个语音单位及其对应的嵌入矢量的查找表、递归神经网络、卷积神经网络或例如上述的组合。
在实施例中,编码器304包括查找表,其中每个语音单位被分配有与查找表中的行相对应的唯一数字整数。查找表包括大小为v乘以h的2d矩阵,其中每个整数对应于2d矩阵中的一行,其中v是可能的语音单位总数,而h是固定长度。在实施例中,h=128。2d矩阵中的值可以在训练阶段期间被自动学习,并且被存储以在实施期间使用。对应于输入语音单位的代表矢量是对应行中的值的矢量。如图所示,在语音单位和代表矢量之间存在一对一的对应关系,因此,在输入五个语音单位的情况下,输出五个代表矢量。
在替代实施例中,编码器304可以包括查找表,然后可以将从查找表产生的矢量的序列馈送到回归神经网络中。因此,从查询表产生的与文本信号分段相对应的矢量的序列被馈送到递归神经网络(例如,沿左右方向滚动,反之亦然,或两者皆有),其中然后可以将递归神经网络的输出用作代表矢量的序列。输出序列的长度与查找表的输出序列的长度相同(因此在此示例中为五个代表矢量)。在另一个实施例中,编码器304可以包括查找表和卷积神经网络,其对从查找表输出的矢量的序列进行卷积以产生新的矢量的序列。在这两种情况下,每个音素单位的矢量都会转换,同时考虑到该音素单位周围的周围音素,这可能会提高性能。
在实施例中,文本到语音系统103包括关注机制模块303。关注机制303可以包括例如前馈神经网络、递归神经网络或两者的组合。关注机制303允许从输入到输出的多对多长度映射。
在所描述的示例中,关注机制303使用关注矢量本身(即,在先前步骤中从关注机制303输出的矢量,其被缓存以供下一步骤使用)以及存储器状态(即,存储在存储器模块305中的存储矢量的当前序列,稍后描述)。然而,关注机制可以例如使用自身信息的任何组合(诸如关注的位置,即先前的关注矢量)、编码器内容(编码器输出)、输出本身(即解码器在最后一步输出的world矢量)、说话者矢量、解码器(即,从解码器传递到存储器模块的信息)和存储器模块。关注机制对说话者矢量的使用可能会影响关注机制改变其权重的快慢程度,例如以便适应不同说话者以不同速度说话。特别地,关注机制303可以不将关注矢量本身作为输入。
解码器302可以包括两个神经网络,例如:用于写入存储器模块305的第一解码器神经网络,以及用于从存储器模块中读出的第二解码器神经网络。第一解码器神经网络将编码器输出矢量的加权和(使用从关注模块303输出的关注矢量生成的权重)作为输入。第一解码器神经网络302输出到存储器机制305。第二解码器神经网络将存储器机制305中的当前存储矢量作为输入,并将第二特征矢量输出到声码器301。对于关注机制模块的每个输出,重复该过程,以生成第二特征矢量的序列。
在实施例中,第二特征矢量是world特征矢量。例如,第二特征矢量可以包括与第一特征矢量相同的特征或不同的特征。在所描述的示例中,第一特征矢量和第二特征矢量均包括world特征。
存储器机制305可以是“先进先出”存储器,其包括特征矢量的s个时隙,其中在实施例中,s为20,称为维p的存储矢量。在实施例中,p=256。这些对应于每个步骤从解码器传递的信息。在每个步骤中,存储器模块都向右移动一个,从而删除位置s上的最后一个特征矢量,同时将新的特征矢量写入位置1。在操作开始时,存储器模块以零初始化。
将在下面结合图5进一步详细说明关注机制303、存储器模块305和解码器302的操作。
存储器模块305是tts系统103的可选组件。例如,解码器302和存储器模块305的组合可以由单个左至右回归神经网络(单层或多层)代替。此外,可以用读写存储器模块代替先进先出存储器模块,其中在每个步骤中,例如,通过神经网络来确定读写指令。
使用音频波形合成模块(即,声码器301)将第二特征矢量的序列转换为音频。因此,例如可以使用world声码器301将world特征矢量转换为语音。world声码器301包括将world特征矢量转换成语音的确定性算法。虽然显示了world声码器,但可选地,可以使用卷积神经网络(诸如wavenet)代替world声码器。
因此,目标语言的第二文本信号被转换为语音单位的序列,每个语音单位又被转换为代表矢量。代表矢量被输入到第二训练算法中,该第二训练算法包括关注机制算法、第一解码器神经网络和第二解码器神经网络,其生成包括音频数据的第二特征矢量。然后从第二特征矢量生成第二语音信号分段。
图5示出了文本到语音系统103执行的步骤的流程图。将结合该图更详细地描述关注机制303、存储器模块305和解码器302执行的步骤。
在步骤s301中,通过字素到音素转换器306,将单词级文本(例如,“我是萨姆”)转换为音素序列(在这种情况下,是五个语音单位的序列),如以上相对于图4进行了描述。
然后,再次如上面关于图4所描述,然后在步骤s302中使用编码器304将音素序列转换为代表矢量的序列(在这种情况下,将五个语音单位转换为五个代表矢量)。
在该示例中,对于第二(world)特征矢量的每个输出帧(直到最大帧数),在步骤s303中,关注机制303获取关注状态矢量自身(在先前步骤中从关注机制303输出的矢量)和存储器状态(即,存储在存储器中的矢量的当前序列)以生成输出关注矢量。在该步骤中,向关注机制303馈送一维矢量,该一维矢量包括先前的关注矢量(长度为h),并与存储状态(包括来自存储在存储器中的所有s个存储矢量的信息,展平为s*p长度的一维矢量)相关以生成长度为h的关注矢量。可以在关注机制的输入矢量中包括更多信息,如上面所描述(例如,说话者矢量、输出world特征矢量等)。
在所描述的示例中,关注机制303使用关注状态本身和存储器状态。输入是一维矢量,在这种情况下,其长度对应于{(s*p)+h}。输出是一维关注矢量,其长度为h。关注机制303可以包括前馈神经网络,前馈神经网络例如具有2层,每层128个单位,其会产生与代表矢量大小相同的大小的关注矢量。因此,关注机制模块303输出关注矢量。
为语音信号的每个输入段确定最大帧数。在实施例中,将其确定为段中音素单位的数量的倍数。在实施例中,最大帧数是音素单位数的20倍。
在步骤s304中,获取从编码器输出的代表矢量的加权和,并将其馈送到解码器中。取关注矢量(长度为h)与从编码器输出的每个代表矢量(每个长度为h)的点积,该乘积给出了标量序列(一个数字对应于每个代表矢量)。这些用作权重。然后将每个代表矢量乘以其对应的权重,然后将所得的加权矢量(每个长度为h)相加。其结果被馈送到第一解码器神经网络。在该步骤中,关注矢量与代表矢量相乘两次,一次生成权重,第二次生成加权组合。
在替代实施例中,对于每个输出帧,关注机制303输出高斯分布的平均值和标准差。因此,关注机制输出二维矢量,例如,第一值为平均值,第二值为标准偏差。通常,关注机制可以输出一个或多个定义概率分布的值。然后,使用代表矢量的索引(即序列中的位置)和输出高斯分布的对应值来生成每个代表矢量的权重。
图22示出了使用索引和概率分布为每个代表矢量生成的权重值的示意图。在该示例中,在时间0处,平均值为0,并且方差为1。每个代表矢量的权重取决于该代表矢量的索引,即,分配给第一矢量(索引为0)的权重为0.5(是平均值为0且方差为1的高斯概率密度值)。对于第二代表矢量,其权重将是在1,然后2、3等处的高斯概率密度值。在时间索引t处,生成具有不同平均值的不同概率分布,并将其用于获得权重。然后,将这些权重用于执行加权和,如前所述。例如,对于第一输出帧,平均值为零的高斯分布对第一代表矢量的权重最大,然后对于每个输出帧,它在代表单元上滑动。
可以使用其它类型的概率分布,例如具有自己的平均值、标准差和gmm权重集的高斯混合模型。对于gmm,关注机制可以输出3维h矢量,其中有h个高斯,并且每个高斯具有混合权重、平均值和标准偏差值。
在另一个实施例中,代替在每个时间步长输出平均值,关注机制可以输出要加到先前平均值的增量。例如,平均值可以从0开始,并且关注机制在每个时间步长(即,对于每个输出帧)输出要加到零上的增量。在下一个时间步长,该机制输出另一个要加到新平均值上的增量。这样可确保平均值始终在增加,并在音素序列和输出声音之间建立单调关系。
如上所述,解码器302包括两个神经网络:用于写入存储器模块305的第一解码器神经网络,以及用于从存储器模块305读出的第二解码器神经网络。
在步骤s305中,第一解码器神经网络加权和(长度h的矢量)获取输出。第一解码器神经网络输出长度为p的矢量。在步骤s305中,将长度为p的输出矢量写入存储器模块305。在每个步骤中,将长度为p的当前输出矢量写入位置1,并在存储器中删除位置s的最后一个矢量。第一解码器神经网络可以例如具有一层,具有p个单元。
关注矢量用于所生成的权重,该权重用于在输入到第一解码器神经网络之前在步骤s304中在编码器输出求和时对它们进行加权。可以预期,随着每帧的生成,关注权重的焦点将以单调的方式在编码器输出上进行扫描。这是通过训练来确保的,在该训练中,关注机制逐渐学会以正确的速度扫描编码器,以生成正确的输出到解码器。
在s306中,第二解码器神经网络(例如可以具有一层,其单位数与输出相同,(例如,与world特征矢量中67个维度相对应的67个单位))然后从整个存储器模块中读取例如world特征矢量,然后将其展平为s*p长度的一维矢量,并与说话者矢量联系起来,以产生与一帧相对应的输出world特征矢量。因此,第二解码器神经网络将长度为{(s*p)+m}的一维矢量作为输入,其中m是说话者矢量的长度。第二解码器神经网络输出一维矢量,该一维矢量的长度等于第二特征矢量(例如,world矢量)的长度。
在s307中,确定是否已经达到最大帧数。如果不是,则关注机制303生成下一特征矢量。关注机制将从编码器输出的相同代表矢量、更新的关注状态和更新的存储器状态作为输入。再次重复该过程,直到在s307中达到最大帧数为止。然后在s308中可以使用world声码器301将world特征矢量转换为语音。
下面将描述语音合成模块103和说话者特性自适应模块的训练过程。这些组件可以单独或一起训练。然后,它们可以与例如预训练的语音识别模块101和预训练的文本到文本翻译模块102一起在系统中使用,它们可以以适合于特定语音识别模块101和文本到文本翻译模块102的方式进行。
图6是语音合成模块103的训练过程的阶段的示意图。
训练使用训练数据集,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括第一语言和与该语音信号分段相对应的文本信息。训练数据中的每个示例可以包含:语音音频117本身,其被转换为world矢量118;对应的文本112,其通过字素到音素转换器306转换为音素单位116;以及说话者id119。最初将每个说话者id119映射到可训练的说话者特性矢量113。例如,将每个说话者id与对应的说话者矢量113存储在查找表中。
因此,训练数据集中的每个说话者都有对应的说话者矢量113。对于与同一说话者相对应的每个语音分段,都使用了相同的说话者矢量113(通过训练过程逐步更新)。由于对应于同一说话者的不同语音分段将具有相同的说话者矢量,因此说话者矢量与文本/单词信息无关。
文本信息112包括文本信号,并且还可以包括关于时序的一些信息,使得输出可以被同步到原始输入。
通过将说话者矢量113和音素序列116馈入分段来执行训练,以与上文关于操作阶段所描述的相同方式产生world矢量输出114的序列。可以使用直接从音频信号中提取的目标world矢量118作为真实数据,使用输出world特征矢量114来确定损失105。可以通过反向传播来确定相对于语音合成器的每个可训练参数的损失的梯度,包括说话者特性113。然后,可以使用优化程序函数将梯度用于确定更新的参数。可以使用的损失函数的示例是均方损失e2:
其中
可以使用计算图来执行梯度的确定。现在将相对于下面的图17和图18描述计算图及其与神经网络训练的相关性。
图17是简单函数f(x1,x2)=sin(x1)+x1x2的计算图的示例的示意图。该简单函数被映射到计算图,以示出如何使用计算图来表示一系列操作。语音合成系统103中的每个神经网络可以以类似的方式映射到计算图,然后可以用于确定相对于每个可训练参数(包括说话者矢量)的损失梯度。框架(即,语音合成系统103中的神经网络模块)可以在诸如pytorch或tensorflow的自动区分框架中实现。语音合成系统中的每个神经网络模块在正向传递期间均映射到有向可微计算图。
在该示例中,图中的每个节点502表示诸如加法、乘法或其它数学函数的运算。在该示例中,该函数的输入501是x1和x2。在这种情况下,输入x1被输入到节点502a和节点502b。输入x2被输入到节点502b。
在节点502a中,计算值x3,其中x3=sin(x1)。还示出了x3的总导数的表达式,在这种情况下
类似地,在节点502b中,x4是x1和x2的函数,其中x4=x1x2。还给出了总导数的表达式
节点502c的输入是节点502a的输出(即x3)和节点502b的输出(即x4),其中x5=x3+x4。还给出了总导数的表达式
节点502c的输出503是函数f(x1,x2)的输出值。
对于依赖于另一个节点的每个节点(例如,图中的节点502c),链式规则用于获得差异的表示。在每个正向传递中,可以针对每个节点累积和保存函数关于一个或多个变量的导数,以便在反向传播期间,将值馈送到导数表达式中,然后获得梯度的值。
可以看出,语音合成系统103中的每个神经网络模块可以以类似的方式由计算图表示。这些可以级联在一起成为单个计算图。图表中的计算一次针对批次中的每个话语进行。
图18是随着时间展开的简单计算图的示意图。对于每个时间步长(即每个生成的帧)使用相同权重的神经网络,在正向传递期间发生的每个时间步长都会展开计算图。对于跨时间使用的参数,图表仍会将跨时间的参数视为单独的参数,但是在更新期间,跨时间使用的特定参数的更新将跨时间进行平均。换句话说,确定相对于权重的每个时间步长的损失梯度,然后将这些值进行平均,以给出相对于权重的损失的最终梯度(例如)。
计算图中的水平箭头表示到一个节点的输入是前一时间步长的节点的输出,该水平箭头可用于表示例如上述语音合成中所述的读/写存储操作。因此,只要所使用的每个操作都是可微的,就可以针对输入话语在所有时间步长上对整个图表(以及神经网络)进行反向传播。
因此,对于批次中的单个训练示例(例如,其大小可能为128个话语),基于反向传播的误差信号和前馈激活信号(每层的输入)计算相对于每个参数(即神经网络中的权重和偏差、说话者矢量等)的损失梯度。在正向传递中执行的每个操作都是可微的,因此可以通过链式规则来确定相对于每个单个参数(即权重、偏差、说话者矢量)的损失导数的函数表达式。使用反向传播的误差和激活(正向传递期间缓存的来自正向传递的每层的输入),从这些表达式计算出梯度值。
在图18所示的简单示例计算图中,函数f可以对应于例如特定帧(时间步长)的损失。因此,f(x1,t)可以对应于时间步长t处的损失。函数f的值对应于x5。时间步t处的相对于每个参数(即,在该示例情况下为权重w1和w2)的损失梯度对应于相对于特定权重的x5,t导数。这可以从总导数的表达式确定。确定每个时间步长的相对于权重的损失梯度,并使用平均值。
在这种情况下,x5,t=x3,t+w2x5,t-1。总导数的表达式是
在语音合成模块中,将长度为m的说话者矢量与存储器模块状态(长度为s*p)级联起来,并将结果输入到第二解码器神经网络。这是微分运算,因此可以针对输入示例确定相对于说话者矢量中每个特征的损失梯度值(与确定相对于每个权重和偏差的损失梯度值的方式相同)。级联操作对微分和梯度的计算没有影响,因为神经网络层输入中的每个维都是独立处理的,因此说话者矢量中的参数不会受到存储器模块状态的任何影响,因此通过链式规则,其梯度不依赖于存储器模块的任何部分。
对于批量中的每个训练示例,计算图可以导致梯度值的阵列,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取批量中特定参数的所有训练示例的梯度值的平均值)。
然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。针对每个参数到优化程序函数的输入是先前的值、对应的梯度值和学习率参数。通常,基于梯度下降的优化程序在损失函数相对于参数的最陡下降方向上更新参数,并以例如0.001的学习率进行缩放。在批次中对更新进行平均,以解决各个训练示例中的噪声并增加受过训练的神经网络的泛化能力。因此,梯度值在整个批次中取平均值,然后在优化程序中用于确定新的参数值。用新值替换参数,并用另一批训练信号迭代该过程。
在实施例中,虽然说话者矢量位于相同的m维空间
在该实施例中,在反向传播中,仅在将参数用于正向传递之后才计算参数的梯度更新。这意味着,仅当批次中存在说话者id和对应的话语时,才更新该特定说话者的说话者特性矢量中的特定参数。此外,如果使用同一说话者的多种话语,则梯度更新仍将“整个批次”进行平均,即,在n批次中可能有来自特定说话者的3种话语,然后将这3种话语的梯度更新相加并除以n(因为该批次其余部分的梯度更新为零)。因此,对于具有相同说话者id的批处理中的每个话语,针对说话者矢量特征的梯度值被组合(例如进行平均),以给出与每个说话者矢量特征相对应的单个梯度值。然后使用优化程序函数将其用于更新每个说话者矢量。以这种方式,每个说话者id的说话者矢量被分别更新。
在实施例中,在训练期间对说话者特性施加一个或多个约束,诸如说话者矢量的平方范数必须小于或等于1。这可以在更新(即执行梯度更新)之后执行,并且将输出矢量除以平方范数,以使得平方范数为1。
在训练开始时,可以随机初始化训练数据中每个说话者的说话者特性矢量(以及其它可训练参数)。在训练数据中,来自不同说话者的话语很多,使得许多说话者彼此说相同的单词(有时是句子)。这意味着在训练期间的同一批次内,可能会有不同说话者的相同句子实例和同一说话者的不同句子实例进行训练,从而使系统可以了解输入和输出中的共同点和不同点。
在训练期间,迭代地更新每个训练说话者的说话者特性矢量作为tts系统103的参数。这样,每个说话者的特性开始逐渐代表对tts系统有意义的信息。
可选地,在训练期间,少量的噪声(例如,高斯分布的噪声)被添加到说话者特性,以鼓励tts系统103更容忍噪声,或说话者自适应模块104将生成的小误差。
图7示出了根据实施例的训练语音合成系统103的方法的流程图。如上所述,训练使用训练数据集,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括第一语言和与该语音信号分段相对应的文本信息。在s201中获得这些。
在s204中,从语音信号分段生成第一特征矢量,其中第一特征矢量包括与对应于从中提取第一特征矢量的语音信号分段的频谱数据有关的信息。在该示例中,第一特征矢量是world语音特征矢量,并且以与操作期间相同的方式从音频数据中提取。
步骤s209包括使用第二算法将文本信息作为输入并使用说话者矢量来生成第一特征矢量,其中说话者矢量表示与说话者相对应的一组特征。在该步骤中,以与操作期间相同的方式,使用文本到语音系统103来合成world语音特征矢量。
s213包括使用提取的第一特征矢量来更新第二算法的参数以提高性能,包括更新说话者矢量。
可以使用单一语言的训练数据来执行语音合成系统的训练。
图8示出了根据实施例的训练系统以生成说话者矢量的方法的流程图。
可以在语音合成模块103的训练之后执行说话者特性自适应模块104的训练。可以使用相同的训练数据。在这种情况下,以与操作期间相同的方式,直接从语音中提取的world矢量118(并用作训练文本到语音系统103的真实数据)被用作说话者特性自适应模块104的输入。在语音合成系统103的训练期间确定的说话者id119和对应的受过训练的说话者特性113被用作“真实数据”。训练过程也可以使用误差的反向传播通过梯度下降法进行。
该方法包括使用第一算法将提取的第一特征矢量118作为输入来生成说话者矢量140。在这种情况下,提取的第一特征矢量是直接从音频信号提取的world矢量118。第一算法包括先前已描述的卷积滤波器组402、归一化函数403和神经网络404。输入world特征矢量118并以与操作期间相同的方式执行算法,从而产生输出说话者矢量140。
使用在语音合成系统103的训练期间生成的目标说话者矢量113作为真实数据,可以使用输出说话者矢量140来确定损失。相对于系统的每个可训练参数的损失梯度可以通过反向传播确定,并用于更新参数。可以使用的损失函数的示例是均方损失e2:
其中
然后,使用第二算法训练期间生成的更新的说话者矢量113作为真实数据来更新第一算法的参数。因此,对于批次中的训练示例,基于反向传播的误差信号和前馈激活信号(每层的输入),计算出相对于每个参数(即神经网络中的权重和偏差)的损失梯度。正向传递中执行的每个操作都是可微的,因此可以通过链式规则来确定相对于每个单个参数(即权重和偏差)的损失导数的函数表达式。使用反向传播的误差和激活(正向传递期间缓存的来自正向传递的每层的输入),从这些表达式计算出梯度值。
对于批次中的每个训练示例,这将导致梯度值数组,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取特定参数的所有训练示例的梯度值的平均值)。
然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。针对每个参数到优化程序函数的输入是先前的值、对应的梯度值和学习率参数。通常,基于梯度下降的优化程序在损失函数相对于参数的最陡下降方向上更新参数,并以学习率进行缩放。用新值替换参数,并用另一批训练信号迭代该过程。
包括卷积滤波器组402、归一化函数403和神经网络404的神经网络能够捕获不同语言之间的说话者特性113。这是因为它只经过训练在语音输入的声音矢量表示(例如world特征矢量)上进行操作,而无需使用任何特定于语言的信息或词典(诸如字素)。这允许神经网络仅通过音频提取特征,这些特征在各种语言中都是通用的,并且无需使用双语数据。
在使用cnn的情况下,可以将某种填充用于输入,以标准化输入长度。在该示例中,world特征矢量被输入到包括cnn的说话者特性自适应模块中。在实施例中,对于同一批次中具有不同长度t的话语,将比该批中的最长话语短的任何话语零填充到最长长度。在大小为3的批次中,该批次中的第一话语可以具有350帧world特征矢量,第二话语是400帧,而第三话语是200帧。在这种情况下,第一话语在其末尾附加了50帧零值,以便具有400帧的长度,而第三话语在其末尾附加了200帧零值特征矢量,也达到了400帧的长度。第二话语没有改变。
虽然在上文中,描述了首先训练语音合成模块103的方法,然后随后训练说话者特性自适应模块104的方法,但是可替代地,可以将两个模块一起训练。这例如在图9中示意性地示出。
在这种情况下,说话者自适应模块104和语音合成模块103两者的训练以端到端的方式共同发生。真实数据的world特征矢量118(直接从音频信号中提取)被输入到说话者自适应模块104中以产生说话者特性113,然后将其与音素序列116一起输入到语音合成系统103中以产生输出世界特征矢量114。这允许将原始语音压缩为音素序列,同时还提取表示语音情感和语调的矢量。这使两个系统都可以学习彼此更好地协作。
图10是根据实施例的训练语音信号处理系统以生成翻译后的语音的方法的流程图。如上所述,训练使用训练数据集,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括第一语言和与该语音信号分段相对应的文本信息。在s201中获得这些。
在s204中,从语音信号分段中提取第一特征矢量,其中第一特征矢量包括与对应于从中提取第一特征矢量的语音信号分段的音频数据有关的信息。在这种情况下,以与操作期间相同的方式从音频数据中提取world语音特征矢量。
在s212中,使用第一算法将从s204提取的world特征矢量作为输入来生成说话者矢量,其中说话者矢量以与操作期间相同的方式表示与说话者相对应的一组特征。
在s209中,使用第二算法将文本信息作为输入并使用说话者矢量来生成world特征矢量。在该步骤中,语音合成算法以与操作期间相同的方式从音素信息生成world特征矢量。
在一个步骤中执行第一算法和第二算法两者的更新以提高性能,包括更新说话者矢量。以与以上关于图6所述的相同的方式,使用直接从音频信号中提取的目标world矢量118作为真实数据,可以使用输出world特征矢量114来确定损失105。可以通过反向传播来确定相对于两种算法的每个可训练参数(包括说话者特性113)的损失梯度,其中将用于生成说话者矢量的神经网络和运算简单地添加到计算图中,并且参数的更新方式与之前所述相同。
因此,对于批次中的训练示例,基于反向传播的误差信号和前馈激活信号(每层的输入),计算出相对于每个参数(即,说话者特性自适应模块104和语音合成模块103两者中的神经网络中的权重和偏差、说话者矢量等)的损失梯度。然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。
在上文中,表示与说话者相对应的一组特征的说话者特性矢量被用于生成合成语音。在训练期间,训练数据集中的每个说话者都有对应的说话者矢量。每个说话者说出许多不同的句子,从而允许系统训练说话者矢量以捕获与说话者相对应的特征。在训练期间,对于同一说话者的每个语音信号分段,使用相同的说话者矢量(通过训练过程逐渐更新)。在操作期间,系统可以从新说话者中提取说话者矢量。在实施例中,在操作期间,对于来自同一说话者的每个输入语音信号分段,系统提取相同的说话者矢量,其误差在5%以内。
上面的语音合成系统103和说话者特性适应系统104可以对单一语言即目标语言的数据进行训练。使用源语言的说话者信号来训练语音识别系统101。使用源语言和目标语言的对应文本信号来训练文本到文本翻译系统。
然而,也可以为多种目标语言训练语音合成系统103和说话者特性系统104。在这种情况下,文本到文本翻译系统102也将需要对多种目标语言进行训练。语音识别系统101和文本到文本翻译系统也可以针对多种源语言进行训练。
图11示出了根据实施例的语音处理系统中包括的处理阶段的流程图。该系统类似于图2(a)的系统,除了包括目标语言特性115之外,从而允许使用多种目标语言。因此,将省略上面已经描述的元素的描述。
在该系统中,除了说话者矢量113之外,目标语言矢量115也被合并到语音合成系统103中。例如,通过简单的加法(如果它们具有相同的维数)或级联将其与说话者矢量113组合以形成更一般的特征矢量。这使语音合成模块103能够使用对应的语言特性115输出两种或更多种不同的目标语言。
在操作期间,用户决定他们希望输出哪种语言,即,他们从两种或更多种支持的目标语言中选择一种目标语言。因此,在系统的操作期间,用户选择他们希望具有的输出语言,并且对应的语言代码将被馈送到系统中。在存储的查找表中找到对应的语言矢量115。说话者矢量113以与上述相同的方式生成。然后说话者矢量113与目标语言矢量115组合。在语音合成过程中使用组合矢量来代替说话者矢量113,即,以与先前关于说话者矢量113所述的相同方式使用组合矢量。
语言矢量115在训练阶段被学习并且被存储在查找表中以在操作期间使用。因此,语音合成系统103的训练并入了附加的语言id,其又对应于语言特性115,并使用一种以上语言的数据集。训练是可能的,因为来自每种语言的所有文本112都被分解为音素序列116,其中可能的音素集与语言无关。
图12示出了根据实施例的训练过程的示意图。该过程仅涉及语音合成模块103的训练,此后,可以以与之前已经描述的相同的方式来训练说话者特性自适应模块104。然而,可替代地,两个模块可以在联合训练步骤中一起训练,同样如前所述。
训练使用训练数据集,该训练数据集包括来自多个说话者的多个语音信号分段,该多个语音信号分段包括两种或更多种语言以及与语音信号分段相对应的文本信息。训练数据中的每个示例可以包含:语音音频117本身,其被转换为world矢量118;对应的文本112,其通过字素到音素转换器306转换为音素单位116;说话者id119;和语言id121。最初将每个说话者id119映射到可训练的说话者特性矢量113。例如,每个说话者id与对应的说话者矢量113存储在查找表中。最初将每个语言id121映射到可训练语言特征矢量115上。每个语言id与对应的语言矢量115例如存储在查找表中。
因此,训练数据集中的每个说话者都有对应的说话者矢量113。对于与同一说话者相对应的每个语音分段,都使用相同的说话者矢量113,而不管他们说哪种语言。由于对应于同一说话者的不同语音分段将具有相同的说话者矢量,因此说话者矢量与文本/单词信息无关。此外,由于对应于相同说话者但不同语言的不同语音分段将具有相同的说话者矢量,因此可以增强语言独立性。
训练数据集中的每种语言都有对应的语言矢量115。对于与相同语言相对应的每个语音分段,都使用相同的语言矢量115,而不管哪个说话者在说话。由于对应于不同说话者的语音的不同分段将具有相同的语言矢量,因此语言矢量与文本/单词或说话者信息无关。
通过针对分段馈送说话者矢量113、语言矢量115和音素序列116来执行训练,以与上文关于操作阶段所描述的相同的方式产生world矢量输出114的序列。可以使用直接从音频信号中提取的目标world矢量118作为真实数据,使用输出world特征矢量114来确定损失105。可以通过反向传播来确定相对于语音合成器的每个可训练参数(包括说话者特性113和语言特性115)的损失的梯度。
因此,对于批次中的训练示例,基于反向传播的误差信号和前馈激活信号(每层的输入),计算出相对于每个参数(即神经网络中的权重和偏差、说话者矢量、语言矢量等)的损失梯度。正向传递中执行的每个操作都是可微的,因此可以通过链式规则来确定相对于每个单个参数(即权重、偏差、说话者矢量值和语言矢量值)的损失导数的函数表达式。使用反向传播的误差和激活(正向传递期间缓存的来自正向传递的每层的输入),从这些表达式计算出梯度值。如前所述,计算图记录了添加元素的位置,并且反向传播会将共同的说话者特性与说话者特性相关联,并将不同说话者的共同语言特征与语言特征相关联。
对于批次中的每个训练示例,这将导致梯度值数组,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取特定参数的所有训练示例的梯度值的平均值)。
然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。针对每个参数到优化程序函数的输入是先前的值、梯度对应值和学习率参数。通常,基于梯度下降的优化程序在损失函数相对于参数的最陡下降方向上更新参数,并以学习率进行缩放。用新值替换参数,并用另一批训练信号迭代该过程。
在实施例中,可以以与上述说话者矢量相同的方式学习语言矢量,然而由于许多说话者属于同一语言,因此其矢量比任何单个说话者矢量都普遍得多。在批次中的训练期间,通过对同一语言批次中所有话语的平均更新来获得对语言矢量的梯度更新,即使每个话语可能来自不同的说话者。
这意味着将通过多次迭代来训练语言矢量,以封装来自不同说话者的该语言所有话语的共同特性,并强调不同语言之间的差异。同时,将训练每个说话者的说话者特性矢量以强调说话者特性的差异,但是由于可以通过语言特性获得语言信息,因此其中说话者所讲语言的影响最小。
在实施例中,在训练期间对语言矢量115施加一个或多个约束,诸如,说话者矢量的平方范数必须小于或等于1。
包括单独的语言矢量强制从该空间
上面描述的系统具有通过批次同时生成不同语言的多个输出的能力。在操作期间,相同话语内的元素可能具有不同的语言代码,因此指示tts系统103生成不同的语言输出。
例如,该系统可以允许用户将单个输入翻译成多种不同的语言。这可以通过提高效率来完成,因为在图形处理单元上进行矩阵-矩阵的计算要比对矢量-矩阵进行一系列计算要快,而图形处理单元已针对此类计算进行了并行优化(因此,批次生成输出要比按顺序单独生成要快)。换句话说,同时在一个过程中而不是顺序地以两种不同的目标语言(从单个输入)生成两个输出会更快。
在上述实施例中,由说话者特性适应模块104生成包括多个值的说话者矢量,每个值与一个特征相对应,然后直接在语音合成模块103中使用。然而,也可以使用说话者特性自适应模块104,生成与说话者矢量中的每个特征相对应的概率分布。然后,从该概率分布中生成说话者矢量,并将其用于语音合成模块103。
图13示出了根据实施例的语音处理系统中包括的处理阶段的流程图。该系统类似于图2(a)的系统,除了在说话者矢量113中包括每个特征的概率分布120之外。因此将省略上面已经描述的元素的描述。
在该实施例中,第一训练算法输出一个或多个参数,该参数表示针对说话者矢量中的一个或多个特征的概率分布120,并且使用该概率分布来生成说话者矢量113。
因此说话者特性自适应模块104输出概率分布120的参数,而不是固定的说话者矢量113,其中分布的参数在语音合成模块103的训练期间是可训练的,并且这些参数用作用于训练说话者特性自适应模块104的训练目标。这可以提供增强的鲁棒性。这也可以考虑到在每个句子话语处,说话者应该由略有不同的特性来表示。
在实施例中,说话者自适应模块104输出长度为2m的矢量。在该示例中,输出表示维度m的多元正态分布(或高斯)的参数。输出矢量的前m个元素表示分布的平均值,而第m+1元素到第2m元素表示对角线的对角线协方差矩阵∑(sigma),其中矩阵的所有其它元素为零。换句话说,每个说话者矢量特征被表示为具有平均值μ和标准偏差σ的高斯分布,其值由说话者特性自适应模块104输出。例如,标准偏差参数也可以表示为方差σ2,或分布的对数方差2log(σ)。
然后,从分布中随机得出说话者特性矢量113中每个特征的值。可以通过从平均值0和标准偏差1的正态分布获得维数为m的随机矢量的过程,从说话者概率分布中获得随机样本,然后将每个项乘以标准偏差σ值并加上平均值μ。这等效于从平均值μ和标准偏差σ值相同的高斯获得随机矢量。然后,以与前面已经描述的相同的方式在语音合成步骤中使用说话者特性矢量113。
图14示出了训练根据实施例使用的语音合成系统的方法。该训练类似于上面关于图6和图7描述的训练,但是增加了说话者概率分布,因此将省略对上面已经描述的元素的描述。训练数据中的每个示例可以包含:语音音频117本身,其被转换为world矢量118;对应的文本112,其通过字素到音素转换器306转换为音素单位116;以及说话者id119。最初将每个说话者id119映射到可训练的说话者概率分布120上。每个说话者id例如与对应的说话者概率分布参数120(例如,与每个特征相对应的平均值和标准偏差)一起存储在查找表中。
因此,训练数据集中的每个说话者都有2m概率分布参数120的对应矢量。对于与同一说话者相对应的每个语音分段,使用相同的参数值120(在训练过程中逐渐更新)。由于对应于同一说话者的不同语音分段将具有相同的参数,因此说话者矢量与文本/单词信息无关。
通过针对分段馈入音素序列116,以与操作期间相同的方式从概率分布参数120生成说话者矢量113并馈入说话者矢量113来进行训练。然后,通过语音合成模块103以与上面关于操作阶段所描述的相同的方式来产生world矢量输出114的序列。可以使用直接从音频信号中提取的目标world矢量118作为真实数据,使用输出world特征矢量114来确定损失105。可以通过反向传播来确定相对于语音合成器的每个可训练参数(包括说话者概率分布参数120)的损失的梯度,并将其用于更新参数。
通过,从平均值0和标准偏差1的正态分布获得维度m的随机矢量的过程,从说话者概率分布中获得随机样本,然后将每个项乘以标准偏差σ值并加上平均值μ。这等效于从均值μ和标准偏差σ值相同的高斯获得随机矢量。这样,由于说话者特性仅仅是标量值和参数之间相乘以及相加的结果,因此参数对于后向传播是可微的。
在训练开始时,随机初始化训练数据中每个说话者的说话者特性矢量概率分布参数120(以及其它可训练参数)。
因此,对于批次中的训练示例,基于反向传播的误差信号和前馈激活信号(每层的输入),计算出相对于每个参数(即神经网络中的权重和偏差、说话者矢量概率分布参数120等)损失的梯度。正向传递中执行的每个操作都是可微的,因此可以通过链式规则来确定相对于每个单个参数(即权重、偏差、说话者矢量概率分布参数120s)的损失导数的函数表达式。使用反向传播的误差和激活(正向传递期间缓存的来自正向传递的每层的输入),从这些表达式计算出梯度值。这可以以与先前已经描述的相同的方式来完成。
对于批次中的每个训练示例,这将导致梯度值数组,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取特定参数的所有训练示例的梯度值的平均值)。然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。针对每个参数到优化程序函数的输入是先前的值、对应的梯度值和学习率参数。通常,基于梯度下降的优化程序在损失函数相对于参数的最陡下降方向上更新参数,并以学习率进行缩放。用新值替换参数,并用另一批训练信号迭代该过程。
一旦完成语音合成系统103的训练,并且生成最终的说话者矢量概率分布参数120(即,与训练数据集中的每个说话者相对应的长度为2m的矢量,包括例如对应于说话者矢量113中的每个说话者特征的平均值和标准偏差值,然后可以使用这些来训练说话者特性自适应模块104以生成说话者矢量概率分布参数120。这以与先前关于训练说话者特性自适应模块104以自身生成说话者矢量113的描述相同的方式进行。通过训练语音合成系统103而获得的说话者矢量概率分布参数120被用作真实数据。
代替均方误差损失函数,可以在说话者自适应模块104的训练期间使用替代损失函数。例如,两个分布之间的距离度量(诸如kl-散度)可以用作用于训练说话者适应模块104的损失函数。
在上述方法中,在训练文本到语音系统103期间,更新说话者矢量概率分布参数120。然后将这些用于训练说话者自适应模块104以生成说话者矢量概率分布120。然而,在替代实施例中,可以以与关于图6和图7所述相同的方式来训练文本到语音系统,其中说话者矢量113本身被更新,并且不使用概率分布参数。在这种情况下,仍然可以通过使用由训练文本到语音系统所生成的说话者矢量113作为真实数据和替代损失函数,来训练说话者特性适应模块104以生成说话者矢量的概率分布参数120。例如,如果仅从tts训练阶段获得固定的说话者特性,则在说话者自适应模块104的训练期间,可以使用输出概率分布与训练的说话者矢量113之间的负对数似然性作为损失度量。
在上文中,已经使用了以例如平均值和标准偏差参数为特征的正态或高斯分布。在这种情况下,对于m个说话者特征,将输出2m个参数(对应于每个特征的平均值和标准偏差值)。然而,可替代地,说话者自适应模块104可以输出长度为3km的矢量。该矢量表示具有k个混合物的高斯混合物的参数。对于每个特征(其中m是特征数),存在3k个标量参数,包括k个分布的平均值μ、标准偏差(或如上所述的标准偏差的变体)σ和缩放参数πk。在这种情况下,混合物由以下方程式e1表示:
对于说话者矢量中的特定特征x。在这里,取代单个高斯分布,每个说话者都由每个特征的k个高斯分布表示,每个分布都有自己的平均值和标准偏差,并且每个参数都由参数πk加权,其中各种分布的总和被归一化为1(一)。如上所述,然后从所描述的分布中获得说话者特性矢量113。
在上文中,表示与说话者相对应的一组特征的说话者特性矢量被用于生成合成语音。这些是从与说话者矢量中每个特征相对应的概率分布中获得的,特征在于一个或多个参数。在语音合成系统的训练期间,训练数据集中的每个说话者都具有由参数定义的对应说话者矢量或说话者矢量概率分布。每个说话者说出许多不同的句子,从而允许系统训练说话者矢量(或参数)以捕获与说话者相对应的特征。
然后训练说话者特性自适应模块,以使用受过训练的说话者矢量或说话者矢量概率分布参数来生成说话者矢量概率分布参数。在训练期间,对于同一说话者的每个语音信号分段,使用相同的说话者矢量或说话者矢量概率分布参数(通过训练过程逐渐更新)。在操作期间,系统可以从新说话者中提取说话者矢量概率分布参数,并使用该参数生成说话者矢量。在实施例中,在操作期间,对于来自同一说话者的每个输入语音信号分段,系统提取相同的说话者矢量概率分布参数,其误差在5%以内。
在上述实施例中,说话者特性矢量113对应于输入句子话语110。换句话说,存在与每个句子相对应的值(或概率分布值)的单个矢量。然而,在替代实施例中,输入句子话语110不是由单个说话者矢量或单个概率分布来表示,而是由与该句子中的每个输入单词相对应的一系列矢量(或概率分布)来表示。
图15示出了根据实施例的语音处理系统中包括的处理阶段的流程图。该系统与图2(a)的系统相似,除了使用了“每个单词”的说话者特性矢量之外。因此,将省略上面已经描述的元素的描述。
可以从语音识别系统101获得源语言文本111的时序信息134。时序信息指示音频信号的哪些帧对应于每个单词。话语被馈送到受过训练的说话者自适应系统104中以获得每个单词的源语言特性130。换句话说,从与话语中的单词相对应的语音信号的每个帧中提取第一特征矢量,例如world特征矢量。将这些馈送到第一训练算法中,该算法生成说话者矢量,该说话者矢量表示与单词相对应的说话者相对应的一组特征。对话语中的每个单词重复该过程,从而产生源语言单词特性130。源语言单词特性130包括与源语言分段中的每个单词相对应的说话者矢量,换句话说是一系列说话者矢量。
文本到文本机器翻译系统102输出比对132,其对应于指示输入文本中的单词与输出文本中的单词的比对的信息。例如,这在图16中示意性地示出。图16示出了源语言话语“alexhadboughtthecar”中的每个单词与目标语言言语“alexhattedasautogekauft”中的每个单词之间的比对方式。这可以直接使用基于短语的机器翻译系统,也可以使用神经机器翻译系统,例如通过关注机制的加权。
然后,使用比对132对与源语言单词顺序相对应的说话者特性矢量130的序列进行重新排序以获得针对目标语言文本112的正确比对。因此,获得与目标语言文本的单词顺序相对应的说话者特性矢量131的序列,称为每个单词目标语言特性131。
在语音合成期间,特性序列131随后在生成world特征矢量时被馈送到tts模块103中。由于特征序列与单词相对应,因此可以将它们映射到音素序列上,因为单词以单调方式映射到音素,即第一个单词可以映射到前三个音素,然后第二个单词映射到第4音素到第6音素,第三个单词映射到第7音素到第8音素,依此类推,并且每个单词的说话者特性矢量也相应地映射到相应的音素。
每个音素的特性序列也由关注机制303产生的权重加权。因此,对于每个输出帧,通过取序列中的说话者矢量的加权和来生成新的说话者特性矢量。在实施例中,由说话者特性自适应模块104生成的说话者特性矢量与关注矢量的长度相同(因此m=h)。取关注矢量(长度为h=m)与每个说话者矢量(每个长度为h=m)的点积,给出了标量序列(一个数字对应于每个说话者矢量)。这些用作权重。然后将每个说话者矢量乘以其对应的权重,然后将所得的加权矢量(长度为h)相加。然后,以与以前相同的方式,例如通过与存储器模块内容级联并输入到第二解码器神经网络,将该加权和用作该帧的说话者特性矢量。
在替代实施例中,相同的权重可用于说话者矢量和代表矢量。在这种情况下,每个代表矢量(其中长度为h)与相应的说话者矢量(其中长度m,可与h不同)级联在一起,以生成多个新的级联矢量,每个代表矢量有一个。在这种情况下,由关注机制303生成的关注矢量的长度为m+h。关注矢量与每个级联矢量的点积被取来获得权重序列,每个级联矢量一个权重序列(即代表矢量与对应的说话者矢量级联,其中一个以上的代表矢量可以与相同的说话者矢量级联,因为每个说话者矢量可以对应于一个以上的音素)。然后,这些权重用于获得该帧代表矢量的加权和,以及该帧说话者矢量的加权和(其中对应于1个以上代表矢量的说话者矢量不只一次包括在总和中,每次具有对应于不同级联矢量的权重)。然后,以与以前相同的方式,将加权和用作该帧的说话者特性矢量。
这允许针对每个单词表达不同的特性,这意味着可以将对源语音110中的某些单词的强调传递到目标输出117。在实施例中,在操作期间,对于来自同一说话者的用于相同的单词的每个输入语音信号分段,系统提取的说话者矢量在5%的容差范围内。
该系统的训练以与先前已经描述的相同的方式进行(即,使用话语级说话者矢量)。然而,在操作期间,说话者特性是在单词级别上生成的,捕获了句子内的不同特性,诸如通过更大声、更安静、更深、更轻而强调某些单词。可以使用概率分布来执行训练,例如使用分布与矢量之间的最大似然,或使用两个分布之间的kl-散度。
图19示出了根据实施例的替代语音合成模块(或tts系统)103的示意图。该系统类似于图4的系统,除了在图4中使用说话者矢量的情况之外,它们还与每个编码器输出(即,每个代表矢量)级联。因此,将省略上面已经描述的元素的描述。在该实施例中,说话者矢量可以更直接地影响关注机制303以控制诸如发音速度的各方面(由关注权重扫描通过输入的速度来控制)。
在该实施例中,音素序列被转换成代表矢量的序列(每个长度为h),如前所述。然后,将话语的说话者矢量(长度为m)与每个代表矢量级联起来,以给出一系列矢量,每个矢量的长度为(h+m)。
在替代实施例中,说话者矢量与编码器输入级联在一起。
对于每个输出帧,关注机制303生成输出关注矢量,如前所述。在该实施例中,关注矢量的长度为h+m。
使用从关注矢量生成的权重取矢量的加权和(每个矢量是与说话者矢量级联的代表矢量,每个矢量的长度为h+m)并将其输入到第一解码器神经网络。取关注矢量(长度为h+m)与每个级联矢量(每个长度为h+m)的点积,给出标量序列(一个数字对应于每个级联矢量)。这些用作权重。然后将每个级联的矢量乘以其对应的权重,并将所得的加权矢量(长度为h+m)加和。其结果被馈送到第一解码器神经网络。第一解码器神经网络像先前一样输出长度为p的矢量,并将其写入存储器模块305。
如先前已经描述,在使用语言矢量以及说话者矢量的实施例中,在操作期间,将语言矢量与说话者矢量组合。然后以相同方式使用所得矢量。
图20示出了根据实施例的训练语音信号处理系统的替代方法的示意图。该方法类似于关于图12所描述的方法,除了如下面将描述的那样包括对抗网络之外。因此,将省略上面已经描述的元素的描述。
在这种方法中,语音合成系统103和说话者特性适应系统104被一起训练,如先前相对于图9所描述。还包括语言矢量,如先前相对于图11和12所描述,从而允许使用多种目标语言。因此,在该实施例中,将多语言语音合成系统和说话者自适应系统一起训练为联合系统。文本到语音系统103使用由语言id识别的语言特征或语言矢量,以及由说话者自适应系统104生成的说话者矢量。语言id是识别包括相同语言的语音信号分段的信息的示例。
如前所述,在操作期间,用户选择输出语言,并且在存储的查找表中找到对应的语言矢量115。语言矢量115在训练阶段被学习并且被存储在查找表中以在操作期间使用。现在将描述训练阶段。
在根据该实施例的训练方法期间,被称为对抗网络300的附加前馈神经网络将说话者矢量(没有语言矢量)作为输入,并且被训练以分类输入语音所属的语言(来自输入说话者矢量)。对抗网络300接收与话语相对应的输入说话者矢量(长度m),并输出语言id。
语言id的大小取决于语言的数量。在一般情况下,如果语言的数量大于2,则将语言id表示为矢量,其中每个元素对应于特定的语言,如果该元素是所使用的语言,则该元素为1。例如,如果可用语言依次为英语、西班牙语和法语,则英语的语言id将为[1、0、0],西班牙语为[0、1、0]而法语为[0、0、1]。这些称为一热矢量,因为一个元素是1,其余元素是零。在这种情况下,对抗网络300可以是前馈神经网络,其具有例如2个各自具有例如128个单位的隐藏层,以及具有softmax输出功能和对应于l种语言的l个节点的输出层。
在仅两种语言的特定情况下,它成为二进制分类问题(语言id可以为0或1),因此语言id可以是单个标量值。在这种情况下,输出层仅输出一个值,并且具有1个输出节点。为了确保输出介于0和1之间,此层使用了s型激活函数。
当对说话者自适应系统104和语音合成系统103进行联合训练时,即使在使用单独的语言矢量特征的情况下,说话者矢量中也会出现一些语言依赖性。使用对抗网络300可以减轻说话者矢量的任何语言依赖性。如果说话者矢量是真正与语言无关的,则对抗网络300将不能根据输入的说话者矢量来预测语言id。因此,与说话者矢量无关的语言越多,损失301(由实际语言id确定为真实数据)将更高。
因此,对抗网络的损失函数301的负数被添加到语音合成系统103和说话者自适应系统104的损失函数105上。这样,对抗网络300学习使用存在于说话者矢量中的任何语言信息来推断语言id,而联合说话者自适应104和语音合成103系统学习产生与语言更无关的说话者矢量。语音系统和对抗网络300被反复训练以彼此对抗。
在说话者自适应系统104和语音合成系统103未被联合训练的实施例中,对抗网络300仍然可以以类似的方式用于在说话者矢量中强制语言无关性。
对于每个批次,训练分两个阶段进行(因为对抗网络无法使用用于训练语音合成系统103和自适应系统104的“负”损失进行训练,因此在单独的步骤中进行训练)。
在阶段1中,如图21(a)所示,说话者自适应系统104以话语方式获取与每个帧相对应的world特征矢量,以生成说话者特性矢量s(以先前描述的方式)。然后,该说话者矢量被馈送到对抗网络300,该对抗网络输出语言id。可以使用原始数据集中的语言id作为真实数据,使用输出语言id来确定语言id损失301。可以通过反向传播来确定相对于对抗网络300的每个可训练参数的损失301的梯度。对于该批次中的每个训练示例,针对批次中的每个话语重复此操作,从而生成梯度值数组,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取特定参数的所有训练示例的梯度值的平均值)。然后,使用优化程序函数,使用每个参数的梯度来根据先前的值计算更新的参数。用新值替换对抗网络300的参数。
因此,使用反向传播的一个步骤来对抗网络300的参数(即权重)优化,而说话者自适应104和语音合成模块103中的其余权重是固定的。
在第二阶段中,如图21(b)中所示,在第一阶段中为每个话语所生成的说话者特性矢量s被馈送到语音合成系统103中,以获得均方损失,如前所述。对于用于第一阶段的同一批次中的每个话语,将说话者矢量113与语言矢量115组合(由数据集中的语言id标识,而不是对抗网络300生成的语言id标识)。如前所述,该组合矢量与从数据集生成的音素单位116一起输入到语音合成系统103中,以输出world特征矢量。如前所述,使用直接从数据集中提取的world矢量来计算均方误差损失105。
说话者矢量115也被再次输入到更新的对抗网络300中,以针对每种话语输出更新的语言id损失301。对于每种话语,将更新的语言id损失301的负数加到均方损失105上,并针对每种话语对组合损失函数进行反向传播,以获得合成系统103和说话者自适应系统104的梯度更新。
在仅使用两种语言的实施例中,在训练的阶段1中使用的对抗网络300的损失函数301可以是二进制交叉熵损失函数:
其中
对于两种语言,在训练的第二阶段中使用的完整损失项105变为:
因此,对于批次中的训练示例,计算相对于每个参数(即神经网络中的权重和偏差、说话者矢量、语言矢量等)的上述损失梯度。在该步骤中,不计算对抗神经网络300的参数的梯度。如前所述,计算图可以记录元素添加的位置,并用于确定梯度值。每个时间步长的计算图的输出函数是时间步长t的损失函数。对于跨时间步长使用的参数,将获取时间步长的梯度值的平均值。
对于批次中的每个训练示例,这将导致梯度值数组,每个梯度值对应于一个参数。将这些参数转换为每个参数的单个梯度值(例如,通过获取特定参数的所有训练示例的梯度值的平均值)。然后,使用优化程序函数(即梯度下降类型优化程序函数)将每个参数的梯度用于根据先前的值计算更新的参数。
在使用两种以上语言的实施例中,交叉熵损失301变为:
其中
在这种情况下,完整的组合损失函数105为:
以与先前描述的相同的方式执行训练。
图23示出了根据另一实施例的语音处理系统中包括的处理阶段的流程图。该系统与图2(a)的系统相似,除了包括时序信息2311和语音级联2301之外,这将在下面描述。将省略上面已经描述的元素的描述。
时序信息2311由语音识别系统101生成。语音识别101将源语言语音作为输入段。语音识别101输出时序信息2311。时序信息2311可以包括源语言语音的每个分段的开始时间和/或结束时间。例如,从更长的输入音频信号中提取分段,其中还从输入音频信号中提取每个提取的分段的开始时间和结束时间。
时序信息2311还可以包括源语言文本111的分段内的每个句子或每个单词的时序信息。这可以由语音识别模块101生成。时序信息可以包含例如源语言文本段中每个单词或句子的开始时间和/或结束时间。开始时间和/或结束时间指示输入音频信号(即源语言语音110)的哪些帧对应于源语言文本111中的每个单词或句子。例如,时序信息2311可以是一组时间戳。
语音合成阶段103然后从目标语言文本段103生成多个语音段117。语音级联2301过程然后使用时序信息2311来比对每个对应的输出语音段17,以产生更长的比对语音信号2312。例如,每个输入分段的开始时间和/或结束时间可用于将输出分段组合在一起,以便时序与输入信号相同。例如,在音频信号对应于输入视频信号的情况下,这可能会有所帮助。
时序上的任何不匹配都可以通过直接修改输出语音分段的持续时间(例如,如下图24所示)或通过修改文本(例如,图25中所示)来补偿。例如,输出分段117可以对应于具有2小时13分钟的开始时间点和2小时13分钟10秒的结束时间点的输入分段。输出分段在2小时13分钟的起点处与其它输出分段组合。如果输出分段的持续时间长于10秒,则可以根据以下附图所述进行修改。与语音分段内的单词或句子有关的时序信息还可用于例如在单词级别或句子级别上控制比对。
时序信息也可以由用户直接编辑,例如在注释与相应视频信号不匹配的情况下。
图24示出了根据另一实施例的语音处理系统中包括的处理阶段的流程图。该系统类似于图2(a)的系统,除了包括将在下面描述的时序信思2311之外。
如上面关于图23所描述,时序信息2311可以在语音识别阶段101生成,并且可以用于组合输出语音分段117。另外地或者可替代地,时序信息可以被输入到语音合成阶段103中,并且可以用以修改输出语音分段117的持续时间。特别地,例如,可以将时序信息作为到声码器301的输入,并用于控制所生成的语音分段117的重新采样。
例如,时序信息2311可以指示输入语音分段110的持续时间(例如,其可以指示分段的开始时间和结束时间)。在确定输出语音分段的持续时间长于输入语音分段的持续时间的情况下,可以在声码器301处执行下采样过程以减少输出音频帧的数量。傅立叶方法是用于重新采样的方法的示例。傅立叶方法包括将数据转换到频域,删除分量,以及转换回时域以进行下采样。例如,删除多个最高频率分量可用于下采样。
在确定输出语音分段的持续时间短于输入语音分段的持续时间的情况下,可以在声码器301处执行上采样过程以增加输出音频帧的数量。上采样过程可以包括原始帧的内插或例如零填充。包括将数据转换到傅立叶域,将零值的高频分量相加,然后再转换回时域的傅立叶方法可用于上采样。
图25示出了根据另一实施例的语音处理系统中包括的处理阶段的流程图。该系统与图2(a)的系统相似,除了包括下面将描述的编辑阶段2401之外。将省略上面已经描述的元素的描述。
编辑阶段2401允许用户修改从语音识别阶段101输出的源语言文本111和/或从文本到文本翻译阶段102输出的目标语言文本112。可以提供用户界面以允许用户手动对文本进行修改。
这可以允许例如由用户纠正由语音识别模块101或文本到文本翻译模块102引入的任何错误。例如,在用户注意到翻译的文本没有传达与原始文本相同的含义的情况下,可以通过替换一个或多个单词,去除一个或多个单词,或者添加一个或多个单词来编辑目标语言文本112。然后,对编辑后的文本执行语音合成103。类似地,在用户注意到源语言文本111与输入的源语言语音110不匹配的情况下,可以通过替换一个或多个单词,去除一个或多个单词,或添加一个或多个单词来编辑源语言文本111。然后,对编辑后的文本执行文本到文本翻译102。
还可以对源语言文本111和/或目标语言文本112进行修改,以减轻输入语音分段110和输出语音分段117的持续时间的不匹配。例如,在输出语音分段117和/或目标语言文本112被识别为比输入语音分段110和/或源语言文本111长的情况下,用户可以编辑源语言文本111和/或目标语言文本112以释义。
虽然已经描述了某些实施例,但是这些实施例仅是通过示例的方式给出,并不旨在限制本发明的范围。实际上,本文描述的新颖的方法和装置可以以多种其它形式来具体实施;此外,可以对本文所述的方法和装置的形式进行各种省略、替代和改变。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除