Sherpa-onnx 跑 Zipformer ONNX 推理3 步绕开 Required inputs missing【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx用 Sherpa-onnx 加载 Zipformer ONNX 模型做推理时很多人一调 session.Run 就撞上 Required inputs missing。Sherpa-onnx 是基于 ONNX 运行时的语音识别与关键词检测工具包支持离线语音识别、VAD、TTS 等任务。报错不是模型坏了是输入没给齐。三步走下面直接上手。30秒看懂Zipformer 是用于实时识别的流式语音编码器。输入参数多是因为流式模型按片段处理音频必须把上一段的中间状态存下来喂给下一次调用。好比读书做笔记不记下上一章要点下一章就读不下去。这些缓存参数就是你的笔记。上手三步走先把缓存置零。首次推理时所有缓存状态用零张量。维度与模型定义一致形状可从 ONNX 元数据里查。回传上一次输出的缓存。流式推理每轮喂入一段音频上一轮调用末尾输出的缓存就是这一轮的缓存输入。交换着传上下文就连上了。核对特征维度。输入 x 应为 [1, 时间帧, 特征维度]特征维度常见为 80。报 shape 错误时先查这里。模型输入参数速查参数作用初值/说明x音频特征输入[1, 时间帧, 特征维度]常为 80y上一步输出 token初值为 blank token 0cached_key注意力键缓存零张量每编码器层一组cached_val注意力值缓存零张量每编码器层一组cached_nonlin_attn非线性注意力状态零张量zipformer2 使用cached_conv1 / cached_conv2卷积模块状态零张量cached_len / cached_avg左侧上下文长度与均值零值容易踩的坑问只传 x 和 y 能跑通吗不行。编码器输入包含每层缓存缺一个就会报 missing input。完整输入列表在模型元数据里列着逐个补齐即可。问缓存什么时候重置为零每段新语音开始时。缓存是已听到内容的记忆同一段语音内必须回传上一次输出中途清零会让识别结果跳变。问缓存都传了仍报 shape 不匹配检查两点各缓存的批维度是否为 [1, 层数, ...]时间维度是否等于 left_context_len。再看 x 的特征维度是否和模型一致80 或其他值。延伸资料想自己写推理逻辑从这两处源码入手跑一遍流程就清楚了。C 流式 Zipformer 示例sherpa-onnx 核心源码目录【免费下载链接】sherpa-onnxSpeech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Support embedded systems, Android, iOS, HarmonyOS, Raspberry Pi, RISC-V, RK NPU, Axera NPU, Ascend NPU, x86_64 servers, websocket server/client, support 12 programming languages项目地址: https://gitcode.com/GitHub_Trending/sh/sherpa-onnx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考