075. 编写一个函数,实现简单的语音识别功能

在 Python 中,可以使用 SpeechRecognition 库来实现简单的语音识别功能。SpeechRecognition 是一个流行的语音识别库,支持多种语音识别引擎,包括 Google Web Speech API(在线)和本地引擎(如 PocketSphinx)。 使用 Google Web Speech API 来识别语音。

安装依赖库

在开始之前,请确保你已经安装了 SpeechRecognition 库。如果没有安装,可以通过以下命令安装:

pip install SpeechRecognition

如果你需要使用本地引擎(如 PocketSphinx),还需要安装 pocketsphinx

pip install pocketsphinx

示例代码

以下代码实现了一个简单的语音识别函数,使用 Google Web Speech API 识别语音。

import speech_recognition as sr

def simple_speech_recognition():
    # 创建一个 Recognizer 对象
    recognizer = sr.Recognizer()

    # 使用麦克风作为音频源
    with sr.Microphone() as source:
        print("请说话...")
        audio = recognizer.listen(source)  # 录制音频

    try:
        # 使用 Google Web Speech API 进行语音识别
        text = recognizer.recognize_google(audio, language="zh-CN")  # 指定语言为中文
        print(f"您说的是: {text}")
    except sr.UnknownValueError:
        print("无法识别语音")
    except sr.RequestError as e:
        print(f"请求错误: {e}")

# 示例用法
if __name__ == "__main__":
    simple_speech_recognition()

代码说明

创建 Recognizer 对象:使用 speech_recognition.Recognizer() 创建一个识别器对象。

使用麦克风录制音频

  • 使用 sr.Microphone() 作为音频源。

  • 使用 recognizer.listen(source) 录制音频。

语音识别

  • 使用 recognizer.recognize_google(audio, language="zh-CN") 调用 Google Web Speech API 进行语音识别。

  • language="zh-CN" 指定语言为中文。如果需要识别其他语言,可以修改为相应的语言代码(如 "en-US")。

异常处理:捕获 sr.UnknownValueErrorsr.RequestError 异常,处理语音识别失败或请求错误的情况。

示例输出

请说话...
您说的是: 你好,世界

注意事项

  1. 网络连接:使用 Google Web Speech API 需要网络连接。如果需要离线语音识别,可以使用 PocketSphinx。
  2. 麦克风权限:确保你的程序有权限访问麦克风。在某些操作系统上,可能需要手动授权。
  3. 语音质量:确保语音清晰,避免背景噪音。如果语音质量差,可能会影响识别结果。
  4. 隐私和安全:使用 Google Web Speech API 时,语音数据会发送到 Google 服务器进行处理。如果涉及隐私数据,请谨慎使用。

使用 PocketSphinx 进行离线语音识别

如果你需要离线语音识别功能,可以使用 PocketSphinx。以下是修改后的代码:

import speech_recognition as sr

def simple_speech_recognition_offline():
    # 创建一个 Recognizer 对象
    recognizer = sr.Recognizer()

    # 使用麦克风作为音频源
    with sr.Microphone() as source:
        print("请说话...")
        audio = recognizer.listen(source)  # 录制音频

    try:
        # 使用 PocketSphinx 进行语音识别
        text = recognizer.recognize_sphinx(audio, language="zh-CN")  # 指定语言为中文
        print(f"您说的是: {text}")
    except sr.UnknownValueError:
        print("无法识别语音")
    except sr.RequestError as e:
        print(f"请求错误: {e}")

# 示例用法
if __name__ == "__main__":
    simple_speech_recognition_offline()

注意事项

  1. PocketSphinx 的语言支持:PocketSphinx 的中文支持可能不如 Google Web Speech API 好。如果需要更好的中文识别效果,建议使用在线服务。
  2. 安装 PocketSphinx:如果你没有安装 pocketsphinx,可以通过 pip install pocketsphinx 安装。

视频讲解

BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)