600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python使用Sphinx实现中文普通话语音识别

python使用Sphinx实现中文普通话语音识别

时间:2021-08-09 13:21:19

相关推荐

python使用Sphinx实现中文普通话语音识别

python实现中文语音识别有很多种方法。

国内有百度的免费的60s的Python SDK语音识别,我尝试过,感觉识别率不高,而且识别的时间不短,还要求联网。

github找了几个关于语音识别的包。

找到一个speech_recognition

支持多个库

我在这里尝试了CMU Sphinx

按照文档里说的要先安装PyAudio

我尝试win和ubuntu系统的安装,win10使用正常,但是ubuntu调用麦克风出错。

安装完speech_recognition之后

我们要在CMU Sphinx语音识别工具包里面下载对应的普通话升学和语言模型。

这三个都要下载。

但是我们要把zh_broadcastnews_64000_utf8.DMP转化成language-model.lm.bin。我在看别人的文章的时候,有的人直接用DMP模型的,但是我没找到相关的例子。

关于转换模型,在pocketsphinx.rst写得挺清楚的

关于sphinx_lm_convert的命令,win下好像在CMU Sphinx要安装相关的的工具进行转化。

我是在Ubuntu下进行转化的,直接复制上面的命令,然后系统会提示安装相应的包,我们对着提示的包名直接进行安装就行了。就可以转化了。最后得到chinese.lm.bin

解压zh_broadcastnews_16k_ptm256_8000.tar.bz2得到zh_broadcastnews_ptm256_8000文件夹。

然后我的方法是这样的:

找到spee_recognition文件夹,

然后把原来的en-US改名成en-US-bak,新建一个文件夹en-US,把解压出来的zh_broadcastnews_ptm256_8000改成acoustic-model,把chinese.lm.bin改成language-model.lm.bin,把pronounciation-dictionary.dic改后缀成dict,复制这三个文件到en-US里。

然后复制这个例子,这个例子是听完就进行语音识别的,github上面还有其他例子。

# -*- coding: utf-8 -*-import speech_recognition as sr# obtain audio from the microphoner = sr.Recognizer()with sr.Microphone() as source:r.adjust_for_ambient_noise(source) # listen for 1 second to calibrate the energy threshold for ambient noise levelsprint('say something')# print("")audio = r.listen(source)## # recognize speech using Sphinxtry:print("Sphinx thinks you said " + r.recognize_sphinx(audio))except sr.UnknownValueError:print("Sphinx could not understand audio")except sr.RequestError as e:print("Sphinx error; {0}".format(e))

但是总体上识别率还是不高,但是在我用的过程中是要比百度的Python SDK要好很多。

看到很多同学想要语音包,我就把相关文件分享出来

/s/1R9rxwo9mhhXj90etjSBZyA

提取码:zcxn

不过Sphinx支持定义自己的上传的词汇生成相对应的模型,点击地址

最后我粘贴几个我看过的几篇好的文章地址

简书的

别人的博客

csdn

csdn

csdn

csdn

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。