欢迎访问宙启技术站
智能推送

在Python中使用SpeechRecognition库实现实时语音识别

发布时间:2023-12-23 23:47:17

在Python中,可以使用SpeechRecognition库实现实时语音识别。

首先,需要安装SpeechRecognition库。使用以下命令在命令行中安装SpeechRecognition库:

pip install SpeechRecognition

安装完成后,可以使用以下代码进行实时语音识别:

import speech_recognition as sr

# 创建识别器对象
r = sr.Recognizer()

# 使用系统默认的麦克风作为音频源
with sr.Microphone() as source:
    # 调整麦克风的环境噪音水平(可选)
    r.adjust_for_ambient_noise(source)
    print("请开始说话:")
  
    # 开始录音
    audio = r.listen(source)

    try:
        # 识别录音中的文本
        text = r.recognize_google(audio, language='zh-CN')
        print("识别的文本:", text)
    except sr.UnknownValueError:
        print("无法识别音频")
    except sr.RequestError as e:
        print("请求失败;{0}".format(e))

以上代码中,首先导入speech_recognition模块,然后创建一个Recognizer对象r。

接下来,通过sr.Microphone()函数创建一个麦克风对象source,作为音频源。

然后,使用adjust_for_ambient_noise()方法调整麦克风的环境噪音水平,这个步骤是可选的,目的是提高识别准确率。

在开始录音之前,程序会输出"请开始说话:"。

然后,使用r.listen()方法开始录音,并将录音保存在audio对象中。

接下来,使用r.recognize_google()方法对录音中的文本进行识别。这里使用了Google Web Speech API进行语音识别。可设置参数language为'zh-CN'来指定识别语言为中文。

最后,程序会输出识别的文本。

需要注意的是,代码中的识别过程是同步的,即识别过程会阻塞程序的执行。如果要实现并发进行语音识别,可以将识别过程放在一个线程中运行。可以使用Python的threading模块来实现多线程。

以下是一个使用threading模块的例子:

import speech_recognition as sr
import threading

# 创建识别器对象
r = sr.Recognizer()

# 定义识别函数
def recognize_speech():
    # 使用系统默认的麦克风作为音频源
    with sr.Microphone() as source:
        # 调整麦克风的环境噪音水平(可选)
        r.adjust_for_ambient_noise(source)
        print("请开始说话:")
  
        # 开始录音
        audio = r.listen(source)

        try:
            # 识别录音中的文本
            text = r.recognize_google(audio, language='zh-CN')
            print("识别的文本:", text)
        except sr.UnknownValueError:
            print("无法识别音频")
        except sr.RequestError as e:
            print("请求失败;{0}".format(e))

# 创建一个线程来执行语音识别
thread = threading.Thread(target=recognize_speech)
thread.start()

这个例子中,我们先定义了一个recognize_speech函数来进行语音识别。然后,使用threading.Thread创建了一个新的线程,将recognize_speech函数作为线程的目标函数,并调用start方法来启动线程。

这样就可以在一个线程中进行语音识别,而不会阻塞主线程的执行。

在实际应用中,可以根据需要使用不同的语音识别服务,SpeechRecognition库提供了多个可用的识别器,包括Google Speech Recognition、Sphinx等等。可以根据自己的需求选择合适的识别器进行语音识别。