`
kevin19900306
  • 浏览: 448195 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

微软语音SAPI介绍以其及语音识别过程

阅读更多
   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同时工作,互相之间并不影响。
分享到:
评论

相关推荐

    微软SAPI语音识别

    微软SAPI(Speech Application Programming Interface)是微软提供的一套用于语音识别和文本转语音(TTS,Text-to-Speech)的开发接口。SAPI使得开发者能够轻松地在应用程序中集成语音技术,包括语音识别和语音合成...

    微软语音识别SDK-SAPI 5 介绍

    ### 微软语音识别SDK—SAPI 5 介绍 #### 概述 SAPI(Speech Application Programming Interface)是微软开发的一套用于处理语音合成与语音识别的技术框架,旨在简化语音技术的应用开发流程,使开发者能够更加高效...

    微软TTS语音SAPI for Delphi控件安装包

    微软TTS语音SAPI for Delphi控件安装包是一个专为Delphi开发者设计的工具,它使得在Delphi应用程序中集成文本转语音(TTS)功能变得轻而易举。SAPI,全称是Speech Application Programming Interface,是微软提供的...

    windows 讯飞语音听写和微软sapi c++ 实现的离在线语音识别

    windows 讯飞语音听写 微软sapi 离在线 语音识别 此应用申请讯飞语音应用已通过 完全原创,仅供研究使用 适用于win7 及以上版本 点击exe即可运行,无需配置环境 readme doc 相关开发和使用说明 本人在学校机器人基地...

    微软sapi4.0语音库调用接口

    微软SAPI 4.0(Speech Application Programming Interface)是微软早期推出的一款用于语音识别和语音合成的API,它为开发者提供了在Windows操作系统上构建语音应用的功能。本文将深入探讨SAPI 4.0的接口调用方法及其...

    sapi5.inf下载 微软语音 0x80040154问题解决 语音开发

    标题中的“sapi5.inf”是指微软的Speech API(语音应用程序编程接口)的配置文件,它是Windows操作系统中用于语音识别和语音合成的核心组件。当开发者进行语音应用开发时,会用到这个文件来安装和配置相应的语音引擎...

    Delphi7 应用微软Speech SDK 5.4(SAPI 5.4)语音开发包开发语音朗读与语音识别功能

    Delphi7 应用微软Speech SDK 5.4(SAPI 5.4)语音开发包开发语音朗读与语音识别功能。语音朗读支持鼠标选择文字朗读,也支持朗读word文件内容;语音识别功能已实现,但识别率目前不高。

    微软 TTS 语音引擎(SAPI 5.1)详解 *COOL!

    SAPI 5.1的核心是语音服务提供商(Speech Service Providers),包括语音识别器和语音合成器。语音识别器可以将人的语音转化为文本,而语音合成器则负责将文本转化为语音。在SAPI 5.1中,开发者可以访问多种预置的...

    c# 用SAPI实现语音识别及文本转换的详细教程

    在C#中实现语音识别和文本转换,通常我们会利用微软的Speech API(SAPI),这是一个强大的接口,允许开发者集成自然语言处理功能,包括语音识别和语音合成。本教程将深入探讨如何利用SAPI来实现这些功能。 首先,...

    完美的语音包SAPI51-WIN7修复包

    SAPI是微软操作系统中用于语音识别和语音合成功能的核心组件,它包含多种语音引擎,可以支持不同的语言和发音风格。 根据压缩包子文件的文件名称“win7TTS”,我们可以推断这个修复包可能包含了一组或多个适用于...

    C++语音识别

    本篇主要介绍如何使用C++结合Windows API来实现语音识别功能,特别是在Visual C++环境下创建Win32工程进行相关开发。 首先,我们要了解Windows API中的语音识别组件。Windows操作系统自 Vista 版本开始内置了SAPI...

    MFC简单语音识别,聊天模拟器,利用SAPI

    标题中的“MFC简单语音识别,聊天模拟器,利用SAPI”是指使用Microsoft Foundation Class (MFC)库开发的一个小型应用程序,它集成了语音识别功能,并通过预设的问题与答案来实现简单的聊天交互。MFC是微软提供的一个...

    利用微软的SAPI库进行语音识别开发人机交互源代码

    利用微软的SAPI库进行语音识别开发,实现人机交互,这里是它的源代码

    voxx_code_使用SAPI和VB编写的语音识别和合成的一个程序

    VB,全称为Visual Basic,是微软推出的一种面向对象的编程语言,以其易学易用的特点深受开发者喜爱。在VB中集成SAPI,可以构建用户友好的图形界面,同时实现语音功能,让程序更加智能化。 在"voxx_code"这个程序中...

    基于讯飞、微软的语音关键字识别测试Demo

    另一方面,微软SAPI(Speech Application Programming Interface)是微软提供的一套用于语音识别和合成的API。SAPI允许开发者在各种Windows平台上构建语音应用,支持多种语言,并且与微软的其他产品和服务有良好的...

    SAPI下Delphi下的使用方法(开发语音识别)

    "SAPI下Delphi下的使用方法(开发语音识别).jpg"可能是一个教程图片,展示了开发过程;"Project1.res"存储了应用程序的资源信息。 在Delphi中使用SAPI进行语音识别,我们需要导入SAPI相关的库,如"MsSpeechObj.tlb...

    微软语音识别SDK Microsoft Speech SDK

    Microsoft Speech SDK提供了丰富的API,包括SAPI(Speech API)和SRGS(Speech Recognition Grammar Specification),使得开发者能够方便地进行语音识别和语音合成的编程。 4. **应用领域**: - **智能助手**:...

    SAPI0_语音合成_微软sapi_

    微软SAPI(Speech Application Programming Interface)是微软提供的一套用于语音识别和语音合成本地API。这个技术使得开发者能够轻松地在应用程序中集成自然语言处理功能,包括将文本转化为语音,也就是我们常说的...

    SAPI的本地识别

    SAPI(Speech Application Programming Interface)是由微软开发的一种用于语音识别和语音合成的API,它使得开发者能够方便地在Windows平台上构建语音应用。SAPI的主要功能包括语音识别(Speech Recognition)和文本...

    SAPI语音.rar

    SAPI(Speech Application Programming Interface)是微软开发的一种用于语音识别和语音合成的接口技术,它为开发者提供了一套标准的工具,使得应用程序能够与语音识别引擎和文本转语音(TTS)引擎进行交互。...

Global site tag (gtag.js) - Google Analytics