隐私
本地优先:一条你能亲手验证的隐私边界

音频在本地转写,模型不会自动下载,唯一的网络端口默认只监听回环地址,说话人标签匿名且会话结束即丢弃——每一条都可以在源码中验证。
大多数语音转文字产品的起点是一个云端接口,隐私政策是后来补上去的。OpenASR 的做法正好反过来:音频在录制它的那台机器上完成转写,整个转写链路不需要任何托管推理服务。这不是一句需要你相信的承诺,而是一条写在源码里、可以逐行检查的边界。
“可审计的隐私”意味着每一条声明都要小到能被验证。以下是当前开放内核中经得起检查的几条,每条都附带了它的局限。
没有任何东西会自动下载
OpenASR 没有模型或运行时的自动下载机制。常规流程完全离线:CLI、API 和默认测试运行期间不会自动下载模型,注册表元数据也不会触发隐式的网络请求。模型只有唯一一种获取方式——用户主动执行 openasr pull,由它解析目录、下载选定的模型包、校验完整性并记录为已安装。之后的原生执行直接使用调用方指定的本地模型包。除非你明确要求,否则什么都不会访问网络。
唯一的网络端口:回环地址
整个系统唯一面向网络的接口是本地服务器,它默认只在回环地址上提供一个精简的 OpenAI 兼容转写子集:GET /health、GET /v1/models 和 POST /v1/audio/transcriptions。把现有客户端指向 127.0.0.1,音频就发送给你自己机器上的进程,而不是某个厂商的服务器。这是一个刻意收窄的子集,不是完整的托管 API;关于这个回环地址上的 OpenAI 兼容子集,有单独的文章详细介绍。
本地优先是一条写在源码里的边界,不是一个需要你凭信任接受的隐私承诺。
—— OpenASR 安全边界,docs/FAQ.md
开源,所以可审计
以上这些都不需要你只听 OpenASR 的一面之词。引擎以 Apache-2.0 许可证发布,作为公开的开放内核维护,上面描述的边界就存在于你可以阅读、fork 和测试的代码中。模型包不包含在这个许可证范围内——它们单独分发,各自遵循宽松的上游许可证(MIT 或 Apache-2.0),因此一个免费、开源许可的模型包就能端到端地驱动引擎,不会引入任何你无法审查的东西。关于目前有哪些模型包可以拉取、引擎本身如何发布,它们的当前版本是另一个话题。
说话人分离同样遵循这一原则
同样的设计原则也贯穿到正在引擎中落地的匿名纯 Rust 说话人分离模块。说话人标签是匿名的、仅在会话内有效——SPEAKER_00、SPEAKER_01——用于区分说话人的声纹嵌入在会话结束时即被丢弃。唯一的身份识别功能是可选的,默认关闭。在尚未发布的远程计算模式中,这个分界设计得更加清晰:服务端只负责执行计算并返回匿名标签,不接收也不存储注册的声纹,因为从匿名聚类到已知身份的映射被设计为始终留在客户端。
这是一个已经发布的、可选启用的功能,而不只是引擎底层能力——--diarize 通过 WeSpeaker 和 pyannote 能力包,为任何模型族的转写结果附加匿名说话人标签——隐私契约从一开始就内建其中,而非事后补丁。
以上这些声明没有一条是宏大的。音频留在录制它的地方,没有任何东西会自动下载,唯一开放的端口默认只监听回环地址,而这条边界本身是开源的,你可以端到端地审计。这正是关键所在:本地优先,小到可以验证,才真正值得信赖。