Python SpeechRecognition库安装及使用中文识别Python SpeechRecognition库安装及使用中文识别

本文介绍了Python的SpeechRecognition库,它可方便地将语音转换成文字。安装使用pip即可。获取语音有直接录音和用音频文件两种方式。识别部分介绍了Google Speech API、CMU Sphinx、Vosk等方法,还提及部分方法需注册付费,有的可线下使用,最后提醒处理识别结果格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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^/ 

### 回答1: speechrecognition是一个用于语音识别Python。它提供了一个简单而强大的接口,可以将人类语言转换为文本形式。 speechrecognition支持多种语音识别API,包括百度语音识别、离线语音识别以及Google语音识别等。这使得我们可以选择适合自己需求的API进行语音识别使用speechrecognition进行中文语音识别非常简单。首先,我们需要安装speechrecognition及其相关依赖。然后,我们可以使用recognize_google函数来进行语音识别: import speech_recognition as sr # 创建一个语音识别的实例 r = sr.Recognizer() # 读取音频文件 with sr.AudioFile('audio.wav') as source: audio = r.record(source) # 将音频文件转换为音频对象 # 使用Google语音识别API进行语音识别 text = r.recognize_google(audio, language='zh-CN') print(text) 在上面的代码中,我们将音频文件读取为一个音频对象,并使用Google语音识别API进行语音识别。最后,我们将识别结果打印出来。 除了从音频文件中进行语音识别speechrecognition还支持从麦克风输入进行实时语音识别。我们只需要调用recognize_microphone函数即可实现。例如: import speech_recognition as sr # 创建一个语音识别的实例 r = sr.Recognizer() # 使用麦克风进行实时语音识别 with sr.Microphone() as source: audio = r.listen(source) # 使用Google语音识别API进行语音识别 text = r.recognize_google(audio, language='zh-CN') print(text) 使用speechrecognition进行中文语音识别非常便捷,无论是从音频文件中进行识别还是实时录音进行识别,都可以通过简单的几行代码实现。 ### 回答2: speechrecognition是一个用于语音识别Python。它提供了多种语音识别引擎的支持,包括Google Speech Recognition、CMU Sphinx、Wit.ai等。虽然speechrecognition最初是为英语语音识别而设计的,但它也可以用于中文语音识别。 在使用speechrecognition进行中文语音识别时,我们首先需要导入并创建一个Recognizer对象。我们可以通过Recognizer对象来调用不同的语音识别引擎。例如,使用Google Speech Recognition引擎进行中文语音识别,我们可以使用以下代码: ``` import speech_recognition as sr r = sr.Recognizer() with sr.Microphone() as source: print("请开始说话...") audio = r.listen(source) try: print("Google Speech Recognition识别结果: " + r.recognize_google(audio, language="zh-CN")) except sr.UnknownValueError: print("Google Speech Recognition无法识别音频") except sr.RequestError as e: print("无法从Google Speech Recognition服务获取结果:" + str(e)) ``` 在上述代码中,我们使用了`recognize_google()`方法来调用Google Speech Recognition引擎进行中文语音识别。`.listen(source)`方法用于从输入设备(麦克风)获取音频输入。接着,我们使用`try except`结构来处理识别结果和异常情况。 除了Google Speech Recognition引擎,speechrecognition还支持其他引擎。例如,我们可以使用Wit.ai引擎进行中文语音识别,只需将上述代码中的`recognize_google()`改为`recognize_wit()`。 总之,speechrecognition提供了中文语音识别的功能,我们可以通过简单的代码来实现中文语音识别应用。 ### 回答3: speechrecognition是一个用于语音识别Python。它提供了一种简单的方式来将语音转换为文本数据。该支持多种语音识别服务,包括Google Speech Recognition、Wit.ai、Bing Speech Recognition等。 使用speechrecognition非常简单。首先,需要安装,可以使用pip命令进行安装。接下来,可以使用代码对语音进行识别。首先,需要创建一个Recognizer对象,然后使用该对象进行语音录制。录制完成后,调用Recognizer对象的recognize方法将语音转换为文本。 使用speechrecognition进行中文语音识别也非常方便。可以通过设置recognize_google或recognize_bing等方法的参数lang为"zh-CN"来指定使用中文识别。除了指定语言外,还可以设置一些参数,如调整语音识别的准确度、音量阈值等。 speechrecognition还支持实时语音识别,它可以从麦克风或音频流中实时识别语音。使用实时语音识别时,可以通过设置partial_results参数来获取部分结果,这对于处理长时间语音非常有用。 总而言之,speechrecognition是一个功能强大且易于使用语音识别,可以帮助我们将语音转换为文本数据,并支持多种语音识别服务。无论是进行中文语音识别还是实时语音识别speechrecognition都是一个不错的选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值