首页 > Python资料 博客日记
Python SpeechRecognition库安装及使用中文识别Python SpeechRecognition库安装及使用中文识别
2024-09-08 06:00:06Python资料围观19次
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^/
标签:
相关文章
最新发布
- M3U8工作原理以及key解密视频流详解
- 使用 Grype 检查 .jar 包中的漏洞
- 等保测评中的数据安全风险评估:企业实战
- 15:00面试,15:08就出来了,问的问题有点变态。。。
- 数据赋能(202)——开发:数据开发管理——技术方法、主要工具
- 【Python】字典
- 华为OD机试真题最新题库 (B+C+D+E卷) + 在线OJ在线刷题使用说明(C++、Java、Python合集)(目前已收录540道)
- python 下载并离线安装第三方库
- 【安装tensorflow报错已解决】LibMambaUnsatisfiableError: Encountered problems while solving:
- 基于funasr+pyaudio实现电脑本地麦克风实时语音识别项目语音转文本python实现
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj
- Python pyinstaller打包exe最完整教程
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应