首页 > 乐器声学 专利正文
一种基于kaldi的在线语音识别的方法与流程

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

一种基于kaldi的在线语音识别的方法与流程

1.本发明涉及语音识别领域,具体涉及一种基于kaldi的在线语音识别的方法。


背景技术:

2.语音是人类相互交流和通信最方便快捷的手段。如何高效地实现语音传输、存储和通过语音实现人机交互,是语音信号处理领域中的重要研究课题。语音信号处理涉及数字信号处理,语言学、语音学、生理学、心理学、计算机科学以及模式识别、人工智能等诸多学科领域,是目前信息科学技术中发展最为迅速的领域之一。
3.有关语音识别技术的国外研究起始于上个世纪50年代,而在这一时期的研究内容主要只是关于语音学的一些基本概念和原理。在1952年,美国贝尔实验室研究所davis等人成功实现了世界上第一个能识别10个英文数字发音的语音识别系统即audry系统。1960年第一个计算机语音识别系统由英国的denes等人成功实现。到了70年代语音识别在小词汇量、孤立词等方面取得了实质性的进展。80年代以后,由于词汇量比较大、非特定人的连续语音识别研究成为了重点。在这一阶段,研究思路上发生了一定改变,基于统计模型(hmm)的技术思路被提出来,将神经网络技术引入到语音识别问题中,这就改变了原来基于标准模板匹配的思路。90年代,语音识别的实用化研究却取得了很大进展,很多很有影响力的公司针对语音识别都推出了自己的系统。在苹果的ios系统中内建一款的人工智能的助理软件siri。使用该软件用户可以与手机进行对话,使其完成很多服务功能,比如说搜寻资料、查询通讯录、设定闹铃等许多服务。更重要的是它还具有自适应学习的能力,能够不断学习新的语音和语调,能够提供对话式的应答。
4.随着人工智能领域的发展,语音交互系统逐渐被应用于各个领域。语音交互系统能够极大地方便用户操作,简化操作过程,提升操作效率。


技术实现要素:

5.为达到上述目的,本技术提出了一种基于kaldi的在线语音交互系统设计方案,提出包含语音识别、智能问答、语音合成模块的在线语音交互系统设计方案,基于加权莱文斯坦距离的拼音相似度匹配算法,基于深度神经网络的降噪算法。
6.本技术提出了一种基于kaldi的在线语音识别的方法,包括以下步骤:
7.步骤一:通过将音频信号经过ad转换后的pcm码流进行网络组包,将音频数据上传至服务器;
8.步骤二:所述服务器进行在线识别;
9.步骤三:根据应答策略进行在线回答语音合成;
10.步骤四:将所述合成数据传回硬件平台后进行da转换并进行播放。
11.在一个可能的实现方式中,所述步骤一包括:
12.对openfst进行编译,所述openfst是用于将信号的构造、组合、优化和搜索;
13.编译openblas及clapack库,分别用于矩阵运算以及线性代数计算,至此,所有库
均移植到windows上;
14.编译onlinebin解码器。
15.在一个可能的实现方式中,所述步骤二包括:使用人工智能标记语言aiml构建应答系统。
16.在一个可能的实现方式中,所述步骤四包括:
17.调用windows的sapi接口合成应答语音,将应答文本转换为语音输出,其中,合成语音的质量在mos值4分以上。
18.在一个可能的实现方式中,所述方法还包括:系统内部接口的整合及代码编写,其中,在线系统各模块间的信息传递均采用文本文件格式来传递。
19.由于上述技术方案的运用,本发明与现有技术相比具有下列有益效果:
20.(1)使用开源语音识别工具kaldi中的nnet3函数,用dnn

hmm(深度神经网络

隐马尔科夫模型)框架完成了对非特定人连续语音的识别,实时率(处理时间与音频时长之比)低且受噪音影响较小,在低信噪比环境中表现较好,准确率达到项目要求。
21.(2)使用pyaiml框架实现给定话术的任务完成型应答,通过aiml文件中的标签实现对话中上文语境及分支的匹配,并且知识库的内容可以不断进行更新、修改。引入基于拼音的编辑距离作为模糊匹配的距离标准,进一步提高系统识别应答的准确率。
22.(3)使用微软公司提供的sapi接口,对系统给出的应答实现文字转语音的操作,生成的语音清晰、与人声相似度高,质量达到mos值4.0分以上。
23.(4)连接语音识别、策略应答和语音合成三个子模块构建语音识别应答系统,并通过网络模块和dsp端进行连接传送音频,完成在线语音交互的整体流程。
附图说明
24.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1为本发明提供的基于kaldi的在线语音识别的方法的流程示意图;
26.图2为本发明提供的方法中在线语音交互系统各模块接口设计图。
具体实施方式
27.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
28.需要说明的是,在不冲突的情况下,本技术中的实施例以及实施例中的特征可以相互组合。
29.图1为本技术的方法流程示意图。
30.本发明提出一种基于kaldi的在线语音识别系统的实现方法,包含以下步骤:
31.步骤一:研究语音识别的架构、kaldi语音识别工具包的原理及涉及到的算法:基
于深度学习的语音识别算法、基于深度学习的语音降噪算法、基于拼音的模糊匹配算法。
32.步骤二:搭建一个基于windows的kaldi运行环境,具体包括以下步骤:
33.(1)准备好工具,包括git,cmake,visual studio 2017。
34.(2)编译openfst。openfst是一个用于构造、组合、优化和搜索的加权有限状态转换器的库。
35.(3)编译openblas及clapack库。这两个库分别用于矩阵运算以及线性代数计算。至此,kaldi所需的所有库均移植到windows上。
36.(4)编译onlinebin解码器。
37.(5)新建kaldi项目,做好相关配置后读取模型并调试。可以在线识别语音,也可以对wav文件进行解码识别。
38.步骤三:使用人工智能标记语言aiml(artificial intelligence markup language)来构建应答系统。
39.aiml是一种xml兼容的语言,可以根据具体的话术表来创建应答数据库。类似于xml的语法,通过不同的标签来执行功能。比如:<aiml>和</aiml>标签对定义一个aiml文件的开始与结束;<category>和</category>标签对定义一个知识单元(即,话术表中的一组话术);<pattern>和</pattern>标签对定义一个模板块,待匹配用户可能的输入;<that>和</that>标签对用来匹配上文语境;根据<pattern>中的用户输入及<that>中的上文语境,匹配到某一<template>和</template>标签对中的内容,提供返回应答。
40.在实际情况中,前一阶段语音识别结果的可靠度有待提升。在输入文本可靠度有限的条件下,为了得出正确的应答,就需要加入匹配机制。匹配机制在指令池中找出与输入文本最为近似的一个指令,作为应答环节的输入。在这里,可以将输入文本转换为对应的拼音字符串,应用编辑距离(edit distance),在所有指令对应的拼音字符串中找出最近似的,作为匹配指令。进一步,考虑到汉语的发音,调整编辑距离中不同字母插入、删除、替换的权重,得到带权编辑距离,匹配效果更好。
41.步骤四:使用sapi实现语音合成:将应答文本转换为语音输出,是应答系统的最后一个阶段,要求合成语音的质量在mos值4分以上。目前针对中文的开源的语音合成系统资源不是很多。服务器端的语音合成使用的开源tts引擎有espeak、微软sapi(the microsoft speech api)等。但是espeak的语音合成效果不是很好,考虑到服务器采用windows操作系统,可以直接调用windows的sapi接口合成应答语音。
42.步骤五:系统内部接口的整合及代码编写,具体包括以下内容:语音识别模块、问答系统模块和语音合成模块依次相接,完成整体应答系统的全部功能。由于语音识别模块kaldi和语音合成模块sapi使用c++编写,而问答系统模块aiml使用python3编写,所以使用kaldi代码调用aiml的应答函数,并将sapi的部分整合进kaldi代码中,来完成整体流程。
43.在线系统各模块间的信息传递均采用文本文件格式来传递。且为实现基于上下文匹配的实现需求,pyaiml在线语音问答模块被分割为两部分:学习部分、应答部分。
44.首先,kaldi语音识别模块启动时,会同时启动pyaiml模块的学习部分(并行执行)。其次,kaldi语音识别模块将识别出的文本输出到txt文本文件后,将会调用pyaiml的应答部分检索应答数据库获取相应的应答语句,此应答语句将输出到另一txt文本文件中。最后,调用sapi语音合成模块将此文本文件中的内容转换成相应的语音,并输出音频文件。
模块之间的接口设计如图2所示。
45.系统主要完成了以下几点工作:
46.(1)使用开源语音识别工具kaldi中的nnet3函数,用dnn

hmm(深度神经网络

隐马尔科夫模型)框架完成了对非特定人连续语音的识别,实时率(处理时间与音频时长之比)低且受噪音影响较小,在低信噪比环境中表现较好,准确率达到项目要求。
47.(2)使用pyaiml框架实现给定话术的任务完成型应答,通过aiml文件中的标签实现对话中上文语境及分支的匹配,并且知识库的内容可以不断进行更新、修改。引入基于拼音的编辑距离作为模糊匹配的距离标准,进一步提高系统识别应答的准确率。
48.(3)使用微软公司提供的sapi接口,对系统给出的应答实现文字转语音的操作,生成的语音清晰、与人声相似度高,质量达到mos值4.0分以上。
49.(4)连接语音识别、策略应答和语音合成三个子模块构建语音识别应答系统,并通过网络模块和dsp端进行连接传送音频,完成在线语音交互的整体流程。
50.总体来说,低信噪比环境中在线语音识别应答系统的实现是成功的,既完成了语音识别、应答、合成的功能性需求,也满足了实时率、扩展性以及合成音频在质量上的非功能性需求。
51.本文中应用了具体个例对发明构思进行了详细阐述,以上实施例的说明只是用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离该发明构思的前提下,所做的任何显而易见的修改、等同替换或其他改进,均应包含在本发明的保护范围之内。
52.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性地,本技术的真正范围和精神由上述的权利要求指出。
53.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
54.应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
55.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
56.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。