「实时语音识别测试」,被识别成了「实实与因时别特势」。这是第一版代码跑通之后,中文测试给出的结果。
打开网易新闻 查看精彩图片
做这款工具的人原本只想解决一个日常痛点:开会、采访结束后整理录音,总要额外耗上一小时。在线转写要把音频传上云端,隐私不放心;现成的本地软件又收费不便宜。于是他自己动手,定下三个目标:完全本地运行、边录音边出文字、项目开源。
整个过程借助 AI 辅助落地。技术栈很快确定:浏览器采集音频,FastAPI 搭建 WebSocket 服务,后端用 faster-whisper 做本地语音识别,音频数据全程只在 127.0.0.1 内网流转,不上传任何外部服务器。
看到乱码结果的第一反应是模型能力不够,打算直接换更大的模型。但逐层拆解之后,定位到的是 4 个问题叠加:
- tiny 基础模型容量不足
- 提示词过长干扰模型选词
- 文本解码没有开启 beam search
- 推理速度慢造成音频队列堆积
最出乎意料的,是提示词带来的影响。原本写了一句看着很合理的提示词:「请使用简体中文输出并添加标点符号」,实测它会稳定把「实时」识别成「时时」。换成一句中性描述「这是一段普通话的录音。」之后,同一个模型,识别结果立刻恢复正常。
前后对比了 6 组提示词、3 种 beam 参数,最终 8.9 秒的两段录音全部识别准确。
下载模型也踩了坑。Python 下载器卡在 Hugging Face Xet 协议,进度一直停在 0。换镜像加 curl 直连的方式,几分钟就成功拉取 483MB 的 small 模型。
目前整套链路可以纯本地运行,不需要任何 API Key,代码已经推送到 GitHub 修复分支。
这次项目最深的感悟是:AI 写代码的速度很快,但它真正的价值在于辅助排查问题——把「模型不行」这种笼统模糊的猜想,拆解成一个个可以单独验证的原因。代码工具只是起点,学会把模糊的大问题拆清楚、问明白,才是整个项目里最有价值的部分。
热门跟贴