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. ubuntu 设置root启动

    http://www.linuxidc.com/Linux/2012-05/60806.htm sudo -s 输入普通用户的password 回车即可进入root权限 vi /etc/lightdm ...

  2. MySQL 没有索引 锁全表

    <h3 class="title" style="box-sizing: inherit; margin: 8px 0px 15px; padding: 0px; ...

  3. centos6.5安装gcc6.1等c++环境

    centos6.5安装gcc6.1等c++环境 1.获取gcc安装包并解压wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2tar ...

  4. Codeforces Round #316 (Div. 2)

    A. Elections time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  5. 【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错

    原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程 ...

  6. 【模拟】Codeforces 711B Chris and Magic Square

    题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...

  7. 转:给C++初学者的50个忠告

                                                           转:给C++初学者的50个忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的.): ...

  8. wchar_t与char、wstring与string的相互转换

    个人倾向于使用优秀的开源库做这个. 最近使用boost进行转换,代码极其简单: boost::filesystem::path src(wchar_t); char = src.string().c_ ...

  9. top -bcn -1

    ^[[?1h^[=^[[?25l^[[H^[[2J^[(B^[[mtop #!/bin/bash#echo 性能数据捕捉时间: `date +%Y-%m-%d_%H:%M:%S` \n >> ...

  10. 阿里巴巴算法工程师四面(三轮技术+hr面)详细面经

    阿里面试总结: 一遍一遍地刷阿里网站,今天发现“面试中”变成“待跟进offer”了,写个面经攒人品,希望offer通知邮件早点来吧. 我当时投简历时投了C/C++工程师,其实也没经过啥考虑,因为我一开 ...