SpeechRecognition:一个全面的Python语音转文字库
探索SpeechRecognition,一个支持多种在线和离线语音识别引擎及API的多功能Python库,包含实用示例和故障排除技巧。
简介
语音识别是现代应用程序中的关键组件,从虚拟助手和转录服务到无障碍工具和自动化工作流,无处不在。Python的SpeechRecognition库为多种语音识别引擎和API提供了统一接口,使您能够轻松地将语音转文字功能集成到项目中。无论您需要CMU Sphinx的离线识别,还是Google、Azure或OpenAI Whisper的云端精度,这个库都能满足需求。
支持的引擎和API
SpeechRecognition支持多种后端,让您可以根据用例选择最佳方案:
离线引擎:
- CMU Sphinx (PocketSphinx): 完全离线运行,适合隐私敏感或低延迟应用。
- Vosk API: 另一种离线选项,支持多种语言。
- Whisper (本地): OpenAI的Whisper模型可本地运行,无需互联网即可实现高质量转录。
- Faster Whisper: Whisper的优化版本,推理速度更快。
- Snowboy热词检测: 用于唤醒词检测(离线)。
云端API:
- Google语音识别: 提供免费套餐,易于使用。
- Google Cloud Speech API: 更准确且可定制,需要身份验证。
- Microsoft Azure语音: 企业级识别。
- Wit.ai: Facebook的语音API。
- Houndify: SoundHound的API。
- IBM语音转文字: IBM Watson的服务。
- OpenAI Whisper API: 基于云端的Whisper,精度高。
- Groq Whisper API: 通过Groq硬件实现快速推理。
- Cohere Transcribe API: Cohere的转录服务。
自托管端点:
- 支持OpenAI兼容端点,如vLLM和Ollama,让您灵活运行自己的推理服务器。
快速开始
通过pip即可轻松安装:
pip install SpeechRecognition
快速测试:
python -m speech_recognition
这将使用默认麦克风,并尝试通过Google的免费API识别语音。
基本使用示例
从麦克风识别语音
import speech_recognition as sr
# 初始化识别器
r = sr.Recognizer()
# 使用默认麦克风作为音源
with sr.Microphone() as source:
print("请说话!")
audio = r.listen(source)
# 使用Google语音识别
尝试:
text = r.recognize_google(audio)
print(f"您说的是:{text}")
捕获 sr.UnknownValueError:
print("无法理解音频")
捕获 sr.RequestError as e:
print(f"错误:{e}")
转录音频文件
import speech_recognition as sr
r = sr.Recognizer()
with sr.AudioFile("path/to/audio.wav") as source:
audio = r.record(source)
text = r.recognize_google(audio)
print(text)
将音频数据保存到文件
with sr.Microphone() as source:
audio = r.listen(source)
# 保存为WAV文件
with open("recording.wav", "wb") as f:
f.write(audio.get_wav_data())
校准环境噪音
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print("已校准环境噪音。请说话!")
audio = r.listen(source)
后台监听
def callback(recognizer, audio):
尝试:
text = recognizer.recognize_google(audio)
print(f"您说的是:{text}")
捕获 sr.UnknownValueError:
print("无法理解")
r.listen_in_background(sr.Microphone(), callback)
# 保持程序运行
import time
while True:
time.sleep(1)
安装详情
PyAudio(用于麦克风输入)
使用Microphone类需要PyAudio。安装命令:
pip install SpeechRecognition[audio]
在Linux上,可能需要系统包:
sudo apt-get install portaudio19-dev python3-all-dev
PocketSphinx(离线Sphinx)
pip install SpeechRecognition[pocketsphinx]
Vosk(离线Vosk)
pip install SpeechRecognition[vosk]
然后从此处下载Vosk模型,并放置在model目录中。
Whisper(本地)
pip install SpeechRecognition[whisper-local]
Faster Whisper
pip install SpeechRecognition[faster-whisper]
OpenAI Whisper API
pip install SpeechRecognition[openai]
使用前设置环境变量OPENAI_API_KEY。
Groq Whisper API
pip install SpeechRecognition[groq]
设置GROQ_API_KEY。
Cohere Transcribe API
pip install SpeechRecognition[cohere-api]
设置CO_API_KEY。
常见问题排查
识别器过于敏感或不够敏感
调整energy_threshold属性。值通常在50到4000之间。值越高,灵敏度越低,适用于嘈杂环境。
r.energy_threshold = 3000
识别器首次监听时卡住
在监听前调用adjust_for_ambient_noise以设置合适的阈值。
没有默认输入设备
列出可用麦克风:
import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
print(f"找到名为\"{name}\"的麦克风,可用于`Microphone(device_index={index})`")
然后使用Microphone(device_index=INDEX)。
语言/方言问题
设置语言参数以提高准确性。例如,使用"en-GB"表示英式英语:
text = r.recognize_google(audio, language="en-GB")
结论
SpeechRecognition是一个强大且灵活的库,它抽象了不同语音识别后端的复杂性。无论您需要离线功能以保护隐私,还是需要云端精度用于生产环境,它都提供了一致的API,使开发快速且易于维护。凭借对Whisper和Groq等最新模型的支持,它仍然是构建语音应用程序的Python开发者的首选。
更多示例和详细文档,请访问GitHub仓库。