2012-05-25 10:14:57 brucexu1978 阅读数 16932
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    959 人正在学习 去看看 CSDN讲师
开源语音识别软件
2009-02-24 9:47

开源语音识别软件simon的第一个测试版已经发布,simon用Julius作实际的语音识别处理引擎,HTK toolkit作为主要的语言模型。这些组件被一个易于使用的图形用户界面连接在一起。simon能够直接输入wiktionary(维基百科的子项目)词典,或者是将个人文本转换成HADIFIX或HTK格式和文法结构后导入。它还提供了一种方法,用新样本和新文字训练语言模型。http://sourceforge.net/projects/speech2text/
     http://julius.sourceforge.jp/en_index.php

     http://htk.eng.cam.ac.uk/

IBM 开发的支持Linux的ViaVoice
    
http://www.nuance.com/viavoice/

2. GPL下的Xvoice

   http://xvoice.sourceforge.net/

    很久以来,与计算机进行交谈一直是科幻小说惯用的故事情节,直到今天真正的交谈也只有在小说中才能实现。但是在过去的十年中,语音识别软件的发展速度非常迅速。目前,市面上出现了多种支持不同操作系统的语音识别控制软件。也许许多人并没有意识到Linux桌面系统也完全可以用声音来控制,并且软件开发人员们已经取得了一定的成果。下面我们就对Linux系统下的语音识别软件进行分析概括,以便帮助大家了解其优势和缺陷。

Linux上的语音识别软件

  Linux系统下的语音控制软件可以为身患残疾或由于过度使用计算机而患计算机综合症的人提供使用Linux系统的机会。此前他们不得不改装其它的操作系统,以获得语音识别技术支持。即使不考虑特殊因素,普通人也可以通过使用语音识别软件,使操作计算机变得更为简单有趣。尽管本文对语音识别系统未来的发展趋势深表忧虑(原因是它们并不能完全把手解放出来),但是它们的确可以分担一部分手的工作。

  目前已经有两种套装软件中含有支持Linux系统的语音控制软件。一种是IBM 开发的支持Linux的ViaVoice,它可以提供一些基本的语音识别功能;另一种是GPL下的Xvoice,它通过ViaVoice库来为桌面系统和应用程序提供语音控制功能。

  IBM 的Linux ViaVoice是美语版本,目前只在美国和加拿大销售。它的售价大约是40美元,包括送货费和一副耳机。用户也可以从IBM的网站上下载ViaVoice,并可享受一定的价格优惠。新版本的ViaVoice在Mandrake 8.0 PowerPack和ProSuite中也可以找到。目前,Mandrake ViaVoice既可以支持英国英语,也可以支持美国英语、法语和德语。Mandrake 8.0以后的版本将不再包含ViaVoice。本文将着重介绍IBM ViaVoice的安装和使用。

应用ViaVoice

  Linux ViaVoice需要机器的配置为:Pentium MMX 233以上的CPU、128MB的内存,以及16位的声卡。实际上,ViaVoice是专门为Red Hat 6.2设计开发的,但是用户在Red Hat 7.3环境和其它Linux版本中也可以正常地运行ViaVoice。当然用户也有可能在安装过程中遇到一些问题。

  在安装ViaVoice语音识别软件前,要首先安装Java运行环境。ViaVoice 1.0和1.1版本是在JRE-1.2.2环境下进行测试的。使用正确的版本可以避免在不同JRE环境下的不兼容。

  JRE安装完毕后,将安装盘放入光驱并运行根目录下的vvsetup,然后再运行vvstartuser将自己设为ViaVoice用户,并且设置好适当的音量,最后便是反复练习,使软件适应自己的声音。切记安装顺序决不能颠倒。

“调教”ViaVoice

  与其它语音识别软件一样,第一次安装的ViaVoice并不能对用户的声音识别得十分准确。使用者必须对它进行一番“调教”,然后才能使它识别使用者的声音。

  “调教”ViaVoice的一种方法就是按照用户手册中的词语反复的朗读。对于大多数用户来说,这一点并不难,但是手册中的词语也许并不是用户经常用到的,因此这个方法的效率并不是很高。

  比较好的方法是在工作时利用ViaVoice的Dictation应用软件。它是用Java语言写成的。当用户进行口述时,一些词语也许不能被正确识别,当这种情况发生时,用户可以使用Dictation中的适当工具对其进行修改。这样ViaVoice便可以对识别工具进行修正,以便更精确地识别用户的声音。这种方法也许会花费较多的力气,但是类似的修改可以用语音命令来完成。不过请注意随时存盘,因为Dictation并不十分稳定。

  曾经有一位专家说,目前的语音识别软件只要经过10到60小时的“调教”,便可以达到98%的正确率。但是到目前为止,对Linux环境下的ViaVoice进行测试的结果是,它的正确率只有92%到95%,绝大多数的语音命令都可以被正确识别。即使用户只花费几个小时进行练习,也可以发现ViaVoice的正确率明显提高。不过用户在使用时要特别注意,词语的发音、麦克风的质量和周围环境都会影响语音识别的正确率。

XVoice控制Linux桌面

  当用户完成ViaVoice的安装并训练了一段时间后,便可以安装Xvoice了。Xvoice的作用是对桌面系统及应用软件进行控制。ViaVoice则没有这些功能。用户可以到xvoice.sourceforge.net去下载Xvoice软件,注意一定要事先安装RPM,因为源程序需要Linux SDK中的ViaVoice中断运行。

  安装完成后,在最后出现的窗口中输入xvoice m,注意不要运行Dictation。这时用户可以做一个简单的测试,口述命令“下一窗口”,桌面上应该出现另一个窗口。

  Xvoice允许用户事先设定好一些操作的口述命令。一套口述命令被称为一个语法组。语法组可以与确定的应用程序、窗口或者应用程序中的某一模块联系在一起,也可以由上下文产生。由口述命令调用的操作可以包括敲键盘、鼠标事件、运行外部命令或三者的任意结合。

  Xvoice使用ViaVoice语音库来识别命令和常规文字。xvoice.xml配置文件可以对命令进行定义。Xvoice使用标准的配置文件,其位置是/usr/share/xvoice/xvoice.xml。当然用户也可以对其位置进行修改,例如可以改为~/.xvoice/xvoice.xml。

  Xvoice的窗口可以显示哪一个命令语法是被击活的,并且窗口中还包括一个面板可以显示最近口述的命令。如果Xvoice认为用户口述的一些词语与某个命令十分相似难以识别,那么在面板中显示的这一命令将是灰色的,以便提醒用户,并且这条命令不会被执行。

  对于任何应用程序窗口,Xvoice都有4种不同的状态。在命令模式下,Xvoice只对命令进行识别;在听写模式下,Xvoice不识别特定的应用程序命令,只是显示出它能识别的词语;在空闲模式下,只有一般命令可以被识别;最后,在命令和听写模式下,口述词语和命令都可以被识别,这时用户需要在命令的前后稍加停顿,以便与文本相区别。

  当用户第一次运行某一应用程序时,Xvoice会自动启动命令模式。如果用户想同时打开听写模式,只需要说“听写模式”便可以了;如果想关闭听写模式,也只需要说“停止听写模式”就万事大吉了。

  当然,最好的方法是将Xvoice窗口置于系统的窗口管理器中,这样你就可以随时了解它的工作情况了。如果你想在开机时便自动运行Xvoice,只要将xvoice m 放入窗口管理器的启动程序中就行了。

声控应用程序

  下面来看一看如何为应用程序定义语法。首先,将要定义语法的软件定义为一个可读的名字,然后为程序的窗口命名一个语句,这样Xvoice便可以识别哪个语法命令是要激活的。在第一行,可以看到一个特殊的固定应用程序名,而它并不是窗口标题。这一特殊的应用程序名必须上下文统一。

  应用程序的标签中包含有听写属性。如果条件为真,则首次运行语句时,Xvoice自动进入听写模式。语句的第二行包含有一些在<define name='numbers'>;区中已经定义过的值。用户可以在定义区中自行定义标记,并应用于整个配置文件中。

  语句的第3行举例说明定义区内可以包含的内容,而这里的命令标记只能在本命令范围内使用。这一行的主要作用是通过语音命令各自的箭头键将彼此互联系起来。当执行命令时,系统会将语音命令与相应的键盘命令对应起来。语音命令的识别转换过程从第4行语句开始。第4行到第8行都是与键盘操作相关的语句,与鼠标相关的语句在第9行到第15行,第16行到第22行是与其它应用程序相关的命令语句,第23行是结束行。

  通过对个人配置文件的编辑,用户几乎可以自动完成过去需要键盘和鼠标才能完成的所有操作过程。许多普通应用软件的语法组,事先已经包含在缺省的配置文件中了,成为用户良好的范例。

语音识别的发展

  Xvoice无法控制一些特殊的应用软件和一些主流游戏软件。对于一些诸如GIMP和Netscape软件来说,虽然Xvoice可以对其进行控制,但是由于此类软件需要大量的鼠标操作,用户会对用语音控制鼠标感到十分厌烦。

  虽然语音识别软件对于大多数命令和一般的文本都可以正确地识别,但是在某些情况下,即使是一个微小的错误也是不允许。语音软件的使用者必须使自已的声音保持稳定。

  另外,虽然XVoice 和ViaVoice可以完成大量的工作,但是用户却无法通过声音控制整个Linux桌面环境。

  IBM公司已经发布了新的ViaVoice,但是只支持Mac 和Windows

 

 

 

开源语音识别软件simon的第一个测试版已经发布,simon用Julius作实际的语音识别处理引擎,HTK toolkit作为主要的语言模型。这些组件被一个易于使用的图形用户界面连接在一起。simon能够直接输入wiktionary(维基百科的子项目)词典,或者是将个人文本转换成HADIFIX或HTK格式和文法结构后导入。它还提供了一种方法,用新样本和新文字训练语言模型。

 

 

 

http://down.htcnc.net/Software/catalog30/1032.html

 

2017-08-19 20:14:30 godloveyuxu 阅读数 41457
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    959 人正在学习 去看看 CSDN讲师

按:本文原作者 Cindi Thompson,美国德克萨斯大学奥斯汀分校(University of Texas at Austin)计算机科学博士,数据科学咨询公司硅谷数据科学(Silicon Valley Data Science,SVDS)首席科学家,在机器学习、自然语言处理等领域具有丰富的学术研究和产业界从业经验。雷锋网编译。


作为 SVDS 研究团队的成员,我们会经常接触各种不同的语音识别技术,也差不多见证了语音识别技术近几年的发展。直到几年之前,最先进的语音技术方案大多都是以语音为基础的(phonetic-based),包括发音模型(Pronunciation models),声学模型(Acoustic Modelling)和语言模型(Language Model)等。通常情况下,这些模型大多都是以隐马尔可夫模型(HMM)和 N-gram 模型为核心的。未来,我们希望以这些传统模型为基础,探索一些诸如与百度 Deep Speech 等最新的语音识别系统相结合的新技术。当然,目前互联网上可以找到许多针对这些基础模型进行解释、汇总的文章和资料,但针对它们之间的差别和特点展开阐述的却并不多。

为此,我们对比了五款基于 HMM 和 N-gram 模型的语音识别工具:CMU Sphinx,Kaldi,HTK,Julius 和 ISIP。它们都是开源世界的顶级项目,与 Dragon 和 Cortana 等商业语音识别工具不同,这些开源、免费的工具可以为开发者提供更大的自由度以及更低的开发成本,因此在开发圈始终保持着强大的生命力。

需要提前说明的是:以下分析大多来源于我们的主观经验,同时也参考了互联网上的其他信息。而且这篇文章也并非一个覆盖所有语音识别开源工具的汇总类文章,我们只是对比了其中五款相对更主流的产品。另外,HTK 并不是严格开源的,它的代码并不能重新组织发布,也不能用于商业用途。

想知道更多语音识别工具的用户请点击以下链接,其中列出了几乎所有开源/非开源的语音识别工具,非常全面。

https://en.wikipedia.org/wiki/List_of_speech_recognition_software 


  编程语言:

根据你对不同编程语言的熟悉程度,你可能会更偏爱某一种工具。如上图所示,这里列出的五款工具中,除了 ISIP 只支持 C++ 之外,全都支持 Python。你可以直接在它们的官网找到不同语言对应的下载链接。不过,Python 版有可能并不会覆盖工具包的全部功能,有些功能还可能是为其他语言的特性单独设计的。另外值得注意的是,CMU Sphinx 还支持 Java、C 和其他更多语言。

  开发者活跃度:

这里列出的五个项目均源于学术研究。

从名字也能看出,CMU Sphinx 是一款源于卡内基梅隆大学的产品。它的研发历史大约可以追溯到 20 年前,目前在 GitHub 和 SourceForge 平台同步更新。在 GitHub 平台有 C 和 Java 两个版本,而且据说分别只有一个管理员维护。但在 SourceForge 平台却有 9 个管理员和十几个开发者。

Kaldi 源于 2009 年的一场研讨会,代码目前在 GitHub 平台开源,共有 121 位贡献者。 

HTK 始于 1989 年的剑桥大学,曾一度商业化,但目前又回归剑桥。如前所述 HTK 现在并不是一款严格意义的开源工具,而且更新缓慢(虽然它的最新版本更新于 2015 年 12 月,但前一个版本的更新时间却是 2009 年,中间隔了差不多 6 年时间)。

Julius 始于 1997 年,最后一个主要版本更新于 2016 年 9 月,据称其 GitHub 平台有三名管理员维护。

ISIP 是第一个比较先进的开源语音识别系统,起源于密西西比州。它主要在 1996 年到 1999 年之间研发,最后一个版本发布于 2011 年,在 GitHub 平台出现之前就已经停止更新了。


  社区活跃度:

这一部分我们考察了上述五个工具的邮件和社区讨论情况。

CMU Sphinx 的论坛讨论热烈,回帖积极。但其 SourceForge 和 GitHub 平台存在许多重复的 repository。相比之下,Kaldi 的用户则拥有更多交互方式,包括邮件、论坛和 GitHub repository 等。HTK 有邮件列表,但没有公开的 repository。Julius 官网上的论坛链接目前已经不可用,其日本官网上可能有更详细的信息。ISIP 主要用于教育目的,其邮件列表目前已不可用。

  教程和示例:

CMU Sphinx 的文档简单易读,讲解深入浅出,且贴近实践操作。

Kaldi 的文档覆盖也很全面,但是在我看来更难理解。而且,Kaldi 同时包括了语音识别解决方案中的语音和深度学习方法。

如果你并不熟悉语音识别,那么可以通过对 HTK 官方文档(注册后可以使用)的学习对该领域有一个概括的认识。同时,HTK 的文档还适用于实际产品设计和使用等场景。

Julius 专注于日语,其最新的文档也是日语,但团队正在积极推动英文版的发布。

以下链接提供了一些基于 Julius 的语音识别样例。

https://github.com/julius-speech/dictation-kit 

最后是 ISIP,虽然它也有一些文档,但是并不系统。

  预训练模型:

即使你使用这些开源工具的主要目的是想要学习如何去训练一个专业的语音识别模型,但一个开箱即用的预先训练好的模型仍然是一个不可忽略的优点。

CMU Sphinx 包括英语、法语、西班牙语和意大利语在内的诸多可以直接使用的模型,详情可以参考它的说明文档。

Kaldi对现有模型进行解码的指令深藏在文档中,不太容易找到,但我们仍然发现了贡献者在 egs/voxforge 子目录下基于英文 VoxForge 语料库训练好的一个模型,并且还可以通过 online-data 子目录下的一个脚本直接运行。详情可以参考 Kaldi 项目的 repository。

我们没有深入挖掘其他三个软件包的模型训练情况,但它们应该至少包含一些简单可用的预训练模型,而且与 VoxForge 兼容(VoxForge 是一个非常活跃的众包语音识别数据库和经过训练的模型库)。

2019-05-17 15:34:26 muxiue 阅读数 695
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    959 人正在学习 去看看 CSDN讲师

开源语音识别工具包

目前开源世界里存在多种不同的语音识别工具包,它们为开发者构建语音识别相关的应用提供了很大的帮助。以下是目前比较流行的语音识别工具包:

  1. CMU Sphinx
  2. Kaldi
  3. HTK
  4. Julius
  5. ISIP
    作为语音识别小白,我将从CMU Sphinx入手,从简单的应用搭建到CMU Sphinx代码的阅读和理解,逐步深入了解语音识别这个深奥的世界。

语音识别简介

语音其实上是一个复杂的现象,人们很少理解语音是怎么产生和感知的,最直观的理解就是语言是由多个单词组成的,而每个单词又是由多个音素(phone)组成的,但事实却并不是这样。事实上,语言/语音是一个连续动态的过程,之间没有明显的分界,如果你用一个语音编辑器来看的话,波形就是下面的样子:
在这里插入图片描述
语音实际上是一个概率问题,从而意味着在一段连续的语音中,单词之间没有明显的分界,所以从语音到文字的转换永远不可能100% 正确,这其实颠覆了许多程序员的认知。作为程序员,大多数都在处理一就是一,二就是二的问题,而不是一有可能是一,也有可能是二的问题,而语音识别就是后者。

语音的构成

语音是一种连续的音频流,这个音频流是稳定状态与动态改变状态的叠加, 在这种状态序列中,可以定义相似类别的声音或音素。对应于每个音素的波形的声学特性受许多因素影响——环境,扬声器,语音风格等。另外,协同发音(指的是一个音受前后相邻音的影响而发生变化,从发声机理上看就是人的发声器官在一个音转向另一个音时其特性只能渐变,从而使得后一个音的频谱与其他条件下的频谱产生差异)的存在使得音素的感知与标准不一样,所以我们需要根据上下文来辨别音素。将一个音素划分为几个亚音素单元。如:数字“three”,音素的第一部分与在它之前的音素存在关联,中间部分是稳定的部分,而最后一部分则与下一个音素存在关联,这就是为什么在用HMM模型做语音识别时,选择音素的三状态HMM模型。上下文相关建模方法在建模时考虑了这一影响,从而使模型能更准确地描述语音,只考虑前一音的影响的称为双音素Bi-Phone,考虑前一音和后一音的影响的称为 3音素Tri-Phone,甚至4音素Qin-phones。
从计算角度出发,只检测3音素的一部分比把3音素作为整体考虑要有用的多,例如,现在你想创建一个3音素头部部分的检测器,那么你只需要一小部分(大约4000个)不同的短的声音检测器,我们称这些检测器为senones。一个senone的上下文依赖比单纯的左右上下文复杂得多,它是一个可以被决策树或者其他方式来定义的复杂函数。
音素phones构成亚单词单元,也就是音节syllables。音节是一个比较稳定的实体,因为当语音变得比较快的时候,音素往往会发生改变,但是音节却不变。音节与节奏语调的轮廓有关。有几种方式去产生音节:基于形态学或者基于语音学。音节经常在词汇语音识别中使用。
亚单词单元(音节)构成单词。单词在语音识别中很重要,因为单词约束了音素的组合。假如共有40个音素,然后每个单词平均有7个音素,那么就会存在40^7个单词,但幸运的是就算一个受过优等教育的人也很少使用过20k个单词,这就使识别变得可行。
单词和一些非语言学声音构成了话语(语句,utterances),我们把非语言学声音称为填充物(fillers),例如呼吸,um,uh,咳嗽等,它们在音频中是以停顿做分离的。所以它们更多只是语义上面的概念,不算是一个句子。

识别过程

语音识别一般的方法是:录制语音波形,再把波形通过静音(语句之间的间断,silences)分割为多个语句,然后去识别每个语句所表达的意思。为了达到这个目的,我们需要用单词的所有可能组合去匹配这段音频,然后选择匹配度最高的组合。
在匹配中有几个关键的概念需要了解的:

  1. 特征
    由于描述一个语音需要的参数个数非常多,这样对处理速度的要求就很高(而且也没必要处理那么多的信息,我们只需要处理对识别有帮助的就行),所以我们需要做优化,进行降维。我们用帧frames去分割语音波形,每帧大概10ms,然后每帧提取可以代表该帧语音的39个数字,这39个数字也就是该帧语音的特征,用特征向量来表示。而如何提取特征向量是当下热门的研究课题,不过简单说来,这些提取方法都是由频谱衍生出来的。
  2. 模型
    模型是用来描述一些数学对象的。这些数学对象描述了一些口语的共同属性。在实际应用中,senone的音频模型就是三态高斯混合模型。简单的说,它就是一个最有可能的特征向量。对于模型,有几个问题需要考虑:模型到底多大程度上可以描述实际情况?在模型本身的局限情况下模型能表现得更优吗?自适应模型如何改变条件?
    经典的语言模型称为隐马尔科夫模型(Hidden Markov Model, HMM),在该模型中,过程被描述为以一定概率彼此改变的状态序列。 此模型旨在描述任何顺序过程,如语音。 HMM已被证明对语音解码非常实用。
  3. 匹配算法
    语音识别需要对所有的特征向量和所有的模型做比较匹配,这是一个非常耗时的工作。而在这方面的优化往往是使用一些技巧,在每一点的匹配时,我们通过保留最好的匹配变体(variants),然后通过它在下一帧产生最好的匹配变体。

模型

根据语音结构,在语音识别中需要用到三种模型:

  1. 声学模型
    一个声学模型包含每个senone的声学属性,包括不依赖上下文的模型和依赖上下文的模型。其中不依赖上下文的模型包括不依赖于上下文的属性(每个音素最大可能的特征向量),而依赖上下文的模型包括依赖于上下文的属性(根据上下文构建的senone)。
  2. 语音学字典
    语音学字典包含了从单词到音素之间的映射,这种映射并不是十分有效,例如,在字典中只标注了两到三个发音变体,但是这种方法在大多数时候够用。字典并不是描述单词到音素之间的映射的唯一方法。可以通过运用机器学习算法去学习得到一些复杂的函数去完成映射功能。
  3. 语言模型
    语言模型是用来约束单词搜索的,它定义了哪些词能跟在上一个已经识别的词的后面(匹配是一个顺序的处理过程),这样就可以为匹配过程排除一些不可能的单词。最常用的语言模型是n-gram模型,它包含了单词序列的统计和有限状态模型,通过有限状态机来定义语音序列,有时候会加入权值。为了达到比较好的识别准确率,语言模型必须能够很好的约束空间搜索,也就是说可以更好的预测下一个词。语言模型是约束词汇包含的单词的,这就出现一个问题,就是名字识别(因为名字可以随便由几个单词组成)。为了处理这种情况,语言模型可以包含更小的块,例如亚单词,甚至音素。但是这种情况,识别准确率将会低于基于单词的语言模型。
    特征、模型和搜索算法三部分构成了一个语音识别系统。如果你需要识别不同的语言,那么就需要修改这三个部分。很多语言,都已经存在声学模型,字典,甚至大词汇量语言模型可供下载了。

其他概念

  • 网格(Lattice)是一个代表识别变体的有向图。一般来说,很难去获得一个最好的语音匹配结果,所以Lattices就是一个比较好的格式去存放语音识别的中间结果。
  • N-best lists of variants和网格(lattice)有点像,但是它没有网格那么密集(也就是保留的结果没有网格多)。N-best搜索和多遍搜索:为在搜索中利用各种知识源,通常要进行多遍搜索,第一遍使用代价低的知识源(如声学模型、语言模型和音标词典),产生一个候选列表或词候选网格,在此基础上进行使用代价高的知识源(如4阶或5阶的N-Gram、4阶或更高的上下文相关模型)的第二遍搜索得到最佳路径。
  • 单词混淆网络是从网格的边缘得到的一个严格的节点顺序序列。
  • 语音数据库是一个从任务数据库得到的典型的录音集。如果我们开发的是一个对话的系统,那么数据库就是包含了多个用户的对话录音。而对于听写系统,包含的就是朗读的录音。语音数据库是用来训练,调整和测试解码系统的(也就是语音识别系统)。
  • 文本数据库是为了训练语言模型而收集的文本,一般是以样本文本的方式来收集形成的。而收集过程存在一个问题就是误把PDFs, web pages, scans等现成文档也当成口语文本的形式放进数据库中。所以,我们就需要把这些文件里的标签和文件头去掉,还有把数字展开为它们的语音形式(例如1展开为英文的one或者汉语的yi),另外还需要把缩写给扩大还原为完整单词。

CMU Sphinx

简介

CMU Sphinx(简称Sphinx)是美国卡内基梅隆大学开发的一系列语音识别工具包以及相关工具(例如声学模型训练软件,语言模型编辑软件和语音词典CMUDICT等)的总称。在2000年,卡内基梅隆的Sphinx小组致力于开源几个语音识别器组件,包括Sphinx 2和后来的Sphinx 3(2001年)。Sphinx包括许多工具包,可以用于搭建具有不同需求的应用。

  • Pocketsphinx - 用C语言编写的轻量级的语音识别库;
  • Sphinxbase - Pocketsphinx的支撑库;
  • Sphinx4 - 用Java编写的自适应的,可修改的语音识别库;
  • Sphinxtrain - 声学模型训练软件;
    现在最新的发布版本是:
  • sphinxbase-5prealpha
  • pocketsphinx - 5prealpha
  • sphinx4 - 5prealpha
  • sphinxtrain - 5prealpha
    Sphinx除了是开源之外,还具有很多优势,可以自己定制声音模型,语言模型,语音学字典,用于多个不同的场景,例如语音搜索,语义分析,翻译,智能助手等。
    如何选择你需要的工具包呢?
  • 由于Sphinx有用不同的编程语言开发的工具包,所以开发者可以根据自己的习惯选择相应的语言识别包。
  • 如果你想要快速和可携带性,那么选择pocketsphinx,如果你想要灵活和可管理,那么可以选择sphinx4.

Sphinx初体验

让我们先来用Sphinx自带的Pocketsphinx来体验一下Sphinx语音识别的效果吧。由于Pocketsphinx依赖于SphinxBase库(提供了公共的函数功能),所以需要同时安装SphinxBase和Pocketsphinx,Pocketsphinx才能正常工作。Pocketsphinx可以安装在Linux,windows,MacOS,iPhone和Android上,本文中我们将在windows上进行安装。

下载

sphinxbase下载页
pocketsphinx下载页

下载"sphinxbase-5prealpha-win32.zip"和“pocketsphinx-5prealpha-win32.zip”,并解压缩。
在这里插入图片描述

编译

  • 编译Sphinxbase
    用visual studio打开sphinxbase\sphinxbase.sln,编译所有项目,其中visual studio版本需要是MS Visual Studio 2012及以上,我使用的是visual studio 2017。由于编译版本不一样,在打开solution时,会弹出如下窗口,选择OK。
    在这里插入图片描述
    在这里插入图片描述
    编译后的结果:
    在这里插入图片描述
  • 编译Pocketsphinx
    用visual studio打开pocketsphinx\pocketsphinx.sln,编译所有项目。其他步骤与编译sphinxbase相同。编译结果如下:
    在这里插入图片描述
  • 拷贝sphinxbase.dll到上图中的文件夹中
    在这个地方有个小trick,理论上应该是我们自己编译出spinxbase.dll之后进行拷贝,但是我们从网站上下载的pocketsphinx中,bin\Debug\Win32下自带拷贝好的sphinxbase.dll,当然你也可以把你编译好的dll重新拷贝覆盖掉之前的dll。提示:如果你编译了pocketsphinx,最好是把你编译的sphinxbase结果也复制过去,否则可能出现不匹配,造成程序如法运行。

运行

运行命令:
bin\Release\Win32\pocketsphinx_continuous.exe -inmic yes -hmm model\en-us\en-us -lm model\en-us\en-us.lm.bin -dict model\en-us\cmudict-en-us.dict

参数说明:

  • inmic:使用麦克风,如果使用file,修改为-infile
  • hmm:指定声学模型
  • lm:指定语言模型
  • dict:指定语言学字典

运行结果:你可以开始说话了,不过识别结果感人,暂时原因未知,还需要继续学习。
在这里插入图片描述

如果在命令行运行时,遇到如下错误:
在这里插入图片描述
其中MSVCR110D.dll是MSVCR110.dll的debug版本。如果遇到这个问题,说明你的phocketsphinx与sphinxbase不匹配,需要将编译好的sphinxbase结果复制过去。

下一篇 PocketSphinx在windows上的应用示例,开发工具Visual Studio

2019-04-24 09:37:17 whale52hertz 阅读数 83
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    959 人正在学习 去看看 CSDN讲师

来源:ATYUN AI平台 

技术的进步推动了语音界面的发展,通过机器学习工具的普及,使得更多的互联网连接产品能够比以往任何时候都更能倾听和回应我们的声音。许多人将会体验到新的语音设备带来的便利。

语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

Mozilla(缩写MF或MoFo)全称Mozilla基金会,是为支持和领导开源的Mozilla项目而设立的一个非营利组织。Mozilla对语音识别的潜力感到兴奋。他们相信这项技术能够并且将会带来一波创新产品和服务的浪潮,并且应该对所有人开放。

上个月29日,Mozilla的机器学习小组的语音识别工作取得了两个重要的里程碑进展。其中之一是Mozilla的开源语音识别模型首次发布,该模型的准确性接近人类在听同样的录音时的感知。其次,Mozilla还发布了世界上第二大公开的语音数据集,这是全球近2万名用户的贡献。

一个接近用户期望性能的开放源码的语音文本引擎
目前只有少数几家大公司的商业质量语音识别服务是可行的。这就减少了用户的选择,也减少了初创公司、研究人员甚至更大的公司的可用功能,这些公司想要为他们的产品和服务提供支持。

这就是为什么Mozilla将DeepSpeech作为一个开放源码项目。Mozilla和一群志同道合的开发人员、公司和研究人员组成的社区一起,应用了复杂的机器学习技术和各种各样的创新,在LibriSpeech的测试数据集上构建了一个语音到文本的引擎,出错率仅为6.5%。

在发布的第一个版本中,引擎包含了Python、NodeJS和一个命令行二进制代码的预构建包,开发者可以马上使用它来进行语音识别。

构建世界上最多样化的公开语音数据集,为训练语音技术最优化
如此少的服务在商业上可用的一个原因是缺乏数据。创业公司、研究人员或任何想要建立语音技术的人都需要高质量的、转录的语音数据来训练机器学习算法。现在,他们只能访问相当有限的数据集。

为了解决这一障碍,Mozilla在今年7月启动了Common Voice项目。目标是让人们可以很容易地把他们的声音捐赠给一个公开的数据库,这样就可以建立一个语音数据集,每个人都可以用它来训练新的语音应用程序。

语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

到目前为止,Mozilla已经发布了第一批捐赠者的声音:近40万种录音,相当于500小时的演讲。任何人都可以下载这些数据。

Mozilla收到了来自全球范围内的2万多人提供的不同的声音。通常,现有的语音识别服务无法理解不同的口音,而且大多数情况,比起女性更善于理解男性的语音——这是语音识别服务接受训练的数据中存在的偏见结果。Mozilla希望说话者的数量和他们的不同的口音能够创造出一个全球性的代表数据集,从而带来更具包容性的技术。

为此,Mozilla开始使用英语,并且正在努力确保从2018年上半年开始,Common Voice项目能够支持多种语言的语音捐赠。最后,当经历了寻找可公开的语音数据集的挑战时,Mozilla还收集了所有其他我们所知道的大型语音收集的链接。

Mozilla认为,技术应该是开放的,所有人都可以访问,包括语音。Mozilla开发这种技术的方法是由设计开放的,他们非常欢迎更多的合作者和贡献者与之一起工作。

本文转自ATYUN人工智能媒体平台,原文链接:语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

更多推荐

达观数据荣获上海市软件企业核心竞争力评价,推动上海软件行业发展

云从科技 | 从初创企业上位AI“国家队”,看看背后都干了些什么?!

智行者蜗小白“无人清扫车”南翠屏上岗(图)

裤子变裙子,GAN图像转换新进展

欢迎关注ATYUN官方公众号,商务合作及内容投稿请联系邮箱:bd@atyun.com
欢迎关注ATYUN官方公众号,商务合作及内容投稿请联系邮箱:bd@atyun.com

 

2016-02-05 14:37:12 zc02051126 阅读数 1907
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    959 人正在学习 去看看 CSDN讲师

1 kaldi

谢谢@王东老师的辛勤劳动,著名的语音识别开源软件kaldi上终于有一个免费的中文语音识别例子,网址为:网页链接。大家速度围观。@爱可可-爱生活 @好东西传送门

2 卷积神经网络的语音识别

http://yerevann.github.io/2015/10/11/spoken-language-identification-with-deep-convolutional-networks/

语音识别初探

阅读数 3371

没有更多推荐了,返回首页