ubuntu离线中文语音识别
一,目的本人需要一个开源免费的语音库,目的是用来给机器人发指令,也就是说只需要只个简单的词。二.准备在windows10、ubuntu18.04下需要成功实现了中文识别。windows下可以采用:大佬的方法ubuntu下,依然是这位大佬的延伸,其中en-US文件在~/.local/lib/python3.6/site-packages/speech_recognition/pocket......
一.目的
本人需要一个开源免费的语音库,目的是用来给机器人发指令,也就是说只需要只个简单的词。
二.准备
在windows10、ubuntu18.04下需要成功实现了中文识别。
windows下可以采用:大佬的方法
ubuntu下,依然是这位大佬的延伸,其中en-US文件在
~/.local/lib/python3.6/site-packages/speech_recognition/pocketsphinx-data
中,而不是在~/.local/lib/python3.6/site-packages/pocketsphinx/model
中,这个一定要注意,本人就改错了。
别外如果上述大佬的文件链接失效了,本人提供如下:
(本人没有百度网盘会员,下载微有痛苦,特以天翼云盘的方式给出)
https://cloud.189.cn/web/share?code=NNr2E3NzaeEb(访问码:8gnk)
三.详细步骤
-
首先把包给安了,既然说了要离线的,还有免费的,所以下面的都是开源的,尽管拿去用。
-
pip install SpeechRecognition
(win)
或pip3 install SpeechRecognition
(ubuntu)(下面就不说了,ubuntu下我用的是python3.6) -
接着同样把sphinx、PyAudio给安了,然后将提示的包全安了,嫌速度慢可以参考:如下:
(注意ubuntu下最好用sudo apt-get install pocketsphinx)(pip3会报错,当然也可以解决pip3报错问题:https://blog.csdn.net/weixin_44895651/article/details/104445102)
win下链接:https://blog.csdn.net/wxkhturfun/article/details/100387273
linux下:
关于pyaudio:https://blog.csdn.net/LCCFlccf/article/details/108313149
(备注:上述图片截图于https://www.fujieace.com/python/pypi.html) -
然后就是偷梁换柱了
找到这个路径(没安上面的包当然找不到)
D:\Python\Python37\Lib\site-packages\speech_recognition\pocketsphinx-data
当然,自己的路径自己找,用pip安装的话是在“speech_recognition\pocketsphinx-data”包里了,ubuntu下也一样,在这个路径下你会发现一个名为en-US的文件夹,没错,要是不动这个文件夹,你可以识别英文,比如执行以下代码:
# -*- coding: utf-8 -*-
import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print('say something')
# print("")
audio = r.listen(source)
try:
print("Sphinx thinks you said " + r.recognize_sphinx(audio))
print("ok")
except sr.UnknownValueError:
print("Sphinx could not understand audio")
except sr.RequestError as e:
print("Sphinx error; {0}".format(e))
但是我要是想改成中文呢?这里可以用我的中文包拿去(2020年4月初下的),直接用下面的包替换原来的en-US即可(当然做人要留条后路,万一以后要识别英文呢,还是备份原来的吧)
天翼云盘链接:(百度网盘本人没有会员,等有会员再改吧)
https://cloud.189.cn/t/yArAbyIVZb6r
同样运行上面的代码,大概率事件是可以识别中文了。
- 精确一点?
有些词识别的不是很准?总不能自己去训练语音吧,本人上次把PC跑死也没跑动(当然你有服务器另说)。
下面给出一个“将错就错”的办法,比如:上述python代码,我说“右转”,它老是显示“柔道”;那么找到en-US下的“pronounciation-dictionary.dict”,直接将“柔道”两字改为“右转”。
呃—本人也觉得粗暴了点,但是赶时间,能用就行。
然后你还可以缩小范围,毕竟大不了让它识别不出来重复识别自己多说几次就行了,总比识别出一个错误的好。直接删除“pronounciation-dictionary.dict”里面不需要的,比如提取成这样:
https://cloud.189.cn/t/qE7zii7baqqa
现在确实大功造成了,ubuntu18.04(其他版本的不知道)下同样适用。
参考:
https://blog.csdn.net/qq_40965177/article/details/86766703
https://blog.csdn.net/itas109/article/details/78999477
更多推荐
所有评论(0)