语音/文字转换
官网:https://haomo-tech.com
作者:胡小根
邮箱:hxg@haomo-studio.com
1 概述
1.1 技术描述
这是一个语音的技术。
涵盖了两个关键技术点,如下:
- 语音识别技术
- 语音合成技术
1.2 技术发展历史
1.3 技术发展趋势
2 技术方案
2.1 方案1:xxxx
2.2 方案2:xxxx
2.3 方案3:xxxx
3 市场应用
3.1 xxx行业应用
3.2 xxx行业应用
3.3 xxx行业应用
4 产品方案对比
4.1 开源方案
4.1.1 pocketsphinx
识别效果未测试,没有中文模型。
中文的库:
4.1.2 HTK
HTK是Hidden Markov Model Toolkit(隐马尔科夫模型工具包)的简称,HTK主要用于语音识别研究,现在已经被用于很多其他方面的研究, 包括语音合成、字符识别和DNA测序等。
HTK最初是由剑桥大学工程学院(Cambridge University Engineering Department ,CUED)的机器智能实验室(前语音视觉及机器人组) 于1989年开发的,它被用来构建CUED的大词汇量的语音识别系统。93年Entropic Research Laboratory Inc.获得了出售HTK的权利,并在95年 全部转让给了刚成立的Entropic Cambridge Research Laboratory Ltd,Entropic一直销售着HTK,直到99年微软收购了Entropic,微软重新 将HTK的版权授予CUED,并给CUED提供支持,这样CUED重新发布了HTK,并在网络上提供开发支持。
HTK的最新版本是09年发布的3.4.1版,关于HTK的实现原理和各个工具的使用方法可以参看HTK的文档HTKBook。
4.1.3 Julius
Julius是一个高性能、双通道的大词汇量连续语音识别(large vocabulary continues speech recognition,LVCSR)的开源项目, 适合于广大的研究人员和开发人员。它使用3-gram及上下文相关的HMM,在当前的PC机上能够实现实时的语音识别,单词量达到60k个。
Julius整合了主要的搜索算法,高度的模块化使得它的结构模型更加独立,它同时支持多种HMM模型(如shared-state triphones 和 tied-mixture models等),支持多种麦克风通道,支持多种模型和结构的组合。它采用标准的格式,这使得和其他工具箱交叉使用变得 更容易。它主要支持的平台包括Linux和其他类Unix系统,也适用于Windows。它是开源的,并使用BSD许可协议。
自97年后,Julius作为日本LVCSR研究的一个自由软件工具包的一部分而延续下来,后在2000年转由日本连续语音识别联盟(CSRC)经营。 从3.4版起,引入了被称为“Julian”的基于语法的识别解析器,Julian是一个改自Julius的以手工设计的DFA作为语言模型的版本,它可以 用来构建小词汇量的命令识别系统或语音对话系统。
4.1.4 RWTH ASR
该工具箱包含最新的自动语音识别技术的算法实现,它由 RWTH Aachen 大学的Human Language Technology and Pattern Recognition Group 开发。
RWTH ASR工具箱包括声学模型的构建、解析器等重要部分,还包括说话人自适应组件、说话人自适应训练组件、非监督训练组件、个性化 训练和单词词根处理组件等,它支持Linux和Mac OS等操作系统,其项目网站上有比较全面的文档和实例,还提供了现成的用于研究目的的 模型等。
该工具箱遵从一种从QPL发展而来的开源协议,只允许用于非商业用途。
4.1.5 ISIP
ISIP 是第一个比较先进的开源语音识别系统,起源于密西西比州。它主要在 1996 年到 1999 年之间研发,最后一个版本发布于 2011 年,在 GitHub 平台出现之前就已经停止更新了。
4.1.6 其他
上面提到的开源工具箱主要都是用于语音识别的,其他的开源语音识别项目还有Kaldi 、simon 、iATROS-speech 、SHoUT 、 Zanzibar OpenIVR 等。
常见的语音合成的开源工具箱有MARY、SpeakRight、Festival 、FreeTTS 、Festvox 、eSpeak 、Flite 等。
常见的声纹识别的开源工具箱有Alize、openVP等。
4.2 商业方案
4.1.1 科大讯飞
语音识别,必须在线
4.1.2 百度语音
语音识别
语音识别Android SDK 功能 主要分为语音识别 及 语义理解
- 语音识别: 将录音转为文字。目前在线识别支持普通话、英文、粤语和广东话。
- 语义理解: 将语音识别出的文字,进行分词及找出意图。
语音识别,可以分为在线识别,离线命令词,及唤醒词
- 在线识别: 即联网使用的识别功能。
- 离线命令词: 断网时激活,只能识别预定义的短语。联网时,强制使用在线识别。固定短语的语法需要在官网预定义并下载为baidu_speech_grammar.bsg文件
- 唤醒词:本地功能,不需要网络。唤醒词即识别“关键词”,当SDK的识别引擎“听到”录音中的关键词后,立即告知用户。与android系统的锁屏唤醒完全无关。关键词和离线命令词一样,需要预定义并下载为WakeUp.bin文件
目前没有公开版本的离线任意语句识别及声纹识别。
离线命令词
离线命令词,联网时,强制使用在线识别,不会使用离线命令词功能。
在 http:/yuyin.baidu.com/asr 页面下方可以自行定义bsg文件。其中右侧“说法”部分,为固定语法,下载后不可更改。左侧“词条”部分,代码中可以动态定义覆盖。
离线命令词功能可以测试DEMO中的第二个按钮“离线命令词识别”
唤醒词
唤醒词: 唤醒词即识别“关键词”。与在线长语音识别不同,长语音识别会返回所有识别结果,唤醒词只会识别出您预先定义的关键词。 与android本身的锁屏唤醒没有任何关系。
唤醒词是本地功能,正常使用时无需联网。
在 http://yuyin.baidu.com/wake 页面下方可以自行定义bin文件。百度语音提供了近15个预定义唤醒词,效果有优化。也可以自定义唤醒词,效果不如预定义唤醒词。bin文件中最多可以有10个唤醒词,其中自定义唤醒词不超过3个,并且2个字的预定义唤醒词不超过3个。
用户说每个唤醒词前必须要有静音。
正式授权
唤醒词和离线命令词功能需要一个正式授权文件。正式授权由SDK内部管理,无对外接口。
正式授权文件有效期3年,到3年的最后一个月,SDK会尝试更新授权文件。
正式授权文件在第一次联网使用唤醒词和离线命令词功能时下载,即第一次在线联网使用唤醒词功能和第一次加载离线命令词资源后在线识别后,SDK自动下载正式授权文件。
总体评价:
如果有在线的项目可以使用,离线项目的话,还有有些不太好用。经过测试,在线识别效果还不错。
语音合成
语音合成分为 在线合成和离线合成。仅有中英文混合这一种语言。
语言
目前只有中英文混合这一种语言,优先中文发音。
示例:
“Our company buys 3 shoes” 发音 “three”
“3 shoes are bought by our company” 发音 “三”
离线时只支持2种发音
离线时只有普通女声和普通男声
其它事项 每次合成的文本不超过1024 GBK字节,即512个汉字或者字母数字。句子实在太长的话。可以自行按照句号和问号感叹号进行切割。 合成的耗时同文本长度成正比。对合成速度敏感的话,请自行按照标点切分成短句。 多音字可以通过标注自行定义发音。格式如:重(chong2)报集团。
总体评价:
永久免费是一个特点,可用于商业,合成语音较为满意。可离线合成。