7,745
社区成员
发帖
与我相关
我的任务
分享在 Windows on Snapdragon 上开发本地语音助手,把 Whisper 模型部署到 NPU 时,音频切片和推理调度怎么设计更合理?
语音助手场景不能等整段录音结束再推理,通常采用“环形音频缓冲区 + 切片推理 + VAD 端点检测”的组合。设计思路是:持续采集 16kHz 音频,每次积累 200ms~1s 切片后送入特征提取;VAD 判断有人声时才启动 Whisper 推理;静音段只做缓冲,不频繁触发 NPU。
伪代码示例:
python
audio_buffer = RingBuffer(seconds=3)
def on_audio_chunk(pcm):
audio_buffer.write(pcm)
if vad.has_voice(audio_buffer.get()):
features = whisper_log_mel(audio_buffer.get())
result = npu_whisper.detect(features)
process_text_result(result)
关键点:第一,控制推理频率,不要每 20ms 就触发一次;第二,NPU 更适合中等长度音频单元,过短会带来调度开销;第三,长语音要做滑动窗口,避免单次张量过大;第四,识别结果需要加后处理,去除重复句和噪声文本。参考:GitHub - OpenNMT/CTranslate2: Fast inference engine for Transformer models