`
- 浏览:
446108 次
- 性别:
- 来自:
南京
-
SAPI 应用程序接口程序戏剧性的减少了语音识别和语音合成应用中的程序代码,使得语音技术在广泛和蓬勃发展的实际应用中更容易使用。
SAPI使得应用程序和语音引擎之间高度紧密的结合。SAPI可以实时处理各种语音引擎在底层工作中的细节。
SAPI的两种基本类型是文本合成语音(TTS)引擎和语音识别(SR)引擎。TTS可以将文本中的字符或文档合成为语音并“说”出来。而SR则可以把人说话的语音转换为易读的字符或文档。
应用程序可以通过ISpVoice COM接口控制使用TTS。应用程序一旦建立了ISpVoice 对象,它只需调用ISpVoice::Speak来从文本数据生成语音。另外IspVoice接口同样提供了多种方式来改变程序所发出的声音、音调和其他属性,例如ISpVoice::SetRate改变语音速度,ISpVoice::SetVolume改变语音音量,ISpVoice::SetVoice改变当前程序所发出的声音。更有趣的是SAPI还可以控制通过对插入的文本的结合来实时改变合成语音的声音类型、音调、重音、发音速度和音量。
IspVoice::Speak方法可以同步地(在发音完毕时返回程序)或异步地(在发音时同时返回程序,发音成为后台处理)。当处于异步工作时,可以使用ISpVoice::GetStatus来获得发音状态及文本位置。同样,当处于异步工作时,新的文本发音也可以通过立即终止当前的发音来创建,这个过程是决定于新文本所包含的结束信息由程序自动处理的。
除了IspVoice接口之外,SAPI同样提供更多的高级TTS应用——通过手动控制COM接口。语音识别应用程序接口:
类似于IspVoice是主要的语音合成程序接口,ISpRecoContext就是主要的语音识别程序接口。同IspVoice一样,他是一个IspEventSource,也就是说当语音程序接收到一个语音识别请求就会触发一个事件的事件源。
一个程序拥有两种不同的语音识别引擎(ISpRecognizer)类型。一个是共享的语音识别引擎,由于它可以与其他语音识别应用程序共享其程序资源,所以在大多数场合中被推荐使用。(在共享的语音识别应用中)需要建立一个采用共享语音识别引擎的识别环境(IspRecoContext),应用程序需要调用COM接口位于CoCreateInstance结构上的CLSID_SpSharedRecoContext。然后SAPI会设立一个音频输入流,并把这个音频输入流定义为默认的SAPI音频输入流。对于大型的服务器应用程序,这个过程需要一个独立的系统来完成,因为性能是这时的关键因素,一个独立进程(InProc)的语音识别引擎是最适合的。如果需要创建采用一个独立进程(非共享)语音识别引擎的语音识别环境,应用程序首先需要调用COM接口位于CoCreateInstance结构上的CLSID_SpInprocRecoInstance。然后,应用程序必须调用ISpRecognizer::SetInput来设立一个音频输入流。最后,应用程序通过调用ISpRecognizer::CreateRecoContext来建立它自己的识别环境。
下一步是为应用程序的识别事件建立消息通知表(IspNotifySource)。同样由于IspRecognizer 也是ISpEventSource,应用程序通过一个从ISpRecoContext 取得的IspNotifySource来判别哪种由IspRecoContext报告的事件源的需要被触发。然后,IspRecognizer需要调用ISpEventSource::SetInterest来创建一个需要被识别的“事件”。其中最重要的事件是SPEI_RECOGNITION,当其被触发,说明已经有一个被IspRecognizer识别的符合当前IspRecoContext要求的识别事件已完成。
最后,一个语音应用程序必须创建、加载并激活一个识别语法(ISpRecoGrammar),识别语会法从本质上决定哪种发音需要识别,而哪种发音不必理会,(具体有类似)听写或者一个command and control(C&C)语法。首先,应用程序需要通过调用语法接口函数ISpRecoContext::CreateGrammar建立一个IspRecoGrammar,然后应用程序需要加载这个语法(通过调用ISpRecoGrammar::LoadDictation),其目的是建立一个听写或者command and control语法环境。最终为了激活这个识别语法需要调用ISpRecoGrammar::SetDictationState(听写语法环境)或 ISpRecoGrammar::SetRuleIdState、ISpRecoGrammar::SetRuleIdState(C&C语法环境)。
当识别结果依据IspNotifySource的需要返回给应用程序,SPEVENT数据结构中的lParam就被定义为一个ISpRecoResult,这样应用程序就能决定哪些符合ISpRecoContext.中设立的IspRecoGrammar的语音被识别出来了。无论是共享的(shared)还是独立进程(InProc)的识别引擎,都可以在IspRecoContexts中多进程同时工作,每一个识别引擎也都可以有自己的触发事件源。一个IspRecoContexts也可以有多个IspRecoGrammars同时工作,互相之间并不影响。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
语音识别和语音朗诵代码,根据微软的SAPI编写,有需要的可以下载看看
windows 讯飞语音听写 微软sapi 离在线 语音识别 此应用申请讯飞语音应用已通过 完全原创,仅供研究使用 适用于win7 及以上版本 点击exe即可运行,无需配置环境 readme doc 相关开发和使用说明 本人在学校机器人基地...
SAPI 应用程序接口程序戏剧性的减少了语音识别和语音合成应用中的程序代码,使得语音技术在广泛和蓬勃发展的实际应用中更容易使用。 本章包括以下主题: API总揽 文本合成语音应用程序接口 语音识别应用程序接口 ...
利用微软的SAPI库进行语音识别开发,实现人机交互,这里是它的源代码
Delphi7 应用微软Speech SDK 5.4(SAPI 5.4)语音开发包开发语音朗读与语音识别功能。语音朗读支持鼠标选择文字朗读,也支持朗读word文件内容;语音识别功能已实现,但识别率目前不高。
基于C# 编程,使用微软SAPI SDK的人机交互的语音对话DEMO 展示SAPI的基本用法,便于用户在开发相应的产品时,做一个参考。
基于讯飞、微软SAPI的语音关键字识别测试代码。提供C#、Winform界面。
语音是人类最自然的交互方式,也是现阶段软 件用户界面发展的最高目标。微软公司一直积极 推动语音技术的发展,并且公布了语音开发平台 Speech SDK帮助开发人员实现语音应用。...统地介绍如何利用SAPI开发语音应用程序
win7 win10语音识别修复
该文档为微软的speech sdk附带的开发帮助文档,speech sdk是微软提供的语音识别开发包,在windows下作语音开发及相关,会很有用
通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR。下面我们就介绍并贴出相关代码。主要有两种方式: 1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑。...
基于Microsoft Speech SDK开发的语音识别(VC源码)
微软tts5.4语音识别与合成库文件前提是要安装microsoft tts 5,4 sdk
调用了微软的SAPI 5.1,在VS2008下做的,需安装SAPI 5.1
通过微软sapi控件能够播放文本文件,必须先安装sapi,然后按照语音库,这样就可以试试播放文本
要想实现中文发音或中文语音识别,必需先安装微软的Speech Application SDK(SASDK),它的最新版本是 SAPI 5.1 他能够识别中、日、英三种语言,你可以在这里下载:http://www.microsoft.com/speech/download/sdk51/...
前言: 语音合成技术其实并没有什么...首先我们需要一个微软的Speech SDK 5.1的安装包(当然你的机器的操作系统版本要在windows2000以上的这个范畴),来使得我们的机器具有语音识别的功能。安装包,您可以在这里找到: ...
1.原理 语音操控分为 语音识别和语音朗读两部分。 这两部分本来是需要自然...SAPI是微软Speech API , 是微软公司推出的语音接口,而细心的人会发现从WINXP开始,系统上就已经有语音识别的功能了,可是用武之地相当之少
语音开发主要是两种技术:语音识别和语音合成Sapi是微软提供的语音引擎,win7之后系统自带,效率和质量都很好。使用Sapi需要使用System.Speech.dll文件,因此在unity中需要复制,这个文件到资产目录下,但是会出现...
软件中的语音技术包括两方面的内容,一个是语音识别(speech recognition) 和语音合成(speech synthesis)。这两个技术都需要语音引擎的支持。微软推出的应用编程接口API,虽然现在不是业界标准,但是应用比较广泛。 ...