语音数据的特征


语音是一个连续的音频流,它是由大部分的稳定态和部分动态改变的状态混合构成。

image.png

image.png

语音识别系统本质上属于模式识别系统的范畴,都包含有特征提取和模板识别.
机器在识别匹配过程中,将输入语音信号的特征与模板库中的特征参数进行对比,根据所选建模方式,找出与之最为相近的模板参数,最终得到识别结果。优化的结果与特征的选择、声学模型的好坏、模板的准确性都有直接的关系。

image.png

Sphinx语音识别开源工具


Sphinx是由美国卡内基梅隆大学开发的大词汇量、非特定人、连续英语语音识别系统。项目网址:
https://cmusphinx.github.io/
Sphinx家族全家福:

image.png

下载目录:

image.png

  • Acoustic and Language Models:语音和语料模型,支持多种语言.
  • Sphinxbase:核心库
  • Sphinxtrain:生成用户自己语音语料模型的工具
  • Pocketsphinx: PocketSphinx是一个计算量和体积都很小的嵌入式语音识别引擎。在Sphinx-2的基础上针对嵌入式系统的需求修改、优化而来,是第一个开源面向嵌入式的中等词汇量连续语音识别项目。识别精度和Sphinx-2差不多。
  • Sphinx-2: 采用半连续隐含马尔可夫模型(SCHMM)建模,采用的技术相对落后,使得识别精度要低于其它的译码器。
  • Sphinx-3: CMU高水平的大词汇量语音识别系统,采用连续隐含马尔可夫模型CHMM建模。支持多种模式操作,高精度模式扁平译码器,由Sphinx3的最初版本优化而来;快速搜索模式树译码器。目前将这两种译码器融合在一起使用。
  • Sphinx-4: 是由Java语言编写的大词汇量语音识别系统,采用连续的隐含马尔可夫模型建模,和以前的版本相比,它在模块化、灵活性和算法方面做了改进,采用新的搜索策略,支持各种不同的语法和语言模型、听觉模型和特征流,创新的算法允许多种信息源合并成一种更符合实际语义的优雅的知识规则。由于完全采用JAVA语言开发,具有高度的可移植性,允许多线程技术和高度灵活的多线程接口。

pocketSphinx-python是sphinx的python版本.在github页面下(https://github.com/cmusphinx/pocketsphinx-python)

Pocketsphinx的安装:

Pocketsphinx现在最新的版本是 5prealpha.下载安装文件后,解压.进入文件夹.

./autogen.sh
./configure
Make clean all
Make check
Sudo make install

如果需要gstreamer支持,那么首先需要安装gstreamer, 然后再安装pocketsphinx.
https://cmusphinx.github.io/wiki/gstreamer/
网站上给出了一个非常棒的demo: livedemo.py. 可以实现实时录音和识别. 下面是demo运行时的界面:

image.png

Pocketsphinx-python安装

也可以安装pocketsphinx的python支持版本.首先下载所有的文件,包括sphinxbase和pocketsphinx.在安装时候需要首先安装上sphinxbase, pocketsphinx, 然后在pocketSphinx-python路径下输入:
sudo python setup.py install

pocketsphinx的使用

支持的文件格式:wav
音频文件的解码要求: 16KHz, 单声道

config.set_string('-hmm', os.path.join(MODELDIR, 'en-us/en-us')) # 计算模型
config.set_string('-lm', os.path.join(MODELDIR, 'en-us/en-us.lm.bin')) #语言模型
config.set_string('-dict', os.path.join(MODELDIR, 'en-us/cmudict-en-us.dict')) # 词典模型

Sphinx有两种模式:
一种是detect模式(设置见上), 一种是keyphrase模式.
以下是keyphrase模式的设置:

config.set_string('-keyphrase', 'forward')
config.set_float('-kws_threshold', 1e+20)

识别率不佳时的改进

通常,特别是针对指定词典库(.dic)和语言模型(lm)时,识别率通常都非常高. 对于识别率不高的情况, 可以从以下几方面改进:
1 采样率和声道. 音频解码时候的声道与录音时候的采样率和声道数不一致.
2 声学模型不一致.
3 语言模型不一致.语言模型应该就是lm模型.
4 词典和词语发音不一致. 也就是phonetic字典.
https://cmusphinx.github.io/wiki/tutorialtuning/
Lmtool: 语言模型库工具
创建解码器所必须的语言模型和词典模型. 当前的lmtool只能用于美式英语.
首先,创建一个Corpus.txt文件(名字可以任意). 在文件中放进需要语料信息(短语, 短句子, 词汇).
然后在这个网站里: http://www.speech.cs.cmu.edu/tools/lmtool-new.html
点击Choose file, 上传txt文件.

image.png

点击Compile knowle base网站会自动生成.dic和语言.lm模型文件等一系列文件.下载其中的.tgz文件,并解压. 假设新生成的语言模型文件名为new_lm.lm, new_dic, 将这两个文件保存到 在代码中修改词典模型和语言模型, 如下, 就可以实现模型的更新. 更新后识别率确实提高了不少.

config.set_string('-lm', os.path.join(MODELDIR, 'en-us/new_lm.lm')) #语言模型
config.set_string('-dict', os.path.join(MODELDIR, 'en-us/new_dic.dic')) # 词典模型

参考文献及资源


王一蒙, 语音识别关键技术研究[D], 北京邮电大学
训练自己语料库的方法:
http://blog.csdn.net/x_r_su/article/details/53034371
[*]这篇博客很有借鉴意义:
http://blog.csdn.net/x_r_su/article/details/53032589
IRST LM Toolkit planning 构建大型语料库的工具
A toolkit for language modeling.
https://sourceforge.net/projects/irstlm/?source=typ_redirect
Cmusphinx bug讨论大汇总:
https://sourceforge.net/p/cmusphinx/bugs/

sphinx语音识别(1)-基本介绍相关推荐

  1. windows7使用Sphinx+PHP+MySQL详细介绍

    安装(Windows) 1.官方下载 Sphinx下载地址: 下载 2.解压并重命名 此处下载版本为3.0.3,将 sphinx 文件夹命名为sphinx 3.文件夹目录介绍 sphinx --api ...

  2. php sphinx mysql_windows7使用Sphinx+PHP+MySQL详细介绍

    安装(Windows) 1.官方下载 Sphinx下载地址: 下载 2.解压并重命名 此处下载版本为3.0.3,将 sphinx 文件夹命名为sphinx 3.文件夹目录介绍 sphinx --api ...

  3. 语音识别芯片LD3320介绍再续

    语音识别芯片LD3320驱动程序     1.芯片复位 复位就是对LD3320芯片的第47腿(RSTB*)发送低电平,然后需要对片选CS做一次拉低→拉  高的操作,以激活内部DSP.按照以下顺序: v ...

  4. 语音识别芯片LD3320介绍续

    语音识别芯片LD3320寄存器介绍 语音识别芯片LD3320寄存器大部分都是有读和写的功能,有的是接受数据的,有的是设置开关和状态的.寄存器的地址空间为8位,可能的值为00H到FFH.但除了本文档介绍 ...

  5. 语音识别技术是什么 语音识别基本方法介绍【图文】

    语音识别技术,语音识别技术是什么意思 语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例 ...

  6. 语音识别技术是什么_语音识别技术应用领域介绍

    语音识别技术,也被称为自动语音识别AutomaTIc Speech RecogniTIon,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键.二进制编码或者字符序列.与说话 ...

  7. 语音识别技术应用领域介绍

    随着语音识别技术的不断发展和进步,也应用到越来越多的产品跟领域中.它们都少不了语音识别芯片.语音识别模块的支持.那么市面上有哪些语音识别模块好用呢?哪些领域又运用到语音识别技术呢?语音识别模块哪个好用 ...

  8. 语音识别技术是什么 语音识别技术应用介绍【图文】

    什么是语音识别技术 语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术,也就是让机器听懂人类的语音. 也就是说,如果电脑配置有"语音辨识"的程序组,那 ...

  9. 语音识别技术原理是什么 讯飞语音识别技术特点介绍【详解】

    语音识别技术原理简介 自动语音识别技术(Auto Speech Recognize,简称ASR)所要解决的问题是让计算机能够"听懂"人类的语音,将语音中包含的文字信息"提 ...

最新文章

  1. video 微信 标签层级过高_基于大数据的用户标签体系建设思路和应用
  2. 皮一皮:到底谁才是渣王...
  3. redux 和 react-redux 部分源码阅读
  4. 观念什么意思_观念真不是凭空出现的,也不是单一的,观念来自环境并且不止一种...
  5. MyBatis中的原理
  6. 洛谷 P2762 太空飞行计划问题
  7. textCNN和lightGBM模型对景区口碑评价进行情感分析
  8. pytorch---pack_padded_sequence()与pad_packed_sequence()
  9. DSP SRIO接口设计
  10. 微信小程序获取用户信息(附代码、流程图)
  11. matlab质心原理图,matlab:绘制质心
  12. 如何从哈斯图判断一个偏序集是不是格?
  13. 【总结】Go 学习路线(2022)
  14. 多元化邮件插图成鲜活生命力,助力邮件营销转化!
  15. TI四芯片级联雷达评估板-校准
  16. 利用Python实现中文转拼音
  17. 京东金融的贷款规模创新高
  18. 微信链接跳转浏览器实现微信中直接下载棋牌游戏类APP功能
  19. 游戏程序设计 # ch13 开发工具 # 开发语言、开发环境、腾讯开发组件、网络通信和业务框架介绍
  20. matlab求矩阵距平矩阵,matlab经验正交函数EOF(转载)

热门文章

  1. windows聚焦图片在哪?
  2. 猿创征文|工具虽小,五脏俱全(这些年常用的开发者小工具)
  3. @Temporal标签的作用
  4. 【已解决】一台电脑打开登录多个微信解决方法
  5. 魔百盒cm201-1, cm211-1 免费线刷固件及教程(长虹ch代工)
  6. 已知立方和不等式为 13+ 23+…+ m3< n 对指定的n值,试求满足上述立方和不等式的m的整数解。
  7. 从贝叶斯公式到贝叶斯判别准则
  8. wx.createVideoContext()
  9. mysql使用教程图文_MySQL使用教程图文详解
  10. DNF登陆的时候说连接服务器失败,请检查您的网络。是否启用修复程序进行修复?,地下城和勇士常见问题修复方法.doc...