语音合成方法及装置
技术领域
本发明涉及语音合成技术领域,尤其涉及一种语音合成方法及装置。
背景技术
语音合成的目的是对给定文本生成自然的语音波形。近年来,研究者们逐渐在语音合成领域采用深度神经网络技术来帮助提高合成效果。
相比较于传统语音合成技术(两种,一种是基于隐马尔可夫模型的参数式语音合成,该技术的缺点是合成的声音带有机械音、音质差;一种是拼接式语音合成,该技术的缺点是拼接处的语音不自然),基于神经网络的语音合成的语音音质更好,其按照技术路线分类主要有两大类:第一类技术是基于神经网络的参数式语音合成,也就是使用神经网络模型逐步取代基于隐马尔可夫模型的参数式语音合成中的统计模型,但是整体架构不变(例如仍旧包含了时长模型、声学模型等分开的模块);第二类技术是基于端到端神经网络的语音合成(新兴技术),对于输入的文本特征序列,直接预测其声学特征序列。
第二类技术的优点是合成的语音在语气自然度方面有着巨大的提升,缺点是端到端神经网络不够稳定,在合成开放的大量文本时,偶尔会出现发音错误。例如,合成的音调不对,或者更严重的是合成的语音类似噪音。
发明内容
本发明实施例提供一种语音合成方法及装置,用于至少解决上述技术问题之一。
第一方面,本发明实施例提供一种语音合成方法,包括:
将接收到文本内容转换为相应的文本特征序列;
使用预先训练的主神经网络模型对所述文本特征序列进行处理以得到对齐信息和第一频谱信息;
根据所述对齐信息判断当前语音合成是否存在发音错误;
如果否,则输出对应于所述第一频谱信息的语音波形;
如果是,则使用预先训练的辅神经网络模型对所述文本特征序列进行处理以得到第二频谱信息;
输出对应于所述第二频谱信息的语音波形。
第二方面,本发明实施例提供一种语音合成装置,包括:
转换模块,用于将接收到文本内容转换为相应的文本特征序列;
第一信息处理模块,用于使用预先训练的主神经网络模型对所述文本特征序列进行处理以得到对齐信息和第一频谱信息;
错误检测模块,用于根据所述对齐信息判断当前语音合成是否存在发音错误;
第一波形输出模块,用于当判定当前语音合成不存在发音错误时,输出对应于所述第一频谱信息的语音波形;
第二信息处理模块,用于当判定当前语音合成存在发音错误时,使用预先训练的辅神经网络模型对所述文本特征序列进行处理以得到第二频谱信息;
第二波形输出模块,用于输出对应于所述第二频谱信息的语音波形。
第三方面,本发明实施例提供一种存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项语音合成方法。
第四方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明上述任一项语音合成方法。
第五方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项语音合成方法。
本发明实施例的有益效果在于:使用两个模型(一主一辅),当检测到主模型可能存在发音错误时,启用辅模型重新计算该语句的频谱。由于两个模型不大可能在同一语句上都出错,该修复方法可以大大降低合成系统最终输出语音的发音错误概率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的语音合成方法的一实施例的流程图;
图2为本发明的语音合成方法的另一实施例的流程图;
图3为本发明的语音合成装置的一实施例的原理框图;
图4为本发明的语音合成装置的另一实施例的原理框图;
图5为本发明的电子设备的一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本发明中,“模块”、“装置”、“系统”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
端到端的神经网络语音合成出现时间不久,第一篇真正意义上的端到端的神经网络语音合成论文由google在2017年3月发表,名为Tacotron:Towards End-to-End SpeechSynthesis。从论文走向实际应用,本行业的从业人员首先需要解决的是端到端的神经网络本身存在的不稳定的问题,这导致基于端到端的神经网络语音合成在合成大量文本时,有时会出现发音错误的现象,这对于线上应用是不能忍受的。为了解决这一缺陷,本领域技术人员通常采用的方式是修改网络结构以及增加训练数据。但是发明人发现通过这两个手段来降低错误率,不仅费时费力,而且其降低比率并不高。
如图1所示,本发明的实施例提供一种语音合成方法,包括:
S10、将接收到文本内容转换为相应的文本特征序列;示例性地,其中,文本特征序列可以为文本内容的特征向量序列。
S20、使用预先训练的主神经网络模型对所述文本特征序列进行处理以得到对齐信息和第一频谱信息;所述对齐信息为所述主神经网络模型的attention层的输出,本质上是输出的声学特征序列与输入的文本特征序列之间的对齐关系矩阵。示例性地,声学特征序列可以是主神经网络模型的某一层的输出向量。
S30、根据所述对齐信息判断当前语音合成是否存在发音错误;具体地,设定某些先验阈值,依次判断当前语句是否存在发音错误。
为对本发明实施例中的对齐关系矩阵进行更加清楚的描述,现给出以下表1进行说明:
第5帧 |
0 |
0 |
0.3 |
0.7 |
第4帧 |
0 |
0.15 |
0.8 |
0.05 |
第3帧 |
0 |
0.3 |
0.7 |
0 |
第2帧 |
0 |
0.75 |
0.25 |
0 |
第1帧 |
0.9 |
0.1 |
0 |
0 |
|
sil |
h |
ao3 |
sil |
其中,表头横向为文本特征序列(简化表达后),表头纵向为声学特征序列,表格内的数值为预测的每一帧声学特征对该文本特征的对齐概率值。观察可知,表1中存在明显突出的对角线:0.9、0.75、0.7、0.8、0.7。
需要说明的是,以上表1仅仅为方便进行说明而给出的一种简化的示例,表格中的帧数要少于实际情况下的帧数。
在一些实施例中,例如,我们通过大量统计发现,在一次合成中,对某一帧声学特征而言(如上表1,按行看),其与文本特征的对齐向量中,最大值应该大于或等于0.7,那么这个0.7可以认为是——每次合成得到的对齐矩阵的每一行(或者每一列)的最大值的底限,是这一种准则的先验阈值(存在多种准则,根据统计结果发现)。
在一些实施例中,对基于对齐信息和所设定的先验阈值判断当前语句中是否存在发音错误举例如下:
当某一次合成中,对齐矩阵中出现有一行的最大值仅为0.3,明显小于先验阈值0.7,那么可以确信该句合成有问题(若将矩阵中每一个数值当作高度值,良好的对齐矩阵应呈现类似对角线‘山脊’的形状)。
上述表1给出的是较好的对齐矩阵的示例,声学特征序列与文本特征序列的对齐矩阵呈现明显的对角线。
以下再给出一种较差的对齐矩阵的示例的表2
第5帧 |
0 |
0.2 |
0.1 |
0.1 |
第4帧 |
0 |
0.2 |
0.1 |
0.1 |
第3帧 |
0 |
0.2 |
0.1 |
0.1 |
第2帧 |
0 |
0.2 |
0.1 |
0.1 |
第1帧 |
0.9 |
0.2 |
0.1 |
0.1 |
|
sil |
h |
ao3 |
sil |
观察可知,表2中不存在明显的突出的对角线。这表明该句声学特征序列与文本特征序列之间的对齐出现了关键性错误,这会导致声学特征的预测不准确,从而大概率导致发音错误的出现。
S40、如果根据所述对齐信息判断当前语音合成不存在发音错误,则输出对应于所述第一频谱信息的语音波形;
S50、如果根据所述对齐信息判断当前语音合成存在发音错误,则使用预先训练的辅神经网络模型对所述文本特征序列进行处理以得到第二频谱信息;
S60、输出对应于所述第二频谱信息的语音波形。
本发明实施例提出了一种利用主辅模型(主神经网络模型和辅神经网络模型)来进行语音合成的方法,该方法可以检测端到端神经网络语音合成中所存在的发音错误,并进行自动修复。
在合成阶段,默认使用主模型合成,每次合成的同时检测本次合成是否可能存在发音错误,如果检测到可能存在发音错误,那么弃用主模型合成结果,转而调用辅模型合成。
具体地,通过主神经网络模型对文本特征序列进行处理以得到相应的对齐信息和第一频谱信息,如果所得到的对齐信息表明当前语句中存在发音错误,则转由辅神经网络模型对文本特征序列进行处理以得到第二频谱信息以用生成并输出最终的语音波形。
使用两个模型(一主一辅),当检测到主模型可能存在发音错误时,启用辅模型重新计算该语句的频谱。由于两个模型不大可能在同一语句上都出错,该修复方法可以大大降低合成系统最终输出语音的发音错误概率。例如,单个模型的错误率是1%,那么利用主辅模型合成的方法可以将错误率降低至(1%)^2,也就是万分之一,并且该方法与修改模型结构、增加训练数据等方法不冲突,可以同时使用,更进一步地降低错误率。
本发明能够显著降低基于端到端的神经网络语音合成的发音错误率,是将该合成技术从实验室原型转化到线上生产环境实用的关键一步,并且基于端到端的神经网络语音合成方兴未艾,学术界与产业界都在积极探索相关技术,尝试不同的网络结构等。本发明的优点在于在新的网络结构下依然有效,随着端到端tts(text to speech,语音合成)不断发展,本发明能使得发音错误率进一步降低。
在一些实施例中,主神经网络模型采用第一样本库进行训练得到,辅神经网络模型采用第二样本库模型训练得到,第一样本库与第二样本库不同。本发明实施例中采用不同的第一样本库和第二样本库来分别训练得到主神经网络模型和辅神经网络模型,从而即保证训练得到的主辅模型能够进行语音合成,而且还能保证主辅模型之间的差异性,以便当主辅模型对同一句话文本进行语音合成时不会同时出现发音错误。这在一定程度上进一步降低了采用本发明的语音合成方法出现发音错误的概率。
如图2所示,在一些实施例中本发明的语音合成方法还包括:
S70、每一次判断当前合成语音存在发音错误时,计数一次;本实施了中可以设置以计数器进行计数,基于本发明实施例的方法没完成对一句话的合成就进行一次计数(主神经网络模型合成语音存在发音错误的情况下)。
S80、当计数值超过设定阈值时,将所述辅神经网络模型配置为新的主神经网络模型,将所述主神经网络配置为新的辅神经网络模型,以用于后续语音合成。
本实施例中,当正在使用的主神经网络模型在多次语音合成的结果中都存在发音错误时,将主辅神经网络模型互换形成新的主辅神经网络模型,以降低再次进行语音合成时再次出现错误并启动辅神经网络模型的概率,从而降低了两遍计算时间导致的时间成本上的开销,提升了语音合成的实时性。
进一步的,在空闲时间还可以对新的辅神经网络模型进行模型结构调整,并且增加训练数据来进一步训练新的辅神经网络模型,从而降低新的辅神经网络模型进行语音合成时出错的概率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作合并,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
如图3所示,本发明的实施例还提供一种语音合成装置300,包括:
转换模块310,用于将接收到文本内容转换为相应的文本特征序列;
第一信息处理模块320,用于使用预先训练的主神经网络模型对所述文本特征序列进行处理以得到对齐信息和第一频谱信息;所述对齐信息为所述主神经网络模型的attention层的输出。
错误检测模块330,用于根据所述对齐信息判断当前语音合成是否存在发音错误;
第一波形输出模块340,用于当判定当前语音合成不存在发音错误时,输出对应于所述第一频谱信息的语音波形;
第二信息处理模块350,用于当判定当前语音合成存在发音错误时,使用预先训练的辅神经网络模型对所述文本特征序列进行处理以得到第二频谱信息;所述主神经网络模型采用第一样本库进行训练得到,所述辅神经网络模型采用第二样本库模型训练得到,所述第一样本库与所述第二样本库不同。
第二波形输出模块360,用于输出对应于所述第二频谱信息的语音波形。
在合成阶段,默认使用主模型合成,每次合成的同时检测本次合成是否可能存在发音错误,如果检测到可能存在发音错误,那么弃用主模型合成结果,转而调用辅模型合成。
具体地,通过主神经网络模型对文本特征序列进行处理以得到相应的对齐信息和第一频谱信息,如果所得到的对齐信息表明当前语句中存在发音错误,则转由辅神经网络模型对文本特征序列进行处理以得到第二频谱信息以用生成并输出最终的语音波形。
使用两个模型(一主一辅),当检测到主模型可能存在发音错误时,启用辅模型重新计算该语句的频谱。由于两个模型不大可能在同一语句上都出错,该修复方法可以大大降低合成系统最终输出语音的发音错误概率。例如,单个模型的错误率是1%,那么利用主辅模型合成的方法可以将错误率降低至(1%)^2,也就是万分之一,并且该方法与修改模型结构、增加训练数据等方法不冲突,可以同时使用,更进一步地降低错误率。
如图4所示,在一些实施例中,本发明的语音合成装置300还包括:
计数模块370,用于每一次判断当前合成语音存在发音错误时,计数一次;本实施了中可以设置以计数器进行计数,基于本发明实施例的方法没完成对一句话的合成就进行一次计数(主神经网络模型合成语音存在发音错误的情况下)。
配置模块380,用于当计数值超过设定阈值时,将所述辅神经网络模型配置为新的主神经网络模型,将所述主神经网络配置为新的辅神经网络模型,以用于后续语音合成。
本实施例中,当正在使用的主神经网络模型在多次语音合成的结果中都存在发音错误时,将主辅神经网络模型互换形成新的主辅神经网络模型,以降低再次进行语音合成时再次出现错误并启动辅神经网络模型的概率,从而降低了两遍计算时间导致的时间成本上的开销,提升了语音合成的实时性。
在一些实施例中,本发明实施例提供一种非易失性计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项语音合成方法。
在一些实施例中,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项语音合成方法。
在一些实施例中,本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行语音合成方法。
在一些实施例中,本发明实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时语音合成方法。
上述本发明实施例的语音合成装置可用于执行本发明实施例的语音合成方法,并相应的达到上述本发明实施例的实现语音合成方法所达到的技术效果,这里不再赘述。本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。
图5是本申请另一实施例提供的执行语音合成方法的电子设备的硬件结构示意图,如图5所示,该设备包括:
一个或多个处理器510以及存储器520,图5中以一个处理器510为例。
执行语音合成方法的设备还可以包括:输入装置530和输出装置540。
处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的语音合成方法对应的程序指令/模块。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例语音合成方法。
存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据语音合成装置的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至语音合成装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可接收输入的数字或字符信息,以及产生与语音合成装置的用户设置以及功能控制有关的信号。输出装置540可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器520中,当被所述一个或者多个处理器510执行时,执行上述任意方法实施例中的语音合成方法。
上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。