如何在Windows系统中基于Vosk实现实时音频转文字(STT)?
Windows下基于Vosk的Python实时音频获取方案
1. 先搞定依赖安装
- 基础依赖:执行
pip install vosk安装Vosk核心库 - 音频输入依赖PyAudio:直接用
pip install pyaudio可能会失败,建议用Windows专用的pipwin安装:pip install pipwin pipwin install pyaudio
2. 准备Vosk模型
下载对应语言的Vosk预训练模型(比如中文通用模型),解压到本地任意路径,记住该路径后续要用到。
3. 实时音频识别代码示例
以下是可直接运行的实时麦克风音频获取+识别代码,适配Windows环境:
import vosk import pyaudio import json # 初始化Vosk模型,替换为你的模型解压路径 model_path = "D:/models/vosk-model-small-cn-0.22" model = vosk.Model(model_path) # 初始化音频输入流 p = pyaudio.PyAudio() stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8192) stream.start_stream() # 实时识别循环 print("开始说话,按Ctrl+C停止") try: while True: data = stream.read(4096) if len(data) == 0: break result = model.SpeechRecognizer().AcceptWaveform(data) if result: # 解析并输出识别结果 text = json.loads(result)["text"] if text: print(f"识别结果:{text}") except KeyboardInterrupt: print("\n停止识别") finally: stream.stop_stream() stream.close() p.terminate()
关键注意事项
- 采样率匹配:代码中的
rate=16000要与你下载的模型采样率一致,大部分Vosk模型默认是16kHz,若模型为其他采样率需对应修改。 - 音频设备选择:如果有多个麦克风,可在
p.open()中添加device_index=N参数(N为设备编号,可通过p.get_device_count()和p.get_device_info_by_index(N)查看设备信息)。 - 模型路径:确保使用绝对路径,避免相对路径导致的模型加载失败。
常见问题解决
- PyAudio安装报错:用pipwin安装基本能解决Windows下的编译问题;若仍失败,可下载对应Python版本的PyAudio .whl文件,通过
pip install 文件名.whl安装。 - 模型加载失败:检查路径是否正确,确认模型文件夹解压完整(需包含model.json等核心文件)。
内容的提问来源于stack exchange,提问作者kenikF
相关产品推荐
相关产品推荐

