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

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

一、SpeechRecognition库的安装

使用pip命令安装即可:

​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两个语音模型,好像识别效果差不多,唯一的区别是大的语音模型加载时间长。也许是我识别的古文的原因?

六、语音识别

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

七、运行结果:

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

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

全文代码:

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))

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值