使用DeepSpeech进行语音转写时如何调用GPU实现加速
解决DeepSpeech转写未调用GPU的问题
前置检查
- 先确认Colab运行时已切换GPU硬件加速:路径为「代码执行程序」→「更改运行时类型」→ 硬件加速器选择「GPU」,保存后重启运行时
- 确认仅安装了和模型版本匹配的GPU包:执行
!pip uninstall -y deepspeech && pip install deepspeech-gpu==0.9.3,避免CPU版本冲突 - 执行
!nvidia-smi确认系统可以正常识别GPU设备,DeepSpeech 0.9.3适配CUDA 10.1、cuDNN 7.6版本,环境不匹配会自动回退到CPU运行
代码修改说明
原代码一次性加载全量20分钟音频进行推理,不仅内存占用高,也无法充分利用GPU并行能力,改为流式推理可大幅提升效率,同时确保GPU被正常调用,修改后代码如下:
import wave import deepspeech import numpy as np # 模型路径和参数配置 model_file_path = 'deepspeech-0.9.3-models.pbmm' scorer_file_path = 'deepspeech-0.9.3-models.scorer' # 可选,提升识别准确率,需要提前下载对应版本scorer文件 model = deepspeech.Model(model_file_path) model.enableExternalScorer(scorer_file_path) # 不需要scorer可注释该行 # 音频流式读取配置 filename = 'podcast.wav' w = wave.open(filename, 'r') rate = w.getframerate() # 确认音频采样率为16kHz,单声道,16位深,不符合的话需要提前转格式 assert rate == 16000, "音频需为16kHz采样率" assert w.getnchannels() == 1, "音频需为单声道" assert w.getsampwidth() == 2, "音频需为16位深" # 初始化流式上下文 stream_ctx = model.createStream() # 每次读取3200帧(200ms)音频送入推理 chunk_size = 3200 while True: buffer = w.readframes(chunk_size) if not buffer: break data16 = np.frombuffer(buffer, dtype=np.int16) stream_ctx.feedAudioContent(data16) # 获取最终转写结果 text = stream_ctx.finishStream()
验证GPU调用
运行代码的同时,在Colab的终端执行nvidia-smi,可以看到deepspeech进程占用GPU显存,即说明GPU已正常启用。20分钟的16kHz单声道音频,在Colab T4 GPU上转写耗时通常不会超过1分钟。
内容的提问来源于stack exchange,提问作者mmz
相关产品推荐
相关产品推荐

