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. bcb6 中安装 delphi7 的控件包

    其实只要新建一个包,然后把 d7 中的包包含的 pas 文件也包含进去就行了. 同时它会把对应的 bpi 文件也自动包含. 对于 bcb6 中没有的 PosEx 函数可以这样处理,把 d7 中的实现复 ...

  2. Compare Version Number

    package cn.edu.xidian.sselab.string; /** *  * @author zhiyong wang * title: Compare Version Numbers  ...

  3. strtotime的几种用法区别

    strtotime不仅可以使用类似Y-m-d此类标准的时间/日期字符串来转化时间戳, 还可以用类似自然语言的来生成时间戳, 类似: strtotime('last day'); strtotime(' ...

  4. ♫【异步】短小强悍的JavaScript异步调用库

    短小强悍的JavaScript异步调用库 var queue = function(funcs, scope) { (function next() { if(funcs.length > 0) ...

  5. Linux企业级开发技术(1)——epoll企业级开发之简介

    Epoll是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入.和 select 相似,是高效 I/O 多路复用技术. 其实在 Linux 下设 ...

  6. 嵌入式 linux 查看内存

    在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux下查看内存使用情况的free命令: [root@scs- ...

  7. 图论(网络流):[HNOI 2013]切糕

    [HNOI 2013]切糕 第三题:切糕(程序文件名:cake.exe)100 分,运行时限:5s 经过千辛万苦小A 得到了一块切糕,切糕的形状是长方体,小A 打算拦腰将切糕切成两半分给小B.出于美观 ...

  8. 洛谷2344 奶牛抗议(DP+BIT+离散化)

    洛谷2344 奶牛抗议 本题地址:http://www.luogu.org/problem/show?pid=2344 题目背景 Generic Cow Protests, 2011 Feb 题目描述 ...

  9. 从SG函数浅谈解决博弈问题的通法

    基于笔者之前对于几种二元零和博弈游戏的介绍,这里将其思想进行简单的提炼,并引出解决这类二元零和博弈游戏的强大工具——SG函数. 其实对于博弈游戏如Bash.Nim等基本类型,异或一些比较高级的棋类游戏 ...

  10. SRM 391(1-250pt)

    DIV1 250pt 题意:给两个'a'-'z'的字符串,是否存在一个'a'-'z'的置换,使得能将一个字符串转化成另一个字符串. 解法:题意即是求,s1和s2对应位置出现的字符在原字符串中出现的次数 ...