OpenASR 博客
把本地语音识别
做得更简单
0.1.x 十天走完:十四个版本搭起来的地基
十天,十四个版本。0.1.x 系列是一次地基工程——砍掉一半驻留内存,上线 26 个模型包,覆盖十一个平台目标,把空闲卸载从「功能存在」推到「全链路可用」。这篇文章记录它究竟建了什么。

OpenASR Desktop 正式支持 Windows
同一套本地优先的语音识别能力,现在可以在 Windows 上使用了。同样的开源内核,同样的隐私边界,同样的 26 个模型。首次启动会遇到 SmartScreen 提示,这里一并说清楚。

OpenASR 0.1.0:第一个公开版本
OpenASR 0.1.0 正式发布——本地语音转文字,音频不离开你的电脑。这篇文章聊聊它现在能做什么,还缺什么,以及代码在哪里。

纯 Rust 推理落地:一套轻依赖的后融合说话人分离方案
VAD 与说话人分离作为后融合旁路阶段围绕 ASR 核心运行,仅通过时间区间通信——项目首批纯 Rust 前向推理,逐一验证与 ONNX 参考模型的数值吻合度。

你没编译过的模型,凭什么信?
.oasr 模型包靠内容哈希锁定,目录清单靠 Ed25519 签名,任何一步异常即拒绝——这就是 OpenASR 的 fail-closed 拉取链。

Serve 模式批量解码:GPU 专属的吞吐量杠杆,单流路径逐字节不变
通过 OPENASR_SERVE_BATCH 环境变量开启批量解码,在单张 GPU 上用 moonshine-tiny 实测 N=8 时达到 4.28 倍吞吐提升,而 N=1 路径与现有解码循环逐字节一致。

把 KV cache 搬上显卡:一次从传输瓶颈到计算瓶颈的转变
一次 decode profile 揭示瓶颈在 host-GPU 间的 KV 往返而非计算本身。KV cache 常驻显存后,每 token 的 KV/IO 从 80.6 降到 1.1 ms/token——数据来自单块 AMD GPU 和单个模型。

和 whisper.cpp 比一次:一台机器,一条音频,一个诚实的数字
同一台 macos/aarch64 主机,同一个 whisper-large-v3-turbo q8_0 模型,best-of-N 取最优——OpenASR 跑出 2370 ms 对 whisper.cpp 的 2573 ms,领先约 7.9%。这个数字不是宣传语,而是一道回归门禁。

拆解 .oasr 格式:一个文件装下权重、分词器和元数据
一个 .oasr 文件就是一个完整的模型运行时包——权重、分词器、描述符全在里面,拷贝和校验都只需处理一个对象。

本地优先:一条你能亲手验证的隐私边界
音频在本地转写,模型不会自动下载,唯一的网络端口默认只监听回环地址,说话人标签匿名且会话结束即丢弃——每一条都可以在源码中验证。

换个地址就能用:在本地跑通 OpenAI 转录接口
三个端点、六种返回格式、默认离线——openasr serve 在 localhost 上回答你的客户端已经在发的那些请求,只是诚实地告诉你:这是子集,不是全量。

量化到底换掉了什么:体积、速度,和质量的长尾
fp16、q8_0、q4_k,外加 Qwen 的 q3_k——在同一段音频上,哪些压缩几乎免费,哪些体积优势换不来速度,为什么 moonshine-tiny 的 11.76% WER 该怪模型而不是量化。