You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python结合speech recognition与DeepSpeech开发离线语音助手

Python结合SpeechRecognition + DeepSpeech实现离线语音识别开发步骤

1. 前置依赖安装

首先安装需要的Python库:

  • 音频采集依赖:pyaudio 用于麦克风音频流读取
  • 语音识别封装库:SpeechRecognition 简化音频采集逻辑
  • DeepSpeech推理库:deepspeech 离线语音识别推理
  • 数组处理依赖:numpy 处理音频格式转换
    安装命令:
pip install pyaudio SpeechRecognition deepspeech numpy

注:如果pyaudio安装失败,Linux系统可先执行sudo apt install portaudio19-dev,Mac系统执行brew install portaudio后再重试安装

2. 本地模型准备

提前下载DeepSpeech官方预训练模型文件到本地,需要两个文件:

  • 模型结构文件:后缀为.pbmm
  • 语言评分文件:后缀为.scorer
    将两个文件放到项目根目录的deepspeech_model文件夹下备用。

3. 单次识别实现代码

import speech_recognition as sr
import numpy as np
from deepspeech import Model

# 配置参数
MODEL_PATH = "./deepspeech_model/output_graph.pbmm"
SCORER_PATH = "./deepspeech_model/kenlm.scorer"
# 音频参数:DeepSpeech要求16kHz采样率,单声道
SAMPLE_RATE = 16000

# 初始化DeepSpeech模型
ds_model = Model(MODEL_PATH)
ds_model.enableExternalScorer(SCORER_PATH)

# 初始化麦克风采集器
r = sr.Recognizer()
mic = sr.Microphone(sample_rate=SAMPLE_RATE)

print("请开始说话,说完暂停自动识别:")
with mic as source:
    # 自动校准环境噪音
    r.adjust_for_ambient_noise(source)
    # 采集音频,停顿1秒自动停止采集
    audio = r.listen(source)

# 将SpeechRecognition采集的音频转为DeepSpeech需要的numpy数组
audio_data = np.frombuffer(audio.get_raw_data(), dtype=np.int16)

# 执行离线识别
text = ds_model.stt(audio_data)
print(f"识别结果:{text}")

4. 连续流识别优化(适配语音助手场景)

如果需要实时连续识别而不是单次采集,直接使用DeepSpeech的流处理接口即可,修改采集逻辑如下:

  • 用pyaudio直接开音频流,每次读取1024帧音频块
  • 调用ds_model.createStream()创建推理流
  • 循环将音频块喂入feedAudioContent方法
  • 间隔固定时间调用intermediateDecode()获取实时识别结果
  • 检测到用户停止说话后调用finishStream()获取最终结果

常见问题排查

  • 识别准确率低:可以替换对应语种的自定义scorer文件,或者调整噪音校准的时长
  • 采集延迟高:可以调小单次读取的音频块大小,降低流识别的返回间隔
  • 模型加载失败:检查模型文件版本是否和安装的deepspeech库版本匹配

内容的提问来源于stack exchange,提问作者Echu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:06:01