Python中用SpeechRecognition库和 vosk模型来识别语音

老菜鸟YDZ 2024-07-03 15:35:15 阅读 77

Python中的SpeechRecognition库是一个比较好用的语音识别模块,提供了将语音识别成文字的方法,支持中文识别。

一、SpeechRecognition库的安装

使用pip命令安装即可:

<code>​pip install SpeechRecognition

当安装不成功时,可以强制:

​pip install --force- SpeechRecognition

二、SpeechRecognition库的导入:

import speech_recognition as sr

r = sr.Recognizer()

注意:导入库的名称与安装名称的略有不同。

三、识别麦克风输入的语音:

# 麦克风录音

mic = sr.Microphone()

with mic as source:

print("请说话...")

r.adjust_for_ambient_noise(source)

audioData = r.listen(source)

# print(type(audioData))

四、或者直接识别语音文件:

# 识别语音文件

audioFile = sr.AudioFile("渔父.mp3")

with audioFile as source:

audioData = r.record(source)

注意语音文件“渔父.mp3”放在主程序同一文件夹中,故没有指明路径。

不管你是要识别通过麦克风现场输入的语音,还是识别现有的语音文件,最后都是通过

audioData = r.record(source)语句读取到audioData对象中,再通过语音识别模型来识别成文本。

语音识别的模型有很多,如Google Speech API,CMU Sphinx,Vosk等。我们以能线下使用的Vosk模型为例来说明使用方法。

五、安装vosk库

pip install vosk

speechrecognition提供了方便的使用vosk的函数

Recognizer.recognize_vosk(audioData)

虽然我们安装了Vosk的库,但好像其中没有包含Vosk语音模型,还需要单独下载。打开VOSK Models链接,可以看到各种语言的语音模型:

我们要识别中文,当然要下载中文语音模型:

下载各个模型到主程序文件夹下,解压,将想要使用的语音模型文件名改为“model”

我试了42M和1.3G两个语音模型,好像识别效果差不多,唯一的区别是大的语音模型加载时间长。也许是我识别的古文的原因?

六、语音识别

<code>said = r.recognize_vosk(audioData) # 下载的语音模型解压后须改文件夹名为“model”

print("you said:", formulateResult(said))

七、运行结果:

我是用现成的语音文件“渔父.mp3”来识别的。根据程序运行顺序,应是先读取“渔父.mp3”到audioData中,再加载同一文件夹下“model”中的Vosk语音模型,然后识别并显示出识别结果。

为了测试识别效果,我又用一段现代文“考场须知.mp3”来测试,识别效果还是好很多:

全文代码:

<code>import speech_recognition as sr

import vosk

import pyaudio

r = sr.Recognizer()

# model = vosk.Model("model") # 在录音后自动加载,前期加载无效

# pip install SpeechRecognition

'''

# 直接录音

mic = sr.Microphone()

with mic as source:

print("请说话...")

r.adjust_for_ambient_noise(source)

audioData = r.listen(source)

# print(type(audioData))

'''

# 使用语音文件

audioFile = sr.AudioFile("考场须知.mp3")

with audioFile as source:

audioData = r.record(source)

def formulateResult(resu):

start = resu.index('"', resu.index('"', resu.index('"') + 1) + 1) + 1

end = resu.index('"', start)

return resu[start:end]

# pip install vosk;模型网站 https://alphacephei.com/vosk/models,两个模型一大一小,大的也不见得就识别准确

# said = r.recognizer_instance.recognize_vosk(audioData)

said = r.recognize_vosk(audioData) # 下载的语音模型解压后须改文件夹名为“model”

# said = r.rec(audioData)

print("you said:", formulateResult(said))



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。