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.UnknownValueError
和 sr.RequestError
异常,处理语音识别失败或请求错误的情况。
示例输出
请说话...
您说的是: 你好,世界
注意事项
- 网络连接:使用 Google Web Speech API 需要网络连接。如果需要离线语音识别,可以使用 PocketSphinx。
- 麦克风权限:确保你的程序有权限访问麦克风。在某些操作系统上,可能需要手动授权。
- 语音质量:确保语音清晰,避免背景噪音。如果语音质量差,可能会影响识别结果。
- 隐私和安全:使用 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()
注意事项
- PocketSphinx 的语言支持:PocketSphinx 的中文支持可能不如 Google Web Speech API 好。如果需要更好的中文识别效果,建议使用在线服务。
- 安装 PocketSphinx:如果你没有安装
pocketsphinx
,可以通过pip install pocketsphinx
安装。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)