SAPI,软件中的语音技术包括两方面的内容,一个是语音识别(speech recognition) 和语音合成(speech synthesis)。这两个技术都需要语音引擎的支持。

下面我们来了解下基于Windows语音引擎。我以Windows7为例,Windows8及以上版本相同。

首先我们从控制面板中找到屏幕讲述人,并打开设置选项。

从这里我们可以了解到系统所安装的语音识别引擎和语音合成引擎所使用的语音库。计算机的屏幕讲述人使用的就是语音合成引擎。

在语音识别选项卡中:

如果你安装的简体中文本的操作系统,默认只有一个语音识别引擎为简体中文,那么在程序开发时你也只能用于识别普通话,怎样添加对于其它语言的识别。你需要升级计算机为旗舰版,然后在Windows Update更新中安装其它语言包。语言包中就包括该语言的识别引擎。安装完成后如上图所示就多出其它语音识别引擎。

对于语音识别引擎的训练也是很有必要的,因为我们的应用程序最终使用的就是系统的识别引擎,那么识别准确率除了我们写代码时候需要处理,更多也要在于平时对于语音识别引擎的训练。据我不完全测试,完成了基本的语音训练后,在自己写的程序中识别率还是很高的。如果普通话标准的话,识别率在95%-98%左右。当然要识别的精准,还需要代码上的优化。

在语音合成选项卡中(即文本到语音转换)

该选项卡用于配置语音合成引擎所需的语音包。

Windows7 默认就只有Anna和Lili语音包,下面的Hui和Liang是我安装的第三方的语音包。后面会给出所有第三方语音包的下载地址(包括中文、英文、日文和韩文)。

之所以用第三方语音包,因为系统自带的语音包声音比较生硬,第三方语音包更接近自然语音。

上述仅仅是一些开发前的准备工作或者注意事项。下面来介绍SAPI。

SAPI微软最早以SDK开发包的形式发布,之前用的多的是C++的SDK包。后来就集成到了.NET Framework中,以Framework4.0为例:

注意:请使用英文本的文档,中文本后面没有描述信息。

语音识别和语音合成在System.Speech的命名空间下。

该命名空间只有5个子命名空间,基本微软帮我们屏蔽了所有的底层实现。我们只需要从应用角度来组织我们的代码就行了。后续文章中会给出详细的应用案例。

System.Speech.AudioFormat

该命名空间下定义了音频输出格式。如果我们需要把合成的语音保存为wav音频文件可能需要用到里面的内容。

System.Speech.Recognition

System.Speech.Recognition.SrgsGrammar

这两个命名空间依据名称,我们可以推测是关于语音识别的。

System.Speech.Recognition:该命名空间下定义了语音识别引擎和和一些初始化参数所用到的信息类。

System.Speech.Recognition.SrgsGrammar:该命名空间下定义了有关语音识别引擎所用到语法规则的类,也即SRGS。SRGS是指导构建语音识别声学模型的文法。简单来说就是声学建模的一种文法规则,一般我们很少用到,该规则也是由W3C来规范的。包括我们语音合成中的语音库的建模标准都是由W3C来规范的。不过这个和我们开发应用没有太大关系。

System.Speech.Synthesis

System.Speech.Synthesis.TtsEngine

这两个命名空间是关于语音合成。

语音包下载地址:

http://yunpan.cn/lk/QT8GktHZwFU8Q

提取码:7978

360网盘历经过今年最NB的净网行动总算挺了过来,共享功能已经恢复了,如果不能下载请留言。文件列表如下:

压缩包的请解压缩后双击Setup.exe安装。

每个压缩包中有一个类似:

这样压缩文件,这是破解补丁包,因为第三方语音包中不付费的话有一句广告,比较恶心,所有的补丁文件全在压缩包内。解压后得到一个dll文件。

把dll文件放到安装目录下lib文件下替换同名文件就行了,这样就过滤掉广告了。

结束语:这是一篇新手教程。有些点讲的可能会比较细,有些点也有可能被忽视,不足的地方请留言。

(一)SAPI简述的更多相关文章

  1. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  2. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  3. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  4. Android网络定位服务定制简述

    Android 添加高德或百度网络定位服务 Android的网络定位服务以第三方的APK方式提供服务,由于在国内Android原生自带的com.google.android.gms服务几乎处于不可用状 ...

  5. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  6. 简述ASP.NET MVC原理

    1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...

  7. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  8. 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...

  9. Android开发3:Intent、Bundle的使用和ListView的应用 、RelativeLayout(相对布局)简述(简单通讯录的实现)

    前言 啦啦啦~博主又来骚扰大家啦~大家是不是感觉上次的Android开发博文有点长呢~主要是因为博主也是小白,在做实验的过程中查询了很多很多概念,努力去理解每一个知识点,才完成了最终的实验.还有就是随 ...

随机推荐

  1. BZOJ 3106 棋盘游戏

    Description 一个\(n \times n(n \le 2)\)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...

  2. BZOJ 2432 兔农

    Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...

  3. 【技术贴】同一台机器Tomcat7多版本共存配置文档

    首先准备好自己下载的Tomcat7的绿色版,一定要是解压的绿色版不能使exe安装包.因为exe安装版很多变量不好配置,我以前最喜欢exe版了,方便快捷,但是我发现还是绿色解压版比较好,优化配置等也很好 ...

  4. android如何获取默认的桌面程序

    [方法1] http://stackoverflow.com/questions/12594192/remove-activity-as-default-launcher/12594332#12594 ...

  5. IMAP与POP3的区别

    POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件.标记已读等),不会反馈到服务器上.比如通过客户端收取了邮箱中的2封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有 ...

  6. java实现版本号的比较

    之前比较客户端版本号,一直用的是String.compareTo,知道出现bug之后才明白了它的不完善地方.它的比较方式是按照字符串的比较来执行的,所以它有不正确的地方.举个例子,之前客户端版本号为: ...

  7. android画虚线的自定义VIew

    package com.yesway.ycarplus.view; import android.annotation.SuppressLint; import android.content.Con ...

  8. logback logback.xml 常用配置详解

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  9. DateGridew导出Excel表+常见错误提示

    在敲机房收费系统的时候,显示数据的时候需要将DateGridew 中的数据导出进Excel表.DateGridew导出Excel表是比较常见的,当然导出Excel表有很多种方法,下面是个人认为比较容易 ...

  10. OpenGL蓝宝书第五章代码勘误以及惯性坐标系去解释模型变换:Pyramid.cpp

    假设你也发现依照教程代码完毕贴图时,你会底面的坐标和寻常顶点坐标正负相反,比方-1.0f, -1.0f, -1.0f这个顶点相应的却是世界坐标中1.0f,-1.0f,1.0f 问题到底出如今哪里? 原 ...