Microsoft Speech SDK孤立词语音识别
VC++基于微软语音引擎开发语音识别总结
关于SAPI的简介API 概述SAPI API在一个应用程序和语音引擎之间提供一个高级别的接口。
SAPI 实现了所有必需的对各种语音引擎的实时的控制和管理等低级别的细节。
SAPI引擎的两个基本类型是文本语音转换系统(TTS)和语音识别系统。
TTS系统使用合成语音合成文本字符串和文件到声音音频流。
语音识别技术转换人类的声音语音流到可读的文本字符串或者文件。
文本语音转换API应用程序能通过IspVoice的对象组建模型(COM)接口控制文本语音转换。
一旦一个应用程序有一个已建立的IspVoice对象(见Text-to-Speech指南),这个应用程序就只需要调用ISpVoice::Speak 就可以从文本数据得到发音。
另外,ISpVoice接口也提供一些方法来改变声音和合成属性,如语速ISpVoice::SetRate,输出音量ISpVoice::SetVolume,改变当前讲话的声音ISpVoice::SetVoice 等。
特定的SAPI控制器也可以嵌入输入文本使用来实时的改变语音合成器的属性,如声音,音调,强调字,语速和音量。
这些合成标记在sapi.xsd中,使用标准的XML格式,这是一个简单但很强大定制TTS语音的方法,不依赖于特定的引擎和当前使用的声音。
ISpVoice::Speak方法能够用于同步的(当完全的完成朗读后才返回)或异步的(立即返回,朗读在后台处理)操作。
当同步朗读(SPF_ASYNC)时,实时的状态信息如朗读状态和当前文本位置可以通过ISpVoice::GetStatus得到。
当异步朗读时,可以打断当前的朗读输出以朗读一个新文本或者把新文本自动附加在当前朗读输出的文本的末尾。
除了ISpVoice接口之外SAPI也为高级TTS应用程序提供许多有用的COM接口。
事件SAPI用标准的回调机制(Window消息, 回调函数or Win32 事件)来发送事件来和应用程序通信。
对于TTS,事件大多用于同步地输出语音。
Speech SDK
SDK中的主要接口
ISpRecognizer接口:语音识别引擎接口,接口对象有
两种实现方式,共享识别引擎和独占识别引擎
ISpRecoContext接口:主要用于接收和发送与语音消
息相关的事件消息,装载和卸载语法规则对象;
ISpRecoGrammar接口:语音文法规则接口,该接口
主要定义了识别引擎需要识别什么?用于建立、装载 和激活语法。
问题:如何定义识别数字的文法?
<GRAMMAR LANGID=”804”> <RULE NAME=”数字” TOPLEVEL=”ACTIVE”> <L> <P> 一</P> <P> 二</P> <P>三</P> ...... <P>九</P> </L> </RULE> <RULE NAME=“数量 “TOPLEVEL ="ACTIVE"> 引用规则元素 <O> <O> 选项元素 <RULEREF NAME="数字"/> </O> <P>十</P> </O> <RULEREF NAME="数字"/> </RULE> </GRAMMAR>
概述
Speech
SDK是微软公司的语音识别与合成开发包 基于组件(COM)的用于语音识别应用程序开发的一 个理想的工具
COM是软件集成的工业标准规范,具有可扩展性、可重用 性和再开发等优点,为开发人员进行二次开发提供了方便 快捷的途径。
计算机语音识别模块的使用说明书
计算机语音识别模块的使用说明书
使用说明:
一.运行本程序需要安装Microsoft Speech SDK语音开发工具。
其安装方法如下:
Microsoft Speech SDK可以在微软的官方网站免费获得,需要下载两个自解压文件,一个是开发包的安装文件(speechsdk51.exe),一个是中文的语言包(speechskd51LangPack.exe)。
文件如图1.1所示。
图1.1 安装文件
运行speechsdk51.exe会弹出自解压对话框,如图1.2所示。
图1.2 解压对话框
单击“Unzip”按钮可以将文件解压到“D:\SDK”路径下,运行“D:\SDK”下的setup.exe
来进行安装,运行setup.exe会弹出Microsoft Speech SDK5.1的安装向导,如图1.3所示
图1.3 安装向导
在向导中,通过单击“Next”按钮一步一步根据提示进行安装。
安装完成后计算机就具有了语音识别能力,输入法中会增加语音输入法。
但此时只能识别英语,要想使计算机能够识别汉语,还需要安装语言包,运行speechskd51LangPack.exe将文件解压,同开发包一样使用setup.exe进行安装。
二.如果不能正常朗读,先运行调节朗读模块,进行默认的初始化
带口型的朗读,朗读英文选Microsoft Mike。
VB基于某SpeechSDK地语音信号识别
课程设计〔说明书〕基于Speech SDK的语音信号识别班级 / 学号 *学生姓名 *指导教师 *课程设计任务书课程名称综合课程设计院〔系〕电*院专业电*程班级*学号*某某*课程设计题目基于Speech SDK的语音信号识别课程设计时间: 20*日课程设计的内容与要求:一、设计说明语音识别研究在国内外已经有了很多年的开展历史,特别是在近些年,随着实验室条件下语音识别的飞速开展,语音识别的应用已经离我们越来越近。
语音识别作为一种重要的信息识别方式在金融、人机交互、电信等领域有着极大的应用空间。
课程设计根本要求①学会 Speech SDK 的使用,掌握其语音识别工具包的设计方法。
②掌握在 Windows 环境下语音信号采集的方法。
③掌握语音信号识别的根本概念、根本理论和根本方法。
④掌握语音信号识别经典算法。
⑤学会用Speech SDK对信号进展识别。
三、实验要求1.根据设计要求制定方案;2.进展语音测试数据的分析。
四、推荐参考资料[1] 李禹才, 左友东, X秀清等. 基于Speech SDK 的语音控制应用程序的设计与实现[J].计算机应用, 2004[2]易克初,田斌,付强编著 .语音信号处理 .:国防工业,2000[4]蔡莲红,黄德智,蔡锐.现代语音技术根底与应用[M].清华大学,2003.五、按照要求撰写课程设计报告指导教师 2011 年 12 月 19 日负责教师年月日学生签字 2011 年 12 月 19 日成绩评定表一、概述41.分类42.语音信号处理53.Microsoft Speech SDK简介7二、方案论证8三、程序设计91.窗口载入与初始化子程序92.语音命令子程序103.听写子程序114.朗读子程序125.预处理与语法规如此12四、性能测试131.程序界面载入测试132.孤立词识别测试143.听写模式测试15五、结论16六、课设体会与合理化建议16附录 I 源程序17附录Ⅱ语法规如此20一、概述语音识别研究在国内外已经有了很多年的开展历史,特别是在近些年,随着实验室条件下语音识别的飞速开展,语音识别的应用已经离我们越来越近。
SPEECHSDK51LANGPACK.EXE
SPEECHSDK51LANGPACK.EXESPEECHSDK51LANGPACK.EXE:语音识别软件开发包的语言包资源简介:SPEECHSDK51LANGPACK.EXE是一个针对语音识别软件开发包(SDK)的语言包资源文件。
它为开发人员提供了在使用语音识别技术进行应用程序开发时所需的多种语言资源支持。
语音识别技术在现代计算机科学领域中扮演着重要的角色。
它允许计算机系统通过解析语音输入来理解和执行用户的指令。
随着语音助手和自动语音识别系统的普及,对语音识别软件开发的需求不断增长。
因此,SPEECHSDK51LANGPACK.EXE的出现可以大大提高语音识别软件开发的多语言支持能力,使开发人员能够创建支持不同语言的语音识别应用程序。
主要功能:1. 多语言支持:SPEECHSDK51LANGPACK.EXE提供了各种语言资源,包括但不限于英语、法语、德语、西班牙语、意大利语、中文等。
这使得开发人员可以根据目标用户的语言偏好进行应用程序开发。
无论用户使用的是什么语言,都可以通过该语言包资源进行语音识别。
2. 语音翻译:该语言包资源还包含了诸如翻译功能等附加语言处理能力。
开发人员可以利用这些功能来将语音输入转换为其他语言,实现语音翻译功能。
这对于需要跨语言沟通的应用程序非常有用,例如国际旅行或在线会议。
3. 自定义语音模型:开发人员可以利用SPEECHSDK51LANGPACK.EXE中的语言包资源来创建自定义的语音识别模型。
这允许他们针对特定的行业或领域进行精确的语音识别。
通过自定义语音模型,开发人员可以提高语音识别的准确性和效果,为用户提供更好的体验。
4. 语音合成:除了语音识别功能,SPEECHSDK51LANGPACK.EXE 还提供了语音合成的能力。
这允许开发人员将文本转换为具有自然流畅语音的音频输出。
这种功能可以广泛应用于语音助手、机器人交互、导航系统等领域,为用户提供更直观、个性化的体验。
基于MicrosoftSpeechSDK的语音关键词检出系统的设计和实现
心智与计算433心智与计算, Vol.1,No.4 (2007), 433-441文章编号:MC - 2007-044收稿日期:2007-08-19出版日期:2007-12-30© 2007 MC– 厦门大学信息与技术学院基于Microsoft Speech SDK的语音关键词检出系统的设计和实现∗林 茜, 欧建林, 蔡 骏(厦门大学智能科学与技术系, 福建厦门 361005)mikecai@摘要:介绍了一个基于连续语音识别技术的语音关键词检出系统的实现.该系统使用微软语音开发平台Microsoft Speech SDK(SAPI)实现了从离线语音库中批量地检出含有指定关键词的语音文件,并提取含有关键词的句子,标注出其中所有的关键词.通过设计关键词检出语法限制了语音识别的语言模型,从而达到检出关键词的目的.同时针对实际应用中需要经常更新关键词、语言模型不固定的问题,采用了动态更新检出语法的方法,使得系统具有实用性.系统还设计了语音命令控制语法以实现语音交互.关键词: 关键词检出; Microsoft Speech SDK;语音识别中图分类号:TP391.42文献标识码: AThe Design and Implementation of a SpeechKeywords Retrieving Application Based onMicrosoft Speech SDKLIN Qian, OU Jian-Lin, CAI Jun(Department of Cognitive Science, Xiamen University, Xiamen 361005, China)mikecai@Abstract: T he design and implementation of a speech keywords retrieving system which is based on continuous speech recognition techniques is reported. The application system is developed with Microsoft Speech SDK (SAPI). It can retrieve audio files containing a predefined set of keywords from the corpus in batch processing and can properly mark all recognized keywords, therefore, the sentences containing the∗基金项目:福建省自然科学基金项目2006J0043;the ‘985 Innovation Project’ on Information Technology of Xiamen University (2004-2007) under Grant No. 0000-X07204 (厦门大学“985工程”二期信息创新平台项目)keywords can be located in the speech sentences. The recognition language model is confined by the keywords retrieving grammar, which can be modified by generating dynamic grammar. The change of keywords in the application can be easily performed by updating the keywords retrieving grammar correspondingly. Furthermore, the speech command and control grammar is designed to facilitate the speech-command manipulation of the system.Key words: keywords retrieving; Microsoft Speech SDK; speech recognition1 引言语音侦听作为情报获取、追踪的基本途径之一,在军事安全和公共安全领域都有着重要的应用.其基本功能之一是根据需要为系统设定若干关键词,当通讯语音中出现了所设定的关键词的语音,系统就将对应的语音段保存在存储设备中,以便进行详细的人工审听.不包含关键词内容的语音段则作删除或备份存档处理.语音关键词识别(speech keyword spotting或speech word spotting)[1-3]是实现此项功能的技术核心.作为语音识别领域的一个重要研究方向,语音关键词识别技术旨在从说话人的内容不受限的连续语音中辨认和确定一组预先定义好的特定词和特定短语.它无需像连续语音识别(continuous speech recognition, CSR)那样对连续语音的整体进行识别,而只需提取出语音段中的敏感信息.目前,国内外的语音关键词识别系统通常采用连续概率密度的HMM模型或半连续的HMM模型[1,2,4].随着研究的逐渐深入和完善,语音关键词识别越来越趋向于借鉴大词汇量连续语音识别(LVCSR)的技术,诸多研究表明,实现语音关键词识别的最好手段就是连续语音识别技术[2,5].通常可以通过改造已有的连续语音识别系统来实现关键词识别系统,在这样的系统构造过程中要解决的两个关键问题是:(1)对非关键词语音进行建模;(2)构造关键词识别的语言模型.本文介绍了一个用微软提供的语音开发平台Microsoft Speech SDK(SAPI)开发的语音关键词识别/检出系统的设计与实现,该系统利用Microsoft Speech SDK的命令控制模式实现语音识别功能,能以批量处理的方式从离线语音库中检出含有指定关键词的语音文件.文中介绍了这个语音关键词检出系统的设计思路,具体描述了各模块的实现方法,重点介绍了命令控制模式下关键词检出语法的构建.实验测试表明,这个采用Microsoft Speech SDK连续语音识别技术开发的系统有良好的语音关键词识别和检出性能,能满足实际应用的要求.2 系统原理和结构该语音关键词检出系统设计的核心和关键在于利用SAPI的连续语音识别技术实现关键词的检出.在语音识别方面,SAPI提供两种识别模式,即听写模式和命令控制模式.听写模式不对输入的语音进行限制,而在命令控制模式下,输入语音必须在语法限定的范围内才能被识别.由于关键词识别和语音命令的识别类似,因此可以利用SAPI的命令控制模式并设置适当的语法来实现语音关键词的检出.在SAPI的语法标志中, "*+"表示多个任意词,当一个语音句子中包含关键词和非关键词时,这个句子实际上可以用规则"*+关键词*+"来描述,即在关键词之前和之后可以有任意的非关键词语音.关键词检出的状态转换如图1所示.S: startA: accept图1 关键词检出状态转换图Fig.1 State transferring of retrieving keywords语音关键词检出系统按功能分为关键词生成模块、关键词检出模块、审听校验模块和语音控制模块.系统的结构图如图2所示.图2 语音关键词检出系统结构图Fig.2 Structure of speech keywords retrieving application系统各个模块的功能如下:关键词生成模块用于生成目标关键词.关键词检出模块根据关键词生成模块生成的关键词在语音库中进行搜索,批量地检出含有关键词的语音文件并生成检出结果,检出结果包括含关键词语音文件的文件名、关键词所在句子的开始时间及该句子.审听模块主要用于对检出的结果进行校验和修正.通过审听语音文件,用户可对误识和漏识的结果进行相应的手动修改.语音控制模块设计了语音命令控制语法,供用户与系统进行语音交互.3 Microsoft Speech SDK 5.1简介Microsoft Speech SDK 5.1是微软公司为开发Windows平台上的语音应用程序和语音引擎而提供的软件开发包,它主要包括兼容Win32的语音应用程序编程接口(Speech Application Programming Interface, SAPI)、微软连续语音识别引擎(CSR引擎)和微软语音合成引擎(TTS引擎),还包括了编译和调试语音应用程序的工具以及示例和帮助文档[6].此软件开发包结构如图3所示[7].图3 Microsoft Speech SDK结构图Fig.3 Structure of Microsoft Speech SDK语音应用程序编程接口SAPI是介于语音应用程序和语音引擎之间的中间层,这一层中包括对于底层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别管理以及文语转换管理等.Microsoft Speech SDK以COM接口调用的形式提供了两个接口:应用程序编程接口(API)和设备驱动接口(DDI).应用程序通过API层与SAPI通信,语音引擎则通过DDI层和SAPI进行交互,用户可以快速开发语音识别或语音合成的应用程序[8].SAPI提供的编程接口主要有两类,一类用于语音识别,另一类用于语音合成.这里只介绍语音识别的主要接口.3.1 ISpRecognizer语音识别引擎接口ISpRecognizer用于创建语音识别引擎的实例,每个ISpRecognizer接口代表CSR 引擎. CSR引擎又有共享语音识别引擎(Shared-recognizer)和进程内语音识别引擎(InProc-recognizer)两种实现方式.进程内语音识别引擎被创建在与应用程序同一个进程里,因此只能被这个应用程序使用,而共享的引擎可以供多个应用程序共同使用.3.2 ISpRecoContext语音识别上下文接口ISpRecoContext能关注不同的语音识别事件,装载或卸载识别时使用的语法文件.3.3 ISpRecoGrammar语音识别语法接口ISpRecoGrammar用于载入、激活、钝化识别语法.语法中定义了用户期望引擎识别的单词、短语和句子.语音识别引擎的工作模式分为听写模式和命令控制模式,语音识别语法对应地分为听写语法和命令控制语法.听写语法工作于听写模式,用于连续语音识别,用户一般无需对听写语法进行额外的修改;命令控制语法工作于命令控制模式,用于识别用户在语法文件中定义的短语或句子,以XML 文件的形式保存.3.4 ISpRecoResult识别结果接口ISpRecoResult用于获取有关识别引擎对输入语音的推测和识别,以及错误识别的有关信息,从而提取出相关的结果.4 系统的设计和实现4.1 语音控制模块的设计和实现和大多数SAPI语音控制应用程序一样,实现此模块需要使语音识别引擎工作于命令控制模式下,再装载一个包含所有控制命令的控制语法,具体实现步骤如下:(1) 初始化COM,并生成ISpRecognizer、ISpRecoContext和ISpRecoGrammar的实例,为识别消息设置通知.(2) 创建、装载及激活控制语法.控制语法中包含所有设定的控制命令,每个命令对应于一个应用功能,如选择语音库、开始检出、保存检出结果等.控制语法保存于一个XML文件中,将此XML文件编译出的cfg文件装载入系统并加以激活,即可启动语音控制功能.4.2 关键词生成模块的设计和实现在本系统中,关键词的生成可以通过手动输入和语音输入两种方式实现.手动输入关键词即通过键盘键入文字,输入的文字被保存在一个字符串数组中,这种方式的实现十分简单,在此不详细阐述.关键词的语音输入采用了SAPI的命令控制模式.由于在命令控制模式下输入的语音必须在语法限定的范围内才能被识别,因此为了准确识别出关键词就必须在关键词生成语法中装载一个预设的词汇库,以便用户从中选择目标关键词进行语音输入.当用户输入的语音段符合关键词生成语法,即用户语音输入的关键词在预设词汇库中,则该词被成功识别,成为关键词.关键词生成语法如下:<RULE ID="VID_KeyCmdType" TOPLEVEL="ACTIVE"><L PROPID="VID_KeyCmdType"><P VAL="VID_KeyWord"><P>关键词</P><RULEREF REFID="DYN_DataRule"/></P>……</L></RULE><RULE ID="DYN_DataRule" DYNAMIC="TRUE"><P>placeholder</P></RULE>规则VID_KeyWord是关键词生成的总规则;规则DYN_DataRule用于装载预设词汇库中的所有词汇,被规则VID_KeyWord引用.DYN_DataRule的属性DYNAMIC的值为TRUE,表示它是一个动态规则.该规则中的placeholder并不是目标词汇,只是一个占位符,之后placeholder将被清除,替换它的是预设词汇库中的所有词汇.以下过程用于动态设置规则DYN_DataRule:cpRecoGrammar->GetRule(NULL, DYN_DataRule, SPRAF_TopLevel | SPRAF_Active | SPRAF_Dynamic,TRUE, &hDynamicRuleHandle);cpRecoGrammar->ClearRule(hDynamicRuleHandle);cpRecoGrammar->Commit(0);这里,首先用GetRule函数获取DYN_DataRule的初始状态hDynamicRuleHandle,再用ClearRule函数清除该状态的所有信息,由此清除了placeholder占位符,最后用Commit(0)提交这种修改.以下过程实现了为规则DYN_DataRule装载预设词汇库中的所有词汇:CSpDynamicString ds(buffer);SPPROPERTYINFO prop;prop.pszName = L"Id";prop.pszValue = L"Property";prop.vValue.vt = VT_I4;prop.vValue.ulVal = i;cpRecoGrammar->AddWordTransition(hDynamicRuleHandle, NULL, ds, L" ",SPWT_LEXICAL, 1.0, &prop);cpRecoGrammar->Commit(0);首先ds获取buffer中存储的词汇,接着设置从状态hDynamicRuleHandle到NULL的状态转移边的属性.prop存储该边的语义属性,类型为VT_I4.其中属性名(pszName)为"Id",属性值字符串(pszValue)为"Property",属性值(vValue.ulVal)为i,i定义为当前词汇库中词汇的序号.通过AddWordTransition函数将ds 添加进从状态hDynamicRuleHandle到NULL的状态转移的边上,使ds中的词汇成为规则DYN_DataRule 的一个元素.反复执行上述操作直到所有词汇均添加完毕,用Commit(0)语句提交所做的修改.这样预设词汇库中的所有词汇全部被添加进规则DYN_DataRule中.在关键词生成过程中,当用户输入的语音在预设的词汇库中,则该语音被正确识别为关键词,否则不能被识别为关键词,需要修改预设的词汇库.关键词生成过程对应的状态转移图如图4所示.h:图4 关键词生成过程状态转换图Fig.4 Status transferring of creating keywords4.3 关键词检出模块的设计和实现关键词检出模块是语音关键词检出系统的主要功能模块,完成从语音库中检出含有关键词的语音文件,并提取出含有该关键词的语音句子、将语音句子识别为文字的功能,是本系统的核心模块.4.4 关键词检出语法的设置由于需要从被识别文件读入语音流进行识别,所以本模块中需要创建一个进程内语音识别引擎且工作在命令控制模式下,同时还需设置一个关键词检出语法用于限制检出.SAPI的语音识别语法一般预先设置在一个XML文件中,例如4.1节的控制语法文件中预先设置了语音控制模块的所有控制命令;也可以根据给定的命令集(闭集)动态生成控制语法,例如4.2节的关键词生成模块根据预设词汇库动态地生成语法.为了采用命令控制模式来实现关键词检出,检出语法除了包含关键词外,还需要包含非关键词.因此利用规则"*+关键词*+"可使检出语法包含关键词(闭集)和非关键词(开集),从而使语音识别引擎能够识别由关键词和非关键词组成的句子,实现关键词检出.这是本模块主要解决的问题,也是整个系统设计的关键.关键词检出语法定义如下:<RULE ID="VID_KeyGrammar" TOPLEVEL="ACTIVE"><P><O>*+</O><RULEREF REFID="DYN_KeyWordRule"/><O>*+</O></P></RULE><RULE ID="DYN_KeyWordRule" DYNAMIC="TRUE"><P>placeholder</P></RULE>规则VID_KeyGrammar是关键词检出的总规则;规则DYN_KeyWordRule用于装载关键词生成模块生成的关键词,被规则VID_KeyGrammar引用.设置动态规则DYN_KeyWordRule时采用和设置关键词生成语法中的规则DYN_DataRule相同的方法,先清除placeholder占位符,再将关键词生成模块生成的关键词添加进规则DYN_KeyWordRule中.由于实际应用中需要经常更新关键词,因而在改变目标关键词后,需要重新执行一次检出语法生成过程实现检出语法的实时更新,以生成新的连续语音识别时采用的语言模型.4.5 在语音库中检出含关键词的语音文件在SAPI的语音识别引擎处理语音文件之前需要设置语音输入流的格式.SAPI支持采样率为8、11、12、16、22、24、32、44或48kHz,字长为8或16Bit,声道数为单或双的输入流.经比较后,本系统将输入流格式设置为SPSF_8kHz16BitStereo,即采样率为8kHz,字长为16Bit,双声道.在关键词检出语法被激活后,语音识别引擎便可以自动识别语音输入流.在识别一个语音句子后,若该句子符合检出规则,即包含关键词,则语音识别引擎发出识别消息SPEI_RECOGNITION;否则发出错误识别消息SPEI_FALSE_RECOGNITION.当系统接收到消息SPEI_RECOGNITION后即可通过ISpRecoResult接口取出识别时间点和对应的文字识别结果.当一个语音文件识别结束后,识别引擎向系统发出SPEI_END_SR_STREAM消息,此时可继续下一个文件的识别,从而达到对语音库中的文件进行批量处理的目的.4.6 关键词定位当系统接收到识别消息,将检出结果显示之前需要对识别出的句子中的关键词进行定位,即标示出句子中的所有关键词,以便对检出结果有更加清晰和直观的了解.定位过程实际上是在一个字符串中查找指定的各个子串的位置,可以简单地使用C语言中的查找函数来实现.但是当关键词数目比较多时,需要重复使用查找函数,具体来说,若用户设定N个关键词,则对每一句识别出的句子,都要进行N遍关键词查找,这使系统耗时很大.由于系统的主要目的是检出含有关键词的句子,希望尽可能节约查找的时间,因此本系统采用了高效的单字符串匹配算法--BMHS算法[9]和多字符串匹配算法--Wu Manber算法[10]来实现字符串查找.这两种算法产生于英文环境,但都适用于中文环境,因为汉字在计算机中用两个字符表示,因此可以把汉字的匹配当成两个单字符的匹配,原理与单字符匹配相同,算法性能也相同.具体的算法原理在此不赘述.4.7 审听校验模块的设计和实现由于SAPI的识别不可避免地会出现错误,所以为了增强系统的可用性,系统中设置了审听校验模块,用于审听可能被误识的语音文件或文件中的个别句子,并为人工修改机器识别的结果提供操作环境.审听功能主要使用了MCI(Media Control Interface)媒体控制接口来完成语音文件的播放.MCI是Microsoft提供的一组多媒体设备和文件的标准接口,可以方便地控制绝大多数多媒体设备,包括音频、视频、影碟、录像等,因此可以轻松地应用MCI实现审听功能.用户通过此模块,即可以在审听语音文件后对识别错误的结果进行手工修改、更新.5 总结本文利用Microsoft Speech SDK的连续语音识别技术实现了语音关键词检出系统,该系统可以自动检出包含用户关心的关键词的语音,因此不需人为地监听所有语音,大大提高了语音信息过滤的工作效率.通常在Microsoft Speech SDK的命令控制模式下,用户只能按语法文件中的规则进行语音控制,而这些规则通常都是给定的文本,因此用户的命令属于一个闭集合.而本文中关键词检出语法虽然也是基于规则的,但是它将关键词(闭集)和非关键词(开集)结合,使既包含关键词、又包含非关键词的输入语音同样能被识别.由此设置的检出语法限制了连续语音识别时采用的语言模型,达到检出关键词的目的.同时这些关键词并不是在一开始就加入检出语法的,而是在动态设置关键词的过程中动态地生成,因此具有一定的灵活性,可针对不同的关键词识别需要进行检出.在测试本系统时,用离线语音库中的语音文件对SAPI进行训练后再进行关键词检出,检出结果显示关键词的检出率在95%以上.虽然检出结果中存在对某些非关键词的误识,但不影响系统对语音库的过滤功能,因此系统具有一定实用性.参考文献:[1] Wilpon J G, Rabiner L R, Lee C H, et al. Automatic recognition of keywords in unconstrained speech using hidden Markovmodels[J]. IEEE Transactions on Acoustics, Speech, and Signal Processing,1990, 38(11): 1870-1878.[2] Ling Y. Keyword Spotting in Continuous Speech Utterances[D]. School of Computer Science, McGill University, Canada,1999.[3] Amir A, Efrat A, Srinivasan S. Advances in phonetic word spotting[C]//Proc. of the 10th International Conference onInformation and Knowledge Management. New York: ACM Press, 2001:580-582.[4] Yan B F, Guo R, Zhu X Y, et al. An approach of keyword spotting based on HMM[C]//Proc. of the 3rd World Congress onIntelligent Control and Automation. Hefei: Press of University of Science and Technology of China, 2000: 2757-2759.[5] Huang X D, Acero A, Hon H W. Spoken language processing: a guide to theory, algorithm, and system development[M].Upper Saddle River: Prentice Hall PTR, 2001.[6] Microsoft Speech SDK(SAPI) 5.1 Help. Microsoft Corporation, 2001.[7] Chen B F. Development of Chinese speech application under Net platform.[8] /china/community/program/originalarticles/techdoc/Cnspeech.mspx.[9] Yang X J, Chi HS. Digital processing of speech signals[M]. Beijing: Publishing House of Electronics Industry, 1995.[10] S unday D M. A very fast substring search algorithm[J]. Communications of the ACM, 1990, 33(8): 132-142.[11] W u S, Manber U. A fast algorithm for multi-pattern searching. puter Science Department, University ofArizona, 1994.作者简介:林茜(1985-),女,硕士研究生,主要研究领域为人工智能,自然语言处理。
基于Microsoft Speech SDK和OGRE的语音驱动三维面部动画研究
3 X ML表情标签
Mi c ms o f S p e e c h S D K可以解析符 合超文 本标记语 言 的 XML格 式文件 . 用 于文本信息输入 . 我们 在其原有标签基础上增加 了表情标 签< f a c i a l > < / f a e i a l > .由于 O G R E的面部动画提供 了一个具有 ” s a d ” 、 ” h a p p v ” 、 ” ma d ” 三个维度的表情模型 , 我们亦为添加的表情标 签设 置了 三个 属性" s a d ” 、 ” h a p p y ” 、 ” m a d ” , 并 且每个 属性的取值范 围为 0 — 1 0 ,如下 :
0 引 言
1 系统原理与结构
语音 驱动三维面部系统 . 主要包括逻辑分析器 、 1 T r S引擎 、 动 画合 成器等多个模块 .能够对于输入 的 X ML格式汉语文本提供 T T S语音 输 出以及生动的 二 : 维动画 同步 . 本系统基于 Mi c r o s o t f S p e e c h S D K 5 . 1 和O G RE三维渲染引擎 .下文对系统实现的关键技术给出了描述 . 系 统流程图如图 1 所示 。
本 系统基于 M i c 1 " O s o f t S p e e c h S D K 5 . 1 . 该S D K提供 了一套语 音识 别( s R ) 和语音合 成r r r s ) 系统 接 口, 完 全支持简体 中文语 音系统 的开 基于语音驱动 的三维 动画技 术是当前计算机 图形学 以及 虚拟现 发。 它基于 C O M标准开发 , 使程序设计人员从复杂的语音技术细节中 实领域 的研究热点之一 . 九十年代末 期 . 基于英文文本 的语音 驱动的 解放 出来 .仅需面 向逻辑问题即可使用 S D K中的资源开发语音识别 口型动画技术得到的迅速 的发展 . 随后该技术在汉语语音驱动动画技 ( s R ) 和语音合成( 1 T r s ) 的应用程序 , M i c r o s o t f S p e e c h S D K 5 . 1 结构如图 术领域也得到了广泛的应用 语音驱动三维动画技术 . 将 口型动画参 2所示 。 数 和表情动画参数分离为两个正交分量。 在汉语 口型动画领域哈尔滨 2 . 2 O G R E三维渲染 弓 1 擎简介 工业 大学 、四川大学等在 1 3型实时模拟技术方面取得 了较好的成果 . O G R E f O b i e c t — O i r e n t e d G r a p h i c s Re n d e i r n g E n g i n e )是 一 个 基 于 但都 是基于静态人脸模型数据库实现 . 其方法在实际虚拟现实产品开 c + + 的面 向对 象的商业级 的 3 D渲染引擎 . O G R E拥有 良好 的内部构 发中应用 的难度较大 本文以 Mi c r o s o t f S p e e c h S D K提供的 1 v I . S接 口 架. 可 以使研发人 员更容易 、 更 直接地利用硬 件加速 的 3 D图形系统 以及 OG R E的 F a c i a l An i m a t i 0 n模型为基础 . 扩展了 XML标记增加表 开发应用 O G R E对 于底层 的渲染 系统库( D i r e c t 3 D和 O p e n G L ) 提供 情标签并构建 了一个便于复用的准工业级汉语语音 驱动面部动画解 同等支持 . 并且隐藏 了所有细节 . 提供 了一 个基于世界对象和其他直 决 方 案 观类的接 口
Speech API使用方法
Speech API使用方法微软语音识别分两种模式:文本识别模式和命令识别模式.此两种模式的主要区别,主要在于识别过程中使用的匹配字典不同.前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字典由sdk提供.适用于没有预定目标的随机听写之类的应用.同时因为词汇量大直接导致识别的精度降低,识别速度较慢.后者的字典需要开发者自己编写,就是你们所说的xml文件.xml文件作为一种数据存储的方式,有一定的格式,定义了sdk需要确定的一些标签,和用以匹配的词汇.这种方式由开发者定义词汇的数量,大大降低匹配过程中需要检索的词汇量,提高了识别速度.同时因为侯选项极少,所以一般不会识别错误.其缺点也是明显的:词汇量小,只有预先输入字典的词汇可以被识别出来,所以一般用来作为常用命令的识别,方便用户操作,代替菜单命令等.利用微软Speech SDK 5.1在MFC中进行语音识别开发时的主要步骤,以Speech API 5.1+VC6为例:1、初始化COM端口一般在CWinApp的子类中,调用CoInitializeEx函数进行COM初始化,代码如下:::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); // 初始化COM注意:调用这个函数时,要在工程设置(project settings)->C/C++标签,Category中选Preprocessor,在Preprocessor definitions:下的文本框中加上“,_WIN32_DCOM”。
否则编译不能通过。
2、创建识别引擎微软Speech SDK 5.1 支持两种模式的:共享(Share)和独享(InProc)。
一般情况下可以使用共享型,大的服务型程序使用InProc。
如下:hr = m_cpRecognizer.CoCreateInstance(CLSID_SpSharedRecognizer);//Sharehr = m_cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);// InProc如果是Share型,可直接进到步骤3;如果是InProc型,必须使用ISpRecognizer::SetInput 设置语音输入。
基于Microsoft speech sdk5.1的英语语音合成教学软件的设计与实现-精选教育文档
基于Microsoft speech sdk5.1的英语语音合成教学软件的设计与实现Microsoft Speech SDK5.1是目前最新的微软语音合成识别开发工具包。
在大多数情况下此工具包用于语音识别系统的开发,基于西北地区英语教学中听力和口语能力低于其他省市的教育现状,特利用此工具包的语音合成功能开发了英语语音合成教学软件,希望在英语教学中发挥一定的作用。
1 关于Microsoft Speech SDK5.1Microsoft Speech SDK是Microsoft公司开发的一套语音软件开发工具包,SDK5.1是最新版本,SDK5.1提供了语音识别和合成的类库以及API接口,可以用Visual C+ +、C#、Delphi、Visual Basic等进行开发。
本文主要讨论使用Delphi进行的开发工作。
2 英语语音合成教学软件的功能、设计原理和实现方法2.1 实现功能描述中英文文章朗读,中英文文章录音(使用于课件),词典,初高中各年级单词库,单词阅读连读,当前单元单词测试,单词库自制,语速调整等功能。
2.2 开发中使用的sdk控件及设计原理在使用Delphi进行Microsoft Speech SDK5.1语音编程时需要安装Micosoft Speech ObjectLibrary[Version5.1]ActiveX控件,Delphi中导入方法是Project ->Import Type Library对话框Micosoft Speech Object Library[Version5.1],控件生成在ActiveX控件页面,用于语音合成的控件为TspVoice。
使用TspVoice控件的Speak()函数来实现语音合成功能,由于TspVoice可以发出标准的英文朗读,因此可以实现英语听力、口语教学软件设计。
2.3 英语语音合成教学软件系统结构2.4 主要实现方法2.4.1 语音合成及中英文切换语音合成使用TspVoice控件的Speak函数实现,中英文切换使用下列语句:SpVoice1.Speak(''+内容+'',1);//用于阅读英文,发音为VW Kate女声。
Speech SDK使用说明
微软Windows Speech SDK编程入门2009-02-24 13:33一、SAPI简介软件中的语音技术包括两方面的内容,一个是语音识别(speech recognition) 和语音合成(speech synthesis)。
这两个技术都需要语音引擎的支持。
微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。
SAPI全称 The Microsoft Speech API.相关的SR和SS引擎位于Speech SDK开发包中。
这个语音引擎支持多种语言的识别和朗读,包括英文、中文、日文等。
SAPI包括以下组件对象(接口):(1)Voice Commands API。
对应用程序进行控制,一般用于语音识别系统中。
识别某个命令后,会调用相关接口是应用程序完成对应的功能。
如果程序想实现语音控制,必须使用此组对象。
(2)Voice Dictation API。
听写输入,即语音识别接口。
(3)Voice Text API。
完成从文字到语音的转换,即语音合成。
(4)Voice Telephone API。
语音识别和语音合成综合运用到电话系统之上,利用此接口可以建立一个电话应答系统,甚至可以通过电话控制计算机。
(5)Audio Objects API。
封装了计算机发音系统。
SAPI是架构在COM基础上的,微软还提供了ActiveX控件,所以不仅可用于一般的windows程序,还可以用于网页、VBA甚至EXCEL的图表中。
如果对COM感到陌生,还可以使用微软的C++ WRAPPERS,它用C++类封装了语音SDK COM对象。
二、安装SAPI SDK。
首先从这个站点下载开发包:/speech/download/sdk51Microsoft Speech SDK 5.1添加了Automation支持。
所以可以在VB,ECMAScript等支持Automation 的语言中使用。
版本说明:Version: 5.1发布日期: 8/8/2001语音: English下载尺寸: 2.0 MB - 288.8 MB这个SDK开发包还包括了可以随便发布的英文和中文的语音合成引擎(TTS),和英文、中文、日文的语音识别引擎(SR)。
VB基于Speech SDK的语音信号识别
课程设计(说明书)基于Speech SDK的语音信号识别班级 / 学号 *学生姓名 *指导教师 *课程设计任务书课程名称综合课程设计院(系)电*院专业电*程班级* 学号* 姓名*课程设计题目基于Speech SDK的语音信号识别课程设计时间: 20* 日课程设计的内容及要求:一、设计说明语音识别研究在国内外已经有了很多年的发展历史,特别是在近些年,随着实验室条件下语音识别的飞速发展,语音识别的应用已经离我们越来越近。
语音识别作为一种重要的信息识别方式在金融、人机交互、电信等领域有着极大的应用空间。
课程设计基本要求①学会Speech SDK 的使用,掌握其语音识别工具包的设计方法。
②掌握在Windows 环境下语音信号采集的方法。
③掌握语音信号识别的基本概念、基本理论和基本方法。
④掌握语音信号识别经典算法。
⑤学会用Speech SDK对信号进行识别。
三、实验要求1.根据设计要求制定方案;2.进行语音测试数据的分析。
四、推荐参考资料[1] 李禹才, 左友东, 郑秀清等. 基于Speech SDK 的语音控制应用程序的设计与实现[J].计算机应用, 2004[2]易克初,田斌,付强编著 .语音信号处理 .北京:国防工业出版社,2000[3]胡航编著.语音信号处理.哈尔滨:哈尔滨工业大学出版社, 2000[4]蔡莲红,黄德智,蔡锐.现代语音技术基础与应用[M].清华大学出版社,2003.五、按照要求撰写课程设计报告指导教师2011 年12 月19 日负责教师年月日学生签字2011 年12 月19 日成绩评定表目录一、概述 (5)1. 分类 (5)2. 语音信号处理 (5)3. Microsoft Speech SDK简介 (7)二、方案论证 (8)三、程序设计 (10)1. 窗口载入及初始化子程序 (10)2. 语音命令子程序 (11)3. 听写子程序 (11)4. 朗读子程序 (12)5. 预处理及语法规则 (13)四、性能测试 (14)1.程序界面载入测试 (14)2.孤立词识别测试 (14)3.听写模式测试 (16)五、结论 (16)六、课设体会及合理化建议 (17)附录 I 源程序 (18)附录Ⅱ语法规则 (21)一、概述语音识别研究在国内外已经有了很多年的发展历史,特别是在近些年,随着实验室条件下语音识别的飞速发展,语音识别的应用已经离我们越来越近。
用Microsoft Speech SDK实现语音识别和语音合成
接库 , 释放资源 .
P re u >Deci t( ; ct n t at ae ) v L V md ik "p C S ) n ipV m ) f C C d ( i p Me u f C n) <
( Unnt l e ) iiai ( ; iz
d l e V nd ik e tp C t n ; e S d l ep V rd ee c C a ; t d l ep . n ; e t CMe u e
pCVT xt n w e CVo c Te t ie x :
h s F Re = CVCmd
> l i( VC Sn ) nt p md ik :
i( Re) r i 1 n h f eul L r ; h s p Re = CVCmd > En b e( a h tTRU ) S ; i h . f Re ) ( s tlF l eUH :
C eN t y i ts oi Sn f k类 在 响应 语 音 消息 时 不 同命 令 的 标 志 为 &) mma d e0 nz n R cg i e函数 的第一个 参数 .
2 3 结 束 时 的 处 理 .
பைடு நூலகம்
用 中可根据 具体 情 况进行 定义 .
2 2 语 音 识 别 程 序 的 初 始 化 . 典型 的语 音识 别程 序仞 始化段 如 下所 示 :
维普资讯
( 厂
一
I 一
6
箍 ' j
.
M _! ,
用 M i ootS e c DK 实 现 c s f p eh S r 语 音 识 别 和 语 音 合 成
乙 / . 一
浅谈MS Speech SDK
淺談MS Speech SDK前一段時間,金山公司在全國開展了"紅色風暴"營銷活動,"金山詞霸2000"的銷售勢頭非常強勁。
有人也許注意到這次"金山詞霸"的升級最大的改進是"採用了世界先進的TTS全程語音系統"(廣告語),使得詞霸軟體能夠讀取任意的英文辭彙、短語、句子等。
那麽什麽是TTS呢?簡單地說就是"Text to Speech"(文字到語音)英文縮寫,這是Microsoft 公司出品的Speech SDK(語音軟體發展工具)中提供的一個API介面功能,在金山詞霸2000中就使用了Speech SDK,下面我簡單介紹一下什麽是Speech SDK。
電腦軟體的介面設計一致是軟體設計中的一個重要方面,如何讓普通人也能自如地使用電腦是介面設計中要考慮的一個重要問題,隨著電腦的普及,採用語音與電腦進行交互操作是未來人機界面設計的一個發展方向。
這裏的語音技術包括兩項內容:語音識別(speech recognition[SR))與語音合成(speech synthesis [SS)即TTS)。
語音識別用於告訴電腦我想讓它做什麽,而語音合成用於電腦告訴我們它想讓我們知道什麽。
利用這兩項技術即可以完成人機交互。
既然語音技術那麽好,爲什麽很少有軟體採用呢?因爲這兩項技術很複雜,需要相關的語音引擎(speech engine)來支援,而許多軟體廠商都出品過自己的語音合成或語音識別引擎,這些引擎之間並不相容,如果一個軟體要使用語音功能,開發者必須得從衆多的語音引擎中挑選一個來使用,如果將來想要換一個語音引擎,就必須爲新引擎重新改寫程式,這使得許多軟體的開發者感到自己的開發沒有保證,於是他們乾脆就放棄了開發語音功能的計劃。
爲了解決這個問題,微軟公司推出了一組新的API(應用程式開發介面)----- The Microsoft Speech API。
一个简单的MicrosoftSpeechSDK5.1例子.
一个简单的 Microsoft Speech SDK 5.1 例子刚刚从Microsoft 网站下栽了Speech SDK 5.1 和中日文发声补丁,参考Speech SDK文档写了几个小程序,尽管我也是刚刚接触Speech若干小时的初学者,还是拿出来共享吧:Speech SDK 采用COM 的形式封装,和大多数COM对象一样,下面是一个似曾相识的初始化:CoInitialize(NULL);CLSIDFromProgID(L"SAPI.SpVoice", &CLSID_SpVoice);ISpVoice * pSpVoice = NULL;if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice))) {cout << "Failed to create instance of ISpVoice!" << endl;return -1;}现在我们用它来说“Hello World”,非常简单:pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);最后,清除这一切pSpVoice->Release();CoUninitialize();很容易,是不是?下面我们稍微改变一下:IEnumSpObjectTokens *pSpEnumTokens = NULL;if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, L"language=409", NULL, &pSpEnumTokens))){ISpObjectToken *pSpToken = NULL;while (SUCCEEDED(pSpEnumTokens->Next(1, &pSpToken, NULL)) && pSpToken != NULL){pSpVoice->SetVoice(pSpToken);pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);pSpToken->Release();}pSpEnumTokens->Release();}如果只需要一种Voice,SpFindBestToken 更加方便:ISpObjectToken * pSpObjectToken = NULL;if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"gender=female", NULL, &pSpObjectToken))){pSpVoice->SetVoice(pSpObjectToken);pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL);pSpObjectToken->Release();}现在改为使用中文:ISpObjectToken * pSpObjectToken = NULL;if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804",NULL, &pSpObjectToken))){pSpVoice->SetVoice(pSpObjectToken);pSpVoice->Speak(L"世界你好!", SPF_DEFAULT, NULL);pSpObjectToken->Release();}ISpVoice::Speak 可以允许朗读的句子中包含XML 标记,其实以上这一切用XML 标记将变得十分简单:pSpVoice->Speak(L"<lang langid=\"804\">世界你好!</lang>", SPF_DEFAULT, NULL);pSpVoice->Speak(L"<voice required=\"gender=female\">Hello World!</voice>", SPF_DEFAULT, NULL);最后,以一段简单的报时结束这篇文章:SYSTEMTIME st;GetLocalTime(&st);ISpObjectToken * pSpObjectToken = NULL;if (SUCCEEDED(SpFindBestToken(SPCAT_VOICES, L"language=804", NULL, &pSpObjectToken))){pSpVoice->SetVoice(pSpObjectToken);WCHAR wsz[128];swprintf(wsz,L"现在是<context ID = \"CHS_Date_ymdhm\">%.4d-%.02d-%.2d %.2d:%.02d</context>",st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute);pSpVoice->Speak(wsz, SPF_IS_XML, NULL);pSpObjectToken->Release();。
基于VB的孤立词语音识别的实现
I mp l e me n t a t i o n o f I s o l a t e d W o r d S p e e c h Re c o g n i t i o n Ba s e d o n VB
r e c o g n i t i o n , F i n a l l y c o mb i n e d w i t h t h e s p e c i f i c p r o j e c t i s g i y e n t h e p r a c t i c e p r o c e s s .
第2 6卷
第 7 期
电 脑 开 发 与 应 用
文章 编号 : 1 0 0 3 — 5 8 5 0 ( 2 0 1 3) 0 7 — 0 0 7 1 — 0 2
基于 V B的孤立词语音识别的实现
徐
( 1 . 江苏省靖江高级 中学 , 江苏 靖江
毅 , 周
敏
靖江 2 1 4 5 0 0 )
Ab s t r a c t :T h i s p a p e r i n t r o d u c e s t h e i n t e r f a c e a n d v o i c e r e c o g n i t i o n Mi r c o s o f t S p e e c h S DK ,i n t h e Vi s u a l B a s i c p r o g r a mmi n g e n v i r o n me n t ,u s i n g t h e d e v e l o p me n t k i t me t h o d f o r i s o l a t e d w o r d s p e e c h
Microsoft Speech SDK概述
Microsoft Speech SDK提供关于语音(Speech)处理的一套应用程序编程接口SAPI(Speech Application Programming Interface)。
SAPI提供了实现文字-语音转换(Text-to-Speech)和语音识别(Speech Recognition)程序的基本函数,大大简化了语音编程的难度,降低了语音编程的工作量。
Speech SDK可以免费从如下网址下载:/speech。
由于Speech SDK是以COM接口的方式提供服务的,所以首先介绍COM的有关基础知识。
11.1.1 COM基础Speech SDK提供了完善的COM接口,所以具备一定的COM编程基础对进行Speech SDK 编程来说是非常必要的。
笔者将简要介绍COM编程的基础知识。
虽然这些知识对阅读本书来说是足够了,但是如果你没有进行过任何的COM编程实践,笔者还是建议你先阅读一本COM的教科书。
1.什么是COM组件对象模型(Component Object Model,COM)对象是符合COM规范的可重用的软件组件。
符合COM规范的COM对象相互之间可以很好地工作,并且可以很容易地集成到应用程序中。
从应用的观点来看,一个COM对象就是一个黑箱,应用程序可以使用它来创建一项或多项任务。
COM对象常常用动态链接库(Dynamic Link Libraries,DLLs)的形式来实现。
与传统的DLL 一样,COM对象暴露其方法,应用程序能调用这些方法来实现对象所支持的功能。
应用程序与COM对象的关系就像应用程序与C++对象的关系,但其中也存在一些区别。
1)COM对象执行严格的封装。
你不能简单地创建一个对象就调用其中的公用方法。
COM 对象的公用方法聚合为一个或多个接口。
为了使用一个方法,必须先创建一个对象,并从对象中获得相应的接口。
一个接口一般包含一组方法,通过它们能使用对象的特定功能。
不能通过接口来调用不属于该接口的方法。
VC++开发基于Microsoft Speech SDK的TTS软件
3 软 件 设 计
软 件实 现 的功 能 :一 是将 文 本转 换 为语 音进 行 播放 ,二是 将 文本转 换 为语 音保 存为 WA V 文件 。软 件运 行界 面如 图 1 所示 。
S p e e c h S D K提 供 一 套 关 于 语 音 处 理 的应 用 程 序 编 程 接 1 : 3 S A P I ( S p e e c h A p p l i c a t i o n P r o g r a m m i n g I n t e r f a c e ) ,S A P I 提 供 了 开 发 文 语 转换 ( T e x t - t o — S p e e c h )程 序 和语 音 识 别 ( S p e e c h R e c o g n i t i o n ) 程 序 的基 本 函数 ,大 大 简化 语 音 编程 的难 度 ,降低 语 音编 程 的工
摘 要 :基 于 Mi c r o s o f t S p e e c h S DK提 供 的 S A P I 函数 ,用 VC+ + 编 写 文语 转换 程 序 ,给 出 了实现 代 码 ,完成 文 本 朗读 和语 音保 存 为 W A V 文件 功能 。 关键 词 :T T S软 件 ;S A P I 函数 ;I S p V o i c e 接 口;语 音库
的过程 ,这 个过 音
素 ,并 对 文 本 中的数 字 、货 币单 位 、单 词变 形 以及 标 点 等需 要 特
殊 处 理 的符 号 进 行 分 析 ,将 音 素 生 成 数 字 音 频 ,然 后 用 扬 声 器
播 放 出 来 或 者 保 存 为 声 音 文 件 用 音 频 播 放 器 播 放 。 Mi c r o s o f t
语音技术在应急保障标图系统中的应用
语音技术在应急保障标图系统中的应用苗天宝;李克恭【摘要】文中结合微软推出的Speech SDK语音软件包,首先介绍了如何将该技术应用于应急保障标图系统,实现符号的语音输入和位置信息的语音标绘;其次对采用VB语言环境实现语音识别的编程方法进行了详细介绍,最后给出了开发的实例.【期刊名称】《矿山测量》【年(卷),期】2011(000)004【总页数】4页(P52-55)【关键词】应急保障标图;Speech SDK;语音识别;VB编程【作者】苗天宝;李克恭【作者单位】甘肃省测绘局,甘肃兰州730000;甘肃省基础地理信息中心,甘肃兰州730000【正文语种】中文【中图分类】P209随着计算机技术的快速发展和应用领域的不断扩大,在与计算机的信息交流中,人们越来越需要一种更方便、更自然的方式。
而语言是人类交流信息最自然、最有效和最方便的手段。
让计算机听懂人们说的话,从而让人们与计算机用语言方便自然地进行交流,一直是近半个世纪以来,语音识别技术追求的目标。
早在20世纪70年代,国外就开始了语音技术的研究,为了适应这一技术实际应用的需要,微软也推出了Speech SDK语音工具包,提供了一个语音识别和合成的二次开发平台,可以识别多种语言,为人们与计算机用语言进行交流提供了坚实的技术支持,人们可以利用它们在自己开发的软件里嵌入语音识别和合成功能,从而使用户可以用声音来代替原来使用键盘、鼠标完成的操作。
作为一门技术在我们开发的应急保障标图系统中得到了应用,本文就语音技术在系统中如何实现应用进行论述。
微软的Speech SDK语音应用开发工具包含了语音应用设计接口(SAPI)、微软连续语音识别引擎(MCSR)以及微软语音合成引擎(TTS)等。
SAPI只提供了一系列接口,需要语音引擎的支持才能运行,SAPI中包括了对于底层控制和高度适应性的直接语音管理、训练向导、事件、语法编译、资源、语音识别(SR)管理以及语音合成(TTS)管理等强大的设计接口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Microsoft Speech SDK实现用户孤立词识别的过程如下:
1、初始化COM端口:在CWinApp的子类中,调用CoInitializeEx函数进行COM 初始化:::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
2、创建识别引擎:微软Speech SDK 5.1 支持两种模式的:共享(Share)和独享(InProc)。
一般情况下可以使用共享型,大的服务型程序使用InProc。
如下:hr = m_cpRecognizer.CoCreateInstance(CLSID_SpSharedRecognizer);//Share hr = m_cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);//InProc 如果是Share型,直接到步骤3;如果是InProc型,必须使用ISpRecognizer::SetInput 设置输入:CComPtr<ISpObjectToken> cpAudioToken;
hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN,
&cpAudioToken);
if (SUCCEEDED(hr)) { hr = m_cpRecognizer->SetInput(cpAudioToken, TRUE);}
或者:CComPtr<ISpAudio> cpAudio;
hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);
hr = m_cpRecoEngine->SetInput(cpAudio, TRUE);
3、创建识别上下文接口:调用ISpRecognizer::CreateRecoContext 创建识别上下文接口:hr = m_cpRecoEngine->CreateRecoContext( &m_cpRecoCtxt );
4、设置识别消息:调用SetNotifyWindowMessage 告诉Windows哪个是我们的识别消息,需要进行处理:
hr = m_cpRecoCtxt->SetNotifyWindowMessage(m_hWnd, WM_RECOEVENT, 0, 0);
5、设置事件:最重要的事件是“SPEI_RECOGNITION”:
const ULONGLONG ullInterest = SPFEI(SPEI_SOUND_START) |
SPFEI(SPEI_SOUND_END) | SPFEI(SPEI_RECOGNITION) ;
hr = m_cpRecoCtxt->SetInterest(ullInterest, ullInterest);
6、创建语法规则:语法规则分为两种,一种是听说式(dictation),一种是命令式(command and control---C&C)。
首先利用ISpRecoContext::CreateGrammar 创建语法对象,然后加载不同的语法规则:
//dictation
hr = m_cpRecoCtxt->CreateGrammar( GIDDICTATION,
&m_cpDictationGrammar );
if (SUCCEEDED(hr))
{ hr = m_cpDictationGrammar->LoadDictation(NULL, SPLO_STATIC); }
//C&C
hr = m_cpRecoCtxt->CreateGrammar( GIDCMDCTRL, &m_cpCmdGrammar);
然后用ISpRecoGrammar::LoadCmdxxx 加载语法:
WCHAR wszXMLFile[20]=L"";
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)"CmdCtrl.xml" , -1, wszXMLFile, 256);
hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
7、激活语法进行识别:
hr = m_cpDictationGrammar->SetDictationState( SPRS_ACTIVE );//dictation hr = m_cpCmdGrammar->SetRuleState( NULL,NULL,SPRS_ACTIVE );//C&C 8、获取识别消息,进行处理:
截获识别消息(WM_RECOEVENT),然后处理。
识别的结果放在CSpEvent 的ISpRecoResult 中:
USES_CONVERSION;
CSpEvent event;
switch (event.eEventId)
{ case SPEI_RECOGNITION:
{
m_bGotReco = TRUE;
static const WCHAR wszUnrecognized[] = L"<Unrecognized>";
CSpDynamicString dstrText;
if (FAILED(event.RecoResult()->GetText(SP_GETWHOLEPHRASE,
SP_GETWHOLEPHRASE, TRUE ,&dstrText, NULL)))
{ dstrText = wszUnrecognized; }
BSTR SRout;
dstrText.CopyToBSTR(&SRout);
CString Recstring;
Recstring.Empty();
Recstring = SRout;
......
}
break;
}
9、释放创建的引擎、识别上下文对象、语法等,调用相应的Release函数。
通过所设计的用户语音识别模块,已实现简单查询命令和路名、站名的识别功能,为增强系统智能度和友好人机界面提供支持。