首页 > Python资料 博客日记
Python SpeechRecognition库安装及使用中文识别Python SpeechRecognition库安装及使用中文识别
2024-09-08 06:00:06Python资料围观91次
Python里的SpeechRecognition库是一个很好用的语音识别库,提供了将语音转换成文字的方便的方法。
安装
使用pip即可
pip install SpeechRecognition
语音
Speechrecognition主要是将一些常见的语音识别api封装成了函数并且直接有调用麦克风的方法,用起来很方便。
最终要传给语音识别函数的是名为AudioData的对象,为了得到AudioData对象,我们有常用的两种办法:用音频文件或直接录音。具体使用如下:
import speechrecognition as sr
r = sr.Recognizer()
直接录音
with sr.Microphone() as source:
audioData = recognizer_instance.listen(source,time)
此处audioData就是我们要的
用音频文件
audioFile = sr.AudioFile("Path/to/audio/file/audioFile.wav")
with audioFile as source:
audioData = r.record(source)
此处audioData就是我们要的
r是Recognizer对象,语音输入、识别大部分操作用它进行
with用来创建上下文,这样sr打开麦克风或文件用完后就会关掉
Microphone接受一个整数参数,代表麦克风硬件编号,默认是系统默认
识别
识别这部分主要用speechrecognition封装的api和其他方法,包括:
其中大部分是只能在线使用的,且需要对应的api_key,去获得api_key,你就得注册他们的服务,可能要给钱,比较麻烦。但是其中也有无需注册或付费的和能线下使用的。
具体来说,我们还是需要用Recognizer对象,用它的各种方法(如上图)进行语音识别,以下列举几个好用的。
Google Speech API
Google Speech API 是使用时不必须提供api_key的,但是既然它是google的服务,国内使用是要用魔法的。它使用Recognizer的recognize_google()方法,此方法有两个参数比较重要,AudioData和language,前者是文章上部分提到的,后者是识别的语言,是字符串,形如"zh-CN"或"en-US"或别的。举例,以下这个程序将audio.wav以英语识别并输出:
import speech_recognition as sr
r = sr.Recognizer()
test = sr.AudioFile('/Path/to/audio/audio.wav')
with test as source:
audio = r.record(source)
said = r.recognize_google(audio, language='en-US')
print("google think you said:",said)
CMU Sphinx
CMU Sphinx是可以线下使用的,但是可能效果稍微差点,且需要一个额外的库:
pip install pocketsphinx
这个额外的库默认只有英语的模型。如果要识别中文语音,需要在 python安装目录\Lib\site-packages\speech_recognition\pocketsphinx-data\ 下,增加一个zh-CN的模型。这个中文模型,如果你按照提示去github
(https://github.com/Uberi/speech_recognition/blob/master/reference/pocketsphinx.rst)
上找,会发现作者把普通话的模型放在谷歌云盘上了,但是别处还是有的:
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
下好之后是不能直接用的,需要改名,把
文件夹名改成zh_CN
zh_cn.lm.bin改成language-model.lm.bin
zh_cn.dic改成pronounciation-dictionary.dict
子文件夹zh_cn.cd_cont_5000改成acoustic-model 内容不动
改成
总之就是和上一级目录的en-US里的文件格式一样
然后就可以用啦,用法和用google差不多,只是r.recognize_google(audioData, language='en-US')要换成 r.recognize_sphinx(audioData, language='en-US')
Vosk
使用Vosk也是一种线下使用的方法。我个人推荐这个,方便且准确率是不错的。
为了使用vosk, 首先你需要下载vosk的库,直接:
pip install vosk
speechrecognition提供了方便的使用vosk的函数
recognizer_instance.recognize_vosk(audioData)
和上面用sphinx和谷歌类似。但是这样直接运行会报错,缺少vosk的模型,顺着提示,去到
https://alphacephei.com/vosk/models
直接下载需要的就行,一般用有small字样的。 下好的文件解压放在项目同目录下即可,下的什么语言就识别什么语言(其实不太严谨。实际上,recognize_vosk()其实还有一个language参数,但如果填一个en-US然后用中文模型的话也是可以的,按中文识别)
别的
注意,语音识别函数返回的是字符串,但可能不是我们想要的格式,它会返回这样的字符串:
{"text"="你说的内容"}
可能要调整一下,可以写一个函数,比如:
def formulateResult(resu):
start = resu.index('"', resu.index('"', resu.index('"') + 1) + 1) + 1
end = resu.index('"', start)
return resu[start:end]
行
\^o^/
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程