毕业设计—基于python的语音识别软件设计(案例分析)

摘  要

本文主要介绍了语音识别软件的基础知识,包括语音识别软件的应用、结构以及算法。重点阐述了语音识别软件的原理以及相关算法,通过参考查阅资料,借助MATLAB工具,设计基于python的语音识别软件

系统主要包括训练和识别两个阶段。实现过程包括对原始语音进行预加重、分帧、加窗等处理,提取语音对应的特征参数。在得到了特征参数的基础上,采用模式识别理论的模板匹配技术进行相似度度量,来进行训练和识别。在进行相似度度量时,采用算法对特征参数序列重新进行时间的对准。

python语音识别软件中得到很好的应用,特别是有限状态矢量量化技术,对于语音识别更为有效。基于python的语音识别软件具有分类准确,存储数据少,实时响应速度快等综合性能好的特点。

关键字:语音识别软件;python语言 

Design of speech recognition software based on Python

Abstracts

 This article mainly introduces the basic knowledge of speech recognition software, including its application, structure, and algorithms. The principle and related algorithms of speech recognition software were emphasized. By consulting materials and using MATLAB tools, a speech recognition software based on Python was designed.

The system mainly includes two stages: training and recognition. The implementation process includes pre emphasis, framing, windowing, and other processing on the original speech, extracting the corresponding feature parameters of the speech. On the basis of obtaining feature parameters, template matching technology based on pattern recognition theory is used for similarity measurement for training and recognition. When measuring similarity, an algorithm is used to re align the feature parameter sequence in time.

Python has been well applied in speech recognition software, especially finite state vector quantization technology, which is more effective for speech recognition. The speech recognition software based on Python has the characteristics of accurate classification, less data storage, and fast real-time response speed, which have good overall performance.

Keywords: speech recognition software; Python language;

目    录

第1章 绪论

1.1课题背景

1.2目的和意义

1.3研究现状

1.4语音识别存在的问题

1.5论文主要研究内容及结构安排

第2章  语音识别软件

2.1语音识别软件简介

2.1.1 语音识别软件的结构

2.1.2语音识别的系统类型

2.1.3 语音识别的基元选择

2.2语音识别软件的应用

2.2.1语音识别软件的应用分类

2.2.2语音识别软件应用的特点

2.2.3语音识别软件的应用所面临的问题

2.3语音识别的技术简介

2.3.1 基于语音学和声学的方法

2.3.2模板匹配的方法

2.3.3神经网络的方法

2.3.3Python编程语言

第3章 语音识别软件的理论基础

3.1语音识别软件的基本组成

3.2语音预处理

第4章  语音识别软件的设计方案

4.1语音识别软件的模型设计

4.2语音识别软件特征参数提取提取

4.3 训练与识别

4.4设计结果分析

结  论

参考文献

致  谢

1章 绪论

1.1课题背景

语音识别是人机接口设计的一项重要内容,也是语音信号处理中非常重要的应用技术。人们一直期待着机器的智能化,而能听懂人类的语音是其一个重要方面。目前,语音识别技术已经在声控电话交换、语音拨号系统、信息网络查询、家庭服务、声控智能玩具等诸多领域得到应用。随着信息产业的迅速发展,包括计算机、办公自动化、通信、国防、机器人在内的各个领域,都迫切需要采用语音识别技术来改变其极其不方便的人机接口方式。

语音识别的目的,就是让机器听懂人类口述的语音。机器听懂人类语音有语音层的理解和语义层的理解两个层次,它们分别要求机器将声学信息转换成对应的书面语言及在识别出声学信息的基础上对语音进行理解的功能。本次设计实验为基于python的语音识别软件研究,借助MATLAB工具,设计基于python识别程序,能识别特定人的语音,并分析所设计系统的特性

1.2目的和意义

语音信号处理技术的进步促进了与其关联的相关学科的发展,尤其是在认知科学和人工智能等研究领域。例如:近年来,人工神经网络的研究,其重要动力之一就是数字语音信号处理各项课题的快速发展;同时它的一些研究成果也应用于语音信号的研究中。技术必须与应用紧密结合,现在语音识别己经在许多领域崭露头角,语音识.别听写器、声控拨号、银行信用卡查询等。这是因为,一方面语音识别技术在某些方面已经达到了实用化的程度;另一方面用户的需求也越来越迫切。在手机、PDA等设备中可加入嵌入式语音识别软件。目前的趋势是手持终端体积越来越小,操作要求更加简单,而利用语音进行控制和输入则是十分理想的人机接口方式,其应用前景十分广阔

本课题从上述研究和实用的关系出发,建立了一个语音识别软件。从应用角度看,该系统可以应用到移动电话上实现语音声控拨号功能,也可以应用到掌上电脑等手持终端设备实现电话号码查询或语音控制等功能。从研究角度来看,语音识别技术涉及多学科而且技术实现十分复杂,选择人名语音识别软件作为开展语音识别研究的入手点是比较合理的。因为该系统结构完整、功能简洁,涵盖了语音识别技术的主要内容有利于掌握基础理论和基本方法,为深入研究奠定了基础

1.3研究现状 

语音识别的研究工作大约开始于20世纪50年代,当时AT&T Bell实验室实现了第一个可识别十个英文数字的语音识别软件

60年代,计算机的应用推动了语音识别的发展。这时期的重要成果是提出了动态规划(DP)和线性预测分析技术(LP),其中后者较好地解决了语音信号产生模裂的问题,对语音识别的发展产生了深远影响

70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间规整技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立词语音识别软件。

80年代,语音识别研究进一步走向深入,其显著特征是HMM模型和人工神经元网络(AN)在语音识别中的成功应用。HMM模型的广泛应用应归功于AT&Bell实验室Rabiner等科学家的努力,他们把原本艰涩的HMM纯数学模型C程序化,从而为更多研究者了解和认识。ANN和HMM模型建立的语音识别软件,其性能相当。

进入90年代,随着多媒体时代的来临,迫切要求语音识别软件从实验室走向实用。许多发达国家如美国、日本、韩国以及IBM,Apple,AT&T,NTT等著名公司都为语音识别软件的实用化开发研究投入巨资。

早期的语音识别软件大多是按照简单的模板匹配原理工作的特定人、小词汇表、孤立词识别系统。在训练阶段,用户将词汇表中的每一个词依次说几遍,并且将其特征矢量序列作为模板进行相似度比较,将相似度最高者作为识别结果输出。为了得到好的识别效果,说话者在训练和识别阶段的说话速度应当一致,但是这很难做到。因此,一旦用DTW算法克服了说话速度不均匀造成的时间变化这一困难后,这种系统的性能有显著提高。但是,对于要求更高的语音识别软件,如非特定人、大词汇表、连续语音识别软件,DTW方法则效果较差。

20世纪70年代以来语音识别研究取得了一系列重大进展,尤其是HMM(隐马尔可夫模型)的提出,使得非特定人、大词汇表、连续语音识别这一个课题的研究取得了重大突破。目前语音识别研究的主流便是采用HMM的方法。概言之,就是从语音层直到句法层,将全部语音的统计知识容纳在一个统一的HMM框架之内。虽然这一方法还有不少缺陷有待改进,但是其成果是过去的研究无法比拟的。

基于HMM的孤立词识别系统的原理。这种系统的基本思想为,在训练阶段,用HMM的训练算法(例如Baum.Welch算法),建立系统词汇表中每个词.臃对应的HMM参数,记为Ai;在识别阶段,用Viterbi算法求出概率P(0/2i)值,其中D为待识别词的观测序列;后处理就是选取最大尸(0/办)值所对应的词聊,为D的识别结果

以前,只有IBM,CMU等少数研究机构使用HMM方法,而20世纪80年代以后,HMM开始广泛使用。尤其美国的1000单词规模的DARPA项目在很大程度上推动了语音识别的研究进度。以此为契机,SRI,MIT,CMU,BBN等展开激烈竞争,并且取得许多非常重要的研究成果。在20世纪80年代末期由CMU推出的SPHINX系统,率先突破了语音识别中非特定人、连续语音、大词汇量三大难题,公认为语音识别技术发展中的一个里程碑。汉语语音识别技术起步较晚,但发展很快。目前,国内从事语音识别研究的单位超过了几十个,如清华大学、中科院自动化所、中科院声学所、中国科技大学等。他们结合非特定人孤立词语音识别软件若干关键技术的研究合汉语语音学和语言学的特点,在基础理论、模型和实用系统等方面作了大量的工作,并取得了重要的成果。在我国的“八五”计划和“863”计划中,汉语语音识别的研究得到了大力支持,强有力的推动了汉语语音识别技术的发展。

作为一个专门的研究领域,语音识别又是一门交叉学科,它与声学、语音学、人工智能、数字信号处理、信息论、模式识别理论、最优化理论、计算机科学等众多学科紧密相连。语音识别经过四十多年的发展,己经显示出巨大的应用前景,高性能的语音识别软件相继问世。语音识别技术的市场前景无量,它的应用领域非常广泛,有声控电话交换、语音拨号系统、信息网络查询、家庭服务、宾馆服务、旅行社服务系统、订票系统声控智能玩具、医疗服务、银行服务、股票查询服务、听写机、计算机控制、工业控制、语音通信系统等等,几乎涉及到同常生活的每一个领域。它在一些领域中正在迅速成为一个关键的且具有竞争力的技术,并且必将改变人们的同常生活

1.4语音识别存在的问题

语音技术掀起的第一次浪潮始于20世纪90年代前期,许多著名的大公司如IBM、.苹果、AT&T和NTT等都对语音识别软件的实用化研究投以巨资。在1997年有人提出,“语音时代”已经来临商家也都对此充满了信心,希望语音识别能力能跟人一样。然而,事实并非如此。在实验室中“成功”的语音识别软件在鲁棒性(Robusmess)、灵活性和自适应能力上还远不能满足实际的需要,技术上也显得力不从心。目前,在市场上较少有语音识别软件的成熟应用。厂商并没有人、连续语音、大词汇量的语音识别,而是把当前已经成熟的那部分技术应用到实际的产品中。例如以中小词表为主的命令式语音识别,包括呼叫中心、语音拨号,移动设备中的嵌入式命令控制等,并且对于普通话能达到相当高的识别率。尽管在实验室中语音识别软件达到了很高的识别率,但在实际应用中尚有许多问题。主要问题如下:

  1. 方言或口音会降低语音识别率。对于捐j有八大方言区的中文来说,应用的难度会更大。它既涉及到自然语言理解,又与声学有关。语音识别技术的最终目的是要让用户在“人机对话”时,能够像进行“人与人对话”一样自然。而一旦用户以跟人交谈的方式来进行语音输入时,口语的语法不规范和语序不正常的特点会给语义的分析和理解带来困难
  2. 背景噪音。公共场所大的噪音对语音识别影响很大,即使在实验室环境下,敲击键盘、挪动麦克风都会成为背景噪音。实际应用中,噪音研究的问题就是如何把原始语音从背景噪音中提取出来,这将会使识别系统具有很强的适应性。
  3. 连续语音问题。汉语连接数字语音的连续程度要高于英语连接数字发音,这是由于纯元音语音(即只含元音的语音)在汉语中出现较多,如“1”“2”等,而在英语中却很少见。两个纯元音语音的连续程度要远高于两个普通(包含元音和辅音)语音的连续程度。例如,汉语数码串“1221...'[yao el"cr yao]"的连续发音几乎很难在波形上看出其中每个字的分界点。汉语的这种特点明显加大了汉语数码连续语音的识别难度。

1.5论文主要研究内容及结构安排

本课题的主要研究内容包括以下几个方面:

首先,深入研究了语音信号的特点和语音识别的相关理论与算法,并就各个算法之间的优缺点进行了比较和论述。分析语音信号的时域及频域的特征,对语音信号的特征提取和建模进行了详细的探讨,为进一步分析语音识别算法奠定了基础

其次,研究了语音识别中应用较广的HMM模型,对HMM模型的3个基本问题(评估问题、训练问题和解码问题)进行了详细的介绍。同时,详细分析了系统的实现过程,给出了语音识别软件算法的实现流程。

本文分为四章,具体安排如下:

  • 概述了本文的研究意义,语音识别软件的历史、现状以及存在的问题,并简单介绍了本文的研究内容及结构安排。
  • 简要介绍了语音识别软件的基本组成以及语音识别的基元选择,概述语音识别的应用分类以及其应用特点。介绍了语音识别的几种算法简介。
  • 简要介绍了语音识别软件的基本组成以及相关算法,包括预处理、特征参数的分类及其特点和识别模型的分类和特点。
  • 本次设计的具体流程及其步骤。

2章  语音识别软件

2.1语音识别软件简介

2.1.1 语音识别软件的结构

语音识别本质上是一种模式识别的过程,其基本结构原理,主要包括语音信号处理、特征提取、特征建模(简历参考模式库)、相似性度量和后处理等几个功能模块,其中后处理模块为可选部分

一个语音识别软件主要包括训练和识别两个阶段。无论是训练还是识别,都需要首先对输入的原始语音进行预处理,并进行特征提取。下面具体说明各个模块的基本功能

(1)预处理模块,对输入的原始语音信号进行处理,滤除掉其中的不重要得信息以及北京噪声等,并进行语音信号的端点检测,即判定语音有效范围的开始和结束位置,并进行语音分帧以及预加重等处理工作。

(2)特征提取模块,负责计算语音的升学参考,并进行特征的计算,以便提取出反映信号特征的关键特征参数,以降低维数并便于后续处理。语音识别软件常用的特征参数有幅度、能量、过零率、线性预测系数(LPC)、LPC倒谱系数(LPCC)、线谱对参数(LSP)、短时频谱、共振峰频率、反映人耳听觉特征的Mel频率倒谱系数(MFCC)等。特征的选择和提取是系统构建的关键

(3)训练阶段,用户输入若干次训练语音,系统经过上述预处理和特征提取后得到特征矢量参数(序列),然后通过特征建模模块建立语音训练的参考模式库(可能为参考模板或者模型等),或者对已在模式库中的参考模式作适应性修正。

(4)识别阶段,将输入语音的特征矢量参数(序列)和参考模式库中的模式进行相似性度量比较,将相似度较高的模式所属的类别作为识别的中间候选结果输出。

(5)后处理模块,则对上述得到的候选识别结果继续处理,通过更多的知识(比如:语言学的语言模型、词法、句法和语义信息等)的约束,得到最终的识别结果。

2.1.2语音识别的系统类型 

语音识别技术常常根据各种使用限制建构成为不同类型的系统

  1. 限制用户的说话方式按照语音识别软件对用户说话方式的限制,可以分为孤立词语音识别软件、连续语音识别软件、即兴口语语音识别软件。

(1)孤立词语音识别软件(isolate-word speechrecognition system)是指用户在对系统说话时,相邻的词汇之间的发音要有明显停顿,在这种发音方式下,词汇之间语音信号的声学特征基本不受下文的影响,词汇在语音信号中的起始点和结束点的检测比较容易,系统实现难度较低。

(2)连接词语音识别( connected-words speech recognition)是指中小规模词汇但用词汇本身作为识别基本单元的连续语音识别软件。

(3)连续语音识别软件(continue speech recognition system) 是指中大规模词汇但用子词作为识别基本单元的连续语音识别软件。连接词语音识别软件和连续语音识别软件的共同点是,人在说话时,音流中相邻的词汇之间的发音没有停顿,词汇之间语音信号的声学特征、语调和韵律都受到强烈的下文影响,词汇在语音信号中的起始点和结束点的检测非常困难,系统实现难度较大。

(4)即兴口语语音识别软件(spontaneous speech recognition system)是指用户使用随意的、至少没有在讲话方式上经过特殊准备的语言与系统对话。“即兴口语语音”是相对“朗读式语音”而言的,朗读式语音指符合语法规则的、流畅的,在讲话方式和讲话内容都经过特殊准备的语言,这种语音是以往大多数连续语音识别软件所假设的用户输入方式。即兴口语语音同连续朗读式语音相比有许多不同的特性,它通常是不流畅的,包含许多随机事件,如语音重入、语音更正、语音插入、犹豫、停顿、咳嗽、咂嘴声等,这些特性使得自然口语语音的识别要比朗读式语音识别困难得多。

2.限制用户的用词范围

根据系统所拥有的词汇量大小,可以分为:

小词汇量、中等词汇量(电话拨号、命令控制);

大词汇量以及无限词汇量语音识别软件(听说场合);

小词汇量、中等词汇量的识别系统主要用于语音控制系统,例如电话拨号,命令控制等。大词汇量以及无限词汇量语音识别软件可以用在更一般化的场合,如听写等。

3.限制系统的用户对象

根据系统对用户的依赖程度可以分为特定人和非特定人语音识别软件。特定人系统可以是个人专用系统或特定群体系统,如特定性别、特定年龄、特定口音等。

2.1.3 语音识别的基元选择

语音识别的基元的主要任务是在不考虑说话人试图传达的信息内容的情况下,将声学信号表示为若干个具有区别性的离散符号。可以充当语音识别基元的单位可以是词句、音节、音素或更小的单位,具体选择什么样的基元,经常受识别任务的具体要求和设计者的知识背景影响。一般来说,词句基元广泛应用于中小词汇量语音识别软件,但不适合大词汇量系统,原因在于词句做基元时,大词汇量系统的模型库太庞大,要求庞大的训练数据,识别匹配计算复杂度高,难以满足实时性要求。音节基元在其它语种,例如英语中也有应用,但多见于汉语语音识别,主要因为汉语是单音节结构的语言,音节数目比较有限,大约1300个带调音节,但若不考虑声调,约有408个无调音节。因此,对于中、大词汇量汉语语音识别软件来说,以音节为识别单元基本是可行的。音素基元以前多见于英语语音识别的研究中,但目前中、大词汇量汉语语音识别软件也在越来越多地采用。原因在于汉语音节仅由声母(包括零声母有22个)和韵母(共有28个)构成,且声韵母声学特性相差很大。实际应用中常把声母依后续韵母的不同而构成细化声母,这样虽然增加了模型数目,但提高了易混淆音节的区分能力。

关于基元颗粒度的确定,主要需要权衡基元的数目和基元声学特性的稳定性。基元的颗粒度大,基元声学稳定性高,但需要的数据量大,匹配的计算复杂度也大。相反,颗粒度小,计算复杂度和训练数据量要求相对较小,但基元声学稳定性受协同发音的影响很大,不利于提高识别性能。选取颗粒度合适的基元,也是有待深入研究的课题。

2.2语音识别软件的应用

2.2.1语音识别软件的应用分类

语音识别可以应用的领域大致分为大五类:

(1)办公室或商务系统

典型的应用包括:填写数据表格、数据库管理和控制、键盘功能增强等等。

(2)制造业

在质量控制中,语音识别软件可以为制造过程提供一种“不用手”、“不用眼”的检控。

(3)电信

相当广泛的一类应用在拨号电话系统上都是可行的,包括话务员协助服务的自动化、国际国内远程电子商务、语音呼叫分配、语音拨号、分类订货

(4)医疗

这方面的主要应用是由声音来生成和编辑专业的医疗报告。

(5)其它

包括由语音控制和操作的游戏和玩具、帮助残疾人的语音识别软件、车辆行驶中一些非关键功能的语音控制,如车载交通路况控制系统、音响系统。

2.2.2语音识别软件应用的特点

如果要在所提出的任务中使用语音识别软件,下面几个要求是最基本的:

(1)语音识别软件要对用户有益

例如提高生产率,容易使用,更好的人机界面,或更自然的信息交流模式。现已提出了语音识别在很多方面的应用,多数是利用语音识别的新奇特性来引起用户注意,从而达到增加商业上的销售额的目的。但是,如果对用户没有实在的益处的话,语音识别的这些应用是不会持续长久的。

(2)语音识别软件要对用户“友好”

这种“友好”的含义是:用户在和系统进行语音对话时感到舒适;系统的语音提示既有帮助,又很亲近;当识别系统没有恰当地理解人说出的指令时,系统还得提供一种有效地与人交流的方式,例如某种回退模式。对用户“友好”这个概念是我们坚持人机对话技术的精髓。

(3)语音识别软件必须有足够的精度

识别系统必须达到某种特定的性能要求。有趣的是,由于人在实际生活中对识别系统错误率的感知能力似乎是非线性的,因此只要识别系统的精度超过一定水准,绝对的系统识别能力便显得不太重要了。例如,人们在实际使用一个孤立词识别系统时,很难区分系统的识别精度是95%,还是99%。这是因为,如果识别系统的精度是95%,那么系统识别语音时,平均20次有一次错误;如果识别系统的精度是99%,平均每100次发生一次错误。从用户使用的角度来看,这两种系统都有很高精度,都很少有错误。因此即使偶尔有错误发生,用户也会将其归咎于自己的使用失误,而不会认为是识别系统的问题。但是,当系统的精度低于某一个更低的阈值时,用户就会感觉到识别系统出现了过多的错误,并会认为它不太可靠。实际中,单词错误的发生是不相干的,因此在较高精度下,人觉察到系统出现错误是极少的。

(4)语音识别软件要有实时处理能力

系统对用户询问的响应时间要很短,一般要在人说话后250毫秒之内作出响应。这是非常重要的。只有如此,才能保证人和系统之间的对话持续进行。上面的每一个要求对语音识别软件来说都是很基本的,也是强制性的。只有如此,才能使我们在利用语音识别软件完成--个实际任务时取得成功。

2.2.3语音识别软件的应用所面临的问题

凭心而论,语音识别是一项复杂的技术,特别对于汉语语音识别尤其如此。因此,尽管多年前就有众多公司和研究机构开始了语音技术,包括语音识别和语音合成技术的研究,但直到最近一两年,在国内应该说是今年,才开始有规模的商用。

国外已经有了不少较大规模的语音识别IVR系统或者呼叫中心的应用,然而在国.内,虽然有将语音识别和呼叫中心结合起来的趋势,但仍没有多少应用。这其中虽然有诸多影响因素,但重要的一点就是汉语语音识别技术还不够完善。那么,语音识别技术要进入大规模商用,还要跨越哪些障碍呢?

1.用户的独立性

所谓用户的独立性,就是语音识别软件能够识别有不同嗓音和口音的用户,而无需通过训练软件来使其识别一个特殊用户的声音。目前的许多语音识别软件,是基于标准的发音来进行识别的。而实际上,人们说话千差万别,发音也各不相同,特别对于有口音的语音来说,更是对语音识别软件提出了严峻的挑战。目前的语音识别软件大部分是通过自学习功能,不断的训练来达到软件对于特定用户语音的识别。

将来,语音识别软件的一个发展趋势就是加强处理性,可以识别在一定范围内的各种发音。而实际上,现在有许多语音软件公司在从事这方面的工作,尽量将所有可能的方言发音收入语音库。这样,无需经过专门的特殊训练,软件就能识别用户的发音。

2.自然的语言能力

许多语音识别软件还具有自然的语言能力,这就是软件理解讲话者的能力。这种能力不仅表现在特定的单词上,甚至还表现在短语和完整的句子上。自然的语言意味着两点:第一,它可让用户用句子来表达意思。例如,为表达checking account,用户可使用有更多单词的自然句子,如I'd like my checking account balance。第二指用户可使用包含多义词的句子。例如,我们可说I want to transfer $500 dollars from my savings account to my checking account。这是自然语言的一个主要准则,用户可在一个单句中使用多个多义词。

有少数复杂的语音识别软件使用提示性对话。在这里,语音识别软件提示用户用一个单词或记号来回答。根据专门机构的调查,多数人更喜欢用约定俗成的自然语言,而不喜欢使用提示性对话。人们讨厌的是不完善的自然语言,当能使用完善的自然语言时,人们当然不可抗拒地选择了它。

3.插入的能力

新增的插入的能力是语音识别软件的另一个主要进步。插入的能力允许用户在系统提示时中断系统,但系统依然能知道用户的请求。

这点对于实际的应用来说是有相当意义的。因为人们在说话时,总是在自觉不自觉地思考,经常会在打断语言的连续性,而插入一些补充性的语言。这样的语言,在语法上来说经常不正确的,常规的语音识别软件会很难处理这些语音。

4.身份验证的能力

语音识别销售商最近还介绍了软件身份验证的能力,即根据用户的嗓音和语言特点,来达到识别用户的能力。这在实际中是一个非常有价值的特点,如可用于人事管理上。

2.3语音识别的技术简介

一般来说,语音识别的方法有三种:基于声道模型和语音知识的方法、模板匹配的方法以及利用人工神经网络的方法。

2.3.1 基于语音学和声学的方法

该方法起步较早,在语音识别技术提出的开始,就有了这方面的研究,但由于其模型及语音知识过于复杂,现阶段没有达到实用的阶段。

通常认为常用语言中有有限个不同的语音基元,而且可以通过其语音信号的频域或时域特性来区分。这样该方法分为两步实现:

第一步:分段和标号

把语音信号按时间分成离散的段,每段对应-一个或几个语音基元的声学特性。然后根据相应声学特性对每个分段给出相近的语音标号。

第二步:得到词序列

根据第一步所得语音标号序列得到-一个语音基元网格,从词典得到有效的词序列,也可结合句子的文法和语义同时进行。

2.3.2模板匹配的方法

模板匹配的方法发展比较成熟,目前已达到了实用阶段。在模板匹配方法中,要经过四个步骤:特征提取、模板训练、模板分类、判决。常用的技术有三种:动态时间规整、隐马尔可夫理论、矢量量化技术。

1.动态时间规整

语音信号的端点检测是进行语音识别中的一个基本步骤,它是特征训练和识别的基础。所谓端点检测就是在语音信号中的各种段落(如音素、音节、词素)的始点和终点的位置,从语音信号中排除无声段。在早期,进行端点检测的主要依据是能量、振幅和过零率,但效果往往不明显。60年代日本学者Itakura提出了动态时间规整算法(DTW: Dynamic Time Warping)。算法的思想就是把未知量均匀的升长或缩短,直到与参考模式的长度一致。在这一过程中,未知单词的时间轴要不均匀地扭曲或弯折,以使其特征与模型特征对正。

2.隐马尔可夫法

隐马尔可夫法(HMM)是70年代引入语音识别理论的,它的出现使得自然语音识别软件取得了实质性的突破。HMM方法现已成为语音识别的主流技术,目前大多数大词汇量、连续语音的非特定人语音识别软件都是基于HMM模型的。HMM是对语音信号的时间序列结构建立统计模型,将之看作一个数学上的双重随机过程:一个是用具有有限状态数的Markov链来模拟语音信号统计特性变化的隐含的随机过程,另一个是与Markov链的每一个状态相关联的观测序列的随机过程。前者通过后者表现出来,但前者的具体参数是不可测的。人的言语过程实际上就是一个双重随机过程,语音信号本身是一个可观测的时变序列,是由大脑根据语法知识和言语需要(不可观测的状态)发出的音素的参数流。可见HMM合理地模仿了这一过程,很好地描述了语音信号的整体非平稳性和局部平稳性,是较为理想的一种语音模型。

3.矢量量化

矢量量化(Vector Quantization) 是一种重要的信号压缩方法。与HMM相比,矢量量化主要适用于小词汇量、孤立词的语音识别中。其过程是:将语音信号波形的k个样点的每一帧,或有k个参数的每一参数帧,构成k维空间中的一个矢量,然后对矢量进行量化。量化时,将k维无限空间划分为M个区域边界,然后将输入矢量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。矢量量化器的设计就是从大量信号样本中训练出好的码书,从实际效果出发寻找到好的失真测度定义公式,设计出最佳的矢量量化系统,用最少的搜索和计算失真的运算量,实现最大可能的平均信噪比。失真测度主要有均方误差(即欧氏距离)、加权的均方误差、Itakura2Saito距离、似然比失真测度等。初始码书的生成可以是随机选取、分裂生成法、乘积码书法。在选定了失真测度和初始码书后,就用LBG算法,对初始码书进行迭代优化,一直到系统性能满足要求或不再有明显的改进为止。

核心思想可以这样理解:如果一个码书是为某一特定的信源而优化设计的,那么由这一信息源产生的信号与该码书的平均量化失真就应小于其他信息的信号与该码书的平均量化失真,也就是说编码器本身存在区分能力。

在实际的应用过程中,人们还研究了多种降低复杂度的方法,这些方法大致可以分为两类:无记忆的矢量量化和有记忆的矢量量化。无记忆的矢量量化包括树形搜索的矢量量化和多级矢量量化。

2.3.3神经网络的方法

利用人工神经网络的方法是80年代末期提出的一种新的语音识别方法。人工神经网络(ANN)本质上是一个自适应非线性动力学系统,模拟了人类神经活动的原理,具有自适应性、并行性、鲁棒性、容错性和学习特性,其强的分类能力和输入、输出映射能力在语音识别中都很有吸引力。但由于存在训练、识别时间太长的缺点,目前仍处于实验探索阶段。

由于ANN不能很好的描述语音信号的时间动态特性,所以常把ANN与传统识别方法结合,分别利用各自优点来进行语音识别。

ANN与DTW:

ANN纳入DTW框架中的最简单方法就是利用多层感知器模型(MLP)计算DTW搜索中的局部路径得分。

ANN与HMM:

(1)多层感知器网络来估计隐马尔可夫模型的状态概率输出的方法。

(2)BP算法实现HMM模型参数的重估。

(3)利用自组织神经网络Kohonen的学习矢量量化算法训练产生矢量量化码本。

2.3.3Python编程语言

Python是一种开发语言,能够以直译的方式进行计算机语言,而且可以面向对象编程。它是由Guido van Rossum在十九世纪八十年代末研发出来,并且在九一年公开发行使用。Python有很多特点,比如有简洁的语法,清晰的语句,丰富的类库。正式由于这些优点,能够非常快速的和其他语言进行结合,来实现各种功能模块。很多人给它起了个外号叫“黏黏胶”语言。使用Python快速生成程序的原型,是现在很多程序员使用的方法。如果其中有比较特殊要求的地方,也非常方便的进行修改。

而且PyQt具有双证,为它能够跨平台运行(例如UNIX,微软和苹果的平台)提供了保证。

使用Python语言之前,要进行平台的安装,用户需要根据不同的平台,下载不同的版本,然后进行环境变量的配置,便可以进行运行。

Python 特点:

1.相对于其他计算机语言来说学习起来比较简单:Python的关键字较少,结构相对简单,语法简单,对于刚学编程语言的人来说更容易上手。

2.阅读起来也相对简单:Python代码结构简洁明了,并在定义上看起来也非常清晰,所以在阅读的过程中更加简单。

3.维护起来方便:Python的维护简单方便。

4.标准库特别广泛:Python的最大的最大优势是有非常多的库,而且是跨平台的,而且对系统的兼容性很好,比如在UNIX,Windows和Macintosh系统上都能够进行兼容。

5.具有方便的互动模式:有了互动模式的支持,开发者可以从代码就可以看到结果,这样开发者对程序的测试与调试,变的更方便。

6.可移植性好:Python可以跨平台运行。

7.扩展性非常好的:如果有关键的代码,你可以用特殊的语言进行编写,也能够在系统中调试运行。


3 语音识别软件的理论基础

3.1语音识别软件的基本组成

不同的语音识别软件,虽然具体实现细节有所不同,但所采用的基本流程相似,包括预处理、特征提取、模型训练和识别几个部分。一个典型语音识别软件的实现过程如图3.1所示。

图3.1一个典型语音识别软件的实现过程

3.2语音预处理

3.2.1预加重

对输入的原始语音进行预加重,其目的是为了对语音的高频部分进行加重,增加语音的高频分辨率。

3.2.2加窗分帧

语音具有短时平稳的特点,通过对语音进行分帧操作,可以提取其短时特性,便于模型的建立。帧长取为30ms,帧移取为10ms,然后将每帧信号用Hamming窗相乘,以减小帧起始和结束处的信号不连续性。

3.2.3端点检测

利用短时平均幅度和短时过零率进行端点检测,以确定语音有效范围的开始和结束位置。首先利用短时平均幅度定位语音的大致位置。做法为:

(1)确定一个较高的阈值MH,短时平均幅度大于MH的部分一定是语音段。

(2)分别沿这一语音段向两端搜索,大于某个阈值ML的部分还是语音段,这能较为准确地确定语音的起始点,将清音与无声段分开。

3.2.4语音特征参数提取

语音信号中含有丰富的信息,但如何从中提取出对语音识别有用的信息昵?特征提取就是完成这项工作,它对语音信号进行分析处理,去除对语音识别无关紧要的冗余信息,获得影响语音识别的重要信息。对于非特定人语音识别来讲,希望特征参数尽可能多的反映语义信息,尽量减少说话人的个人信息(对特定人语音识别来讲,则相反)。从信息论角度讲,这是信息压缩的过程。

语音信号的特征主要有时域和频域两种。时域特征如短时平均能量、短时平均过零率、共振峰、基音周期等;频域特征有线性预测系数(LPC)、LPC倒谱系数(LPCC)、线谱对参数(LSP)、短时频谱、Mel频率倒谱系数(MFCC)等。

线性预测分析(LPC)从人的发声机理入手,通过对声道的短管级联模型的研究,认为系统的传递函数符合全极点数字滤波器的形式,从而某一时刻的信号可以用前若干时刻的信号的线性组合来估计。通过使实际语音的采样值和线性预测采样值之间达到均方误差(MSE)最小,即可得到线性预测系数LPC。然后用得到的LPC求出线性预测倒谱系数LPCC即可。

MFCC建立在频谱分析基础上,首先利用人耳的感知特性,在语音的频谱范围内设置若干个带通滤波器,每个滤波器具有三角形或正弦形滤波特性,然后在特征矢量中纳入能量信息,计算相应滤波器组的信号能量,再通过离散余弦变换(DCT)计算其对应的倒谱系数。语音信号的MFCC特征参数主要反映语音的静态特征,语音信号的动态特征可以通过这些静态特征的差分谱来描述,这些动态信息和静态信息形成互补,能在很大程度上提高系统的识别性能。

实验证明LPCC特征参数与MFCC特征参数是较好的表征语音特征的参数。二者都是将语音从时域变换到倒谱域上,前者利用线性预侧编码(LPC)技术求倒谱系数,后者则直接通过离散傅立叶变换(DFT)进行变换。通常MFCC参数比LPCC参数更符合人耳的听觉特性。由于语音的信息大部分集中在低频部分,而高频部分易受环境干扰,MFCC参数将线性频标转化为MEL频标,强调语音的低频信息,从而突出了有利于识别的信息,屏蔽了噪声的干扰,而LPCC参数是基于线性频标的,所以在有信道噪声和频潜失真的情况下,MFCC参数能产生更高的识别精度。

由于LPC方法有效的解决了短时平稳信号的模型化问题,可把语音信号看成是由全极点产生的,很好的逼近共振峰,提供谱估计,算法简洁准确,计算量小,便于实时处理。仅用12个LPG系数就能很好的表示复杂语音信号的特征,大大的降低了信号的冗余度,有效的减少了计算量和存储量,使之成为语音识别和压缩的基础。另外,MFCC参数无任何前提假设,在各种情况下均可使用,而LPCC参数假定.所处理的信号为AR信号,对于动态特性较强的辅音,这个假设并不严格成立,而汉语数字语音识别需要对辅音有较强的分辨能力,所以相对而言,MFCC参数在汉语数字语音识别中优于LPCC参数。此次设计选用MFCC参数。

3.2.5语音训练和识别

矢量量化法(Vector quantization,VQ)一种很重要的模式聚类方法。每个说话.人具有不同的说话特征,可以用特定说话人语音信号的特征参数在空间的分布来描述,用VQ建立识别模型,可以大大减少数据存储量和计算量。顾名思义,矢量量化的量化对象是一个矢量。在语音信号处理中,这样的矢量可能是一帧语音的采样点序列,也有可能是一帧语音的某个特征序列或几个特征序列的组合。我们可以以二维向.量的矢量量化来说明矢量量化的基本原理。

4章  语音识别软件的设计方案

4.1语音识别软件的模型设计

说话人识别系统,矢量量化起着双重作用。在训练阶段,把每一一个说话者所提取的特征参数进行分类,产生不同码字所组成的码本。在识别(匹配)阶段,我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),从而判断说话人是谁。语音识别软件结构模型框图如图4.1所示。

图4.1语音识别软件结构框图

设计分析思路及实现方法:

本文是基于MATLAB来实现该系统的,下面就讨论系统具体的实现方法。从前面的讨论可知,我们要完成的工作主要有:

1、语音的预处理工作,包括语音的读取,分帧等;

2、语音的特征矢量的提取;

3、特征矢量的训练工作;

4、码本识别率的检验工作。

特定人语音识别软件分为两个阶段,即训练(学习)和识别阶段。在训练阶段,系统根据每个使用者说出的若干训练语句建立相应的模型或模型参量参考集。在本系统中通过function code = train(traindir,n)函数实现。而在识别阶段,由待识别人说的语音中导出参量要与训练过程中的参考参量集或模板加以比较。我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),选取距离最小者判断所说的数字。在本系统中通过function test(testdir,n,code)函数实现。

4.2语音识别软件特征参数提取提取

4.2.1特征参数提取过程

特征选择是语音识别的关键问题,特征参数的好坏对语音识别精度有很大影响。为了提高识别精度,我们采用反应了人耳听觉特性的Mel频率倒谱系数(MFCC)作为识别系统的特征参数,该参数的主要特点是对噪声不是特别敏感,我们可采用三角滤波器组来实现。

4.2.2特征提取matlab实现

(1)语音文件的读取

本系统的主要功能是对WAV文件中的语音信号进行识别所以在进行语音信号处.理以前必须读取WAV文件的内容并对其进行相应的处理。

(2)特征参数提取的matlab实现

4.3 训练与识别

4.3.1用矢量量化生成码本

基于VQ的语音是被系统,矢量量化起着双重作用。在训练阶段,把每一个说话者所提取的特征参数进行分类,产生不同码字所组成的码本。在识别(匹配)阶段,我们用VQ方法计算平均失真测度(本系统在计算距离d时,采用欧氏距离测度),从而判断所输入的语音。

VQ的任务就是在给定最小量化速率的条件下使量化失真的值达到最小。最佳矢量量化器必须满足:最近邻准则和平均失真最小两个条件,关键在于码书的设计。

LBG算法是根据这两个原则的一种码本训练递推算法。此算法生成的码本性能与初始码本有很大关系。我们用矢量量化聚类法生成码本,将每个待识的说话人看作是一个信源,用一个码本来表征。码本是从该说话人的训练序列中提取的MFCC特征矢量聚类而生成。只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。本系统采用基于分裂的LBG的算法设计VQ码本。本系统采用基于分裂的LBG的算法设计VQ码本,X(k=1,2,,K)为训练序列,B为码本。

4.3.2基于VQ的说话人识别

本系统基本实现了说话人识别的功能,但也存在着不足,例如若两人的语音特征很接近,就不能很明显的区分开来,这主要是由于没有在提取特征系数前进行端点检测导致的。还有训练的人数有限,识别率和拒识率数据有偏差。

我们在程序中对整个VQ语音识别的实现过程,并结合前几次的实验内容从图形的角度更直观地表示出来。

4.4设计结果分析

本次设计采集了五个人在安静环境下的语音,四个女生和一个男生,语音采样频率为22050HZ,说话简单各异,五个人各录一次音作为训练码本。A同学语音文件命名为s1,B同学语音文件命名为s2,C同学语音文件命名为s3,D同学的文件名为s4,E同学的文件名为s5。在每个不同距离的子文件夹中五个同学语音文件的放置顺序一致。

我们选取了两位女生的训练语音s1和s2进行简单分析。

从图4.2可以看到s1的原始语音波形:

图4.2原始语音波形

图4.3看到在第100帧,窗长为256时它的能量谱和对数能量谱,这对MFCC系数的形成有作用。

图4.3s1的能量谱和对数能量谱图

从图4.3中还可以看出,语音的基音周期大概在350Hz左右。

图4.4是它通过MEL三角滤波器组时的波形图,可以看到很明显的尖峰,这些都是共振峰出现的地方,和语谱图.上的显示结果一致。语音的基音周期大概在350Hz左右。

图4.4通过Mel频率滤波器组的Mel频谱

图4.5显示了不同帧长时的语谱图,因为语音总长度一定,帧长越长,则帧数越少,取的帧是帧长的三分之一处。由图可以看出,随着帧长的增加,显示出的细节部分越少。

图4.5不同帧长时的语谱图

图4.6是s1和s2的二维矢量图表示:

图4.6 s1和s2的二维矢量图

图4.7是s1、s2和它们各自产生的码本的二维矢量图表示:

图4.7 s1、s2和它们各自产生的码本的二维矢量图

从图中我们可以看出,训练好的码本集中出现的位置和原始说话人真实的语音集中出现的位置很相近。表示出识别的效果不错。

结  论

此时项目已经完成,即使实施的时间不是很长,但是在这个过程中需要准备很长的一段时间去对系统设计开发所实际用到的技术进行学习和巩固。在学习的过程中,我逐渐认识到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是掌握了常用的性能和控制方法,我觉得还是相对来说挺容易的。从该系统中,系统的分析和设计的调查数据,已经经历了几个月,并且努力了几个月,该系统现在已经完成。很显然,该系统仍有很多不成熟的地方,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。

在设计系统的过程中还遇到了一个棘手的问题,那就是自己的英语水平还有待提高,很多关于网站技术开发的资料文献都是英文版的,关键词语以及技术性词汇不能很好的理解。只有在借助翻译软件的实时性翻译功能的辅助下才勉强看懂。显然英语水平的高低直接影响到系统的开发过程。

回顾毕业设计的整个过程,既付出了努力与汗水也收获了很多难以忘怀的美好经历。虽然在系统开发过程中经历了各种各样的困难,自己也在不断研究与探索,可是系统的实现仍有许多不足之处。但是经过系统编程工作的学习让我有了更多的信心,相信在未来的路上我会走的更好。


参考文献

[1]Scholz Mirjam Lisa,Collatz Christensen Helle,Blomberg Stig Nikolaj Fasmer,Boebel Simone,Verhoeven Jeske,Krafft Thomas. Artificial intelligence in Emergency Medical Services dispatching: assessing the potential impact of an automatic speech recognition software on stroke detection taking the Capital Region of Denmark as case in point[J]. Scandinavian Journal of Trauma, Resuscitation and Emergency Medicine,2022,30(1).

[2]Peivandi Sahar,Ahmadian Leila,Farokhzadian Jamileh,Jahani Yunes. Evaluation and comparison of errors on nursing notes created by online and offline speech recognition technology and handwritten: an interventional study[J]. BMC Medical Informatics and Decision Making,2022,22(1).

[3]Zuchowski Matthias,Göller Aydan. Speech recognition for medical documentation: an analysis of time, cost efficiency and acceptance in a clinical setting[J]. British Journal of Healthcare Management,2022,28(1).

[4]郭金姣. 基于语音识别的政府服务热线系统设计与实现[D].河北工程大学,2021.

[5]陈景达,郭丽霞. 基于机载语音识别软件中的分段识别设计[J]. 电子技术与软件工程,2021,(14):50-53.

[6]郭正. 基于交通出行的语音识别系统的设计与实现[D].北京邮电大学,2021.

[7]李佳桐. 基于FPGA的智能中文语音识别系统的设计与实现[D].中国电子科技集团公司电子科学研究院,2021.

[8]张允耀. 基于深度神经网络的鲁棒性语音识别系统设计与实现[D].青海师范大学,2021.

[9]胡新月. 语音识别技术在软件工程中的应用[J]. 电子技术与软件工程,2021,(04):240-241.

[10]Yang ZiYi,Yang ZhiJiang,Lu AiPing,Hou TingJun,Cao DongSheng. Scopy: an integrated negative design python library for desirable HTS/VS database design.[J]. Briefings in bioinformatics,2020,22(3).

[11]李亚林. 基于DNN-LSTM语音识别系统的设计与实现[D].东南大学,2020.

[12]陈晋音,叶林辉,郑海斌,杨奕涛,俞山青. 面向语音识别系统的黑盒对抗攻击方法[J]. 小型微型计算机系统,2020,41(05):1019-1029.

[13]张生,冯莹莹,严晓龙. 基于语音识别技术的交际软件设计与实现[J]. 无线互联科技,2020,17(03):44-47.

[14]周钧锴,毕君郁. 基于卷积神经网络的语音识别系统在养老软件中的实现[J]. 电脑知识与技术,2019,15(28):229-230.

[15]孙林超,秦会斌,崔佳冬. 基于Windows的离线关键词语音识别系统设计与实现[J]. 软件导刊,2019,18(09):116-120.

[16]Berlin Leonard. Medicolegal—Malpractice and Ethical Issues in Radiology:Warn Referring Physicians That Errors May Be Present on Reports Proofread Using Speech Recognition Software?[J]. American Journal of Roentgenology,2019,212(5).

[17]赵宏霞. 基于语音识别技术的英语口语学习系统的设计与实现[D].首都经济贸易大学,2018.

[18]Brusilovsky Peter,Malmi Lauri,Hosseini Roya,Guerra Julio,Sirkiä Teemu,Pollari-Malmi Kerttu. An integrated practice system for learning programming in Python: design and evaluation.[J]. Research and practice in technology enhanced learning,2018,13(1).

[19]蒲开放,李智慧,黄明慧,王凤鑫,王超. 基于MATLAB的特定人语音识别软件开发与设计[J]. 数字技术与应用,2017,(04):170-172.

[20]吕晓钢,郝继亮,马怀志,单承刚,夏明乾,汲生涛,王聪聪. 一款基于Android的语音识别记录软件的设计与实现[J]. 福建电脑,2016,32(01):35.

致  谢

时间过得真快,眨眼之间,大学四年的学习生活即将结束,无论是在学习还是生活的这四年,老师们给了我很多帮助,让我终身受益匪浅。老师们不仅帮我树立了正确的人生观和价值观,还帮我养成了很多好习惯,树立了终身学习的意识。在此,我要对我的所有老师表示衷心的感谢。与此同时,我还要感谢陪伴我在这四年里一起成长的伙伴们。他们给了我无私的帮助和关怀,让我在人生最好的四年中获得许多真诚的友谊。

毕业设计是大学四年的最后一个答卷,我们正忙着这四年的美好结束。在毕业项目主题选择的早期阶段,我很紧张担心自己选择的主题很复杂,难以理解,觉得不能这样做会影响我的毕业。是指导老师给我们提供了毕业设计的主题和具体要求,让我们对毕业设计不要太模糊,如果对主题有任何异议,要及时跟他沟通,并且还帮我们介绍他带过的优秀学哥学姐,对我们进行指导,这样再设计上遇到的问题就可以及时得到解决,对我们完成毕业设计提供好的指导条件。

对于毕业设计项目主要是对我在大学所学的专业知识进行一次综合的考验,让我们通过所学的技术知识可以真正的运用到实际动手开发中,通过项目的开发让我意识到自己很多地方的不足,所学知识的不扎实,不能很好的将自己所学的知识运用到系统实际开发上。后来通过自己在图书馆查阅大量书籍,完成系统的设计大纲,阅读笔记和翻译,毕业设计不仅要考验我们的个人能力,还要测验我们的学习态度,做到细节的事情。对于指导老师的帮助,我的毕业设计才可以顺利的完成,我非常感谢。

最后要感谢我的同学们,是你们不断的帮助、鼓励、熬夜、保持调试,测试程序,最终完成语音识别软件的运行。我们在交流,谈论时间,将是我们未来的财富,我要深深地感谢你。

毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!

点赞+收藏+关注  →私信领取本源代码、数据库

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值