Whisper 在线不上传:浏览器跑 Whisper 完全指南
OpenAI 的 Whisper 是目前最主流的开源语音识别模型,但它"在线用 = 上传到 OpenAI 服务器"几乎是所有人的默认印象。事实是:你可以"在线"使用 Whisper,同时"不上传"任何音频。本文把这个套路讲清楚。
"在线"和"上传"是两件事
大家把这两件事混为一谈了:
- 在线:你访问的是一个网页 / 在线服务。
- 上传:你的音频数据被发到服务器处理。
这两个完全可以解耦。一个网页可以"在线提供",但它的处理逻辑全跑在你浏览器内——这就是浏览器端 AI 的核心思路。Talk2Text 走的就是这条路。
原理:浏览器怎么跑 Whisper?
三个关键拼图:
1. transformers.js
Hugging Face 出品的 JavaScript 库,把 Python 版 transformers 的能力搬到浏览器。支持 Whisper 等多种模型。
2. WebGPU / WASM
WebGPU 让浏览器直接调用 GPU 做矩阵运算,性能接近原生。不支持 WebGPU 的浏览器退化到 WASM(慢但能用)。
3. SharedArrayBuffer + COOP/COEP
Whisper 推理需要多线程共享内存,浏览器要求页面设置特定的跨域隔离头才能开启 SharedArrayBuffer。这就是为什么 Talk2Text 的服务器会返回 Cross-Origin-Opener-Policy: same-origin 和 Cross-Origin-Embedder-Policy: credentialless。
这三件齐全后,流程是这样的:
- 用户访问页面 → 浏览器从 CDN 下载 Whisper 模型权重(首次几十到几百 MB)。
- 模型缓存到 IndexedDB,下次访问无需重新下载。
- 用户加载音频 → 浏览器解码 → 喂给模型。
- 模型在浏览器进程内推理 → 输出文本和时间戳。
- 文本可选导出为 SRT / VTT / TXT。
整个推理过程不发出任何携带音频数据的网络请求。这就是"Whisper 在线不上传"的技术底。
能跑哪些 Whisper 模型?
| 模型 | 大小 | 适合 | 性能(M2 笔记本) |
|---|---|---|---|
| tiny | ~40MB | 速记、长音频初稿 | 10x 实时 |
| base | ~140MB | 日常转写 | 5x 实时 |
| small | ~460MB | 精度与速度平衡 | 2x 实时 |
| medium | ~1.5GB | 需要较高精度 | 0.7x 实时 |
| large | ~3GB | 最高精度 | 0.3x 实时 |
对绝大多数普通话清晰录音场景,base 到 small 是甜点区。
性能参考
以 1 小时清晰中文录音、small 模型为例:
- Apple M2 / M3:3-5 分钟
- Intel i7 + RTX 3060:4-6 分钟
- Intel i7 集显:10-15 分钟
- 中端安卓手机:20-30 分钟
第一次启动有模型加载时间(取决于网速),之后从缓存加载只需几秒。
实操:用 Talk2Text 跑一遍
- 用 Chrome / Edge / Safari(较新版本)打开 Talk2Text 首页。
- 第一次会下载模型并缓存,请耐心等待。
- 拖入或选择音频文件(支持 MP3、WAV、OGG、FLAC、M4A、WEBM)。
- 选择语言(中文 / 英文 / 中英混合等),点开始。
- 进度条显示推理进度。
- 完成 → 在编辑器里校对 → 导出 SRT / VTT / TXT。
想验证"真的没上传"?打开浏览器 F12 → Network 面板 → 加载音频开始转写 → 你会看到转写阶段没有任何携带音频字节的请求。
适合谁、不适合谁
适合
- 不想装 Python、CUDA、ffmpeg 等环境的非技术用户。
- 需要跨设备一致体验(公司电脑、家里 Mac、手机)。
- 处理敏感录音,要求"不出域"。
- 想快速验证"这段录音转写效果如何"。
不适合
- 需要批量处理几百上千条音频——浏览器不是为批处理设计的。
- 追求极致性能——原生 Whisper.cpp / faster-whisper 更快。
- 需要实时转录(边说边出)——目前 Talk2Text 定位文件转录。
- 需要说话人分离(diarization)——路线图功能。
常见疑问 FAQ
浏览器跑 Whisper 准确率和云端 API 比怎么样?
模型一样的话,准确率理论上等价。差距主要来自模型大小——浏览器通常跑 small/medium,云端跑 large-v3。small 在普通话清晰录音上已经接近 large 的 90% 水准。
WebGPU 浏览器支持怎样?
Chrome 113+、Edge 113+ 默认支持;Safari 17+ 逐步支持;Firefox 较慢。不支持时退化到 WASM,速度慢但仍可用。
第一次加载模型那么大,手机流量吃不消?
建议第一次在 WiFi 环境下加载,之后模型缓存在浏览器,断网也能用。
我能自己部署一个 Talk2Text 吗?
核心是 transformers.js + WebGPU + 正确的 COOP/COEP 头。可以参考 Hugging Face 的 transformers.js 示例自己搭。如果你只想要"能用",直接用我们部署好的即可。
模型会自动更新吗?
模型版本由部署方控制,通常会在 Whisper 有显著升级时(如 large-v4 发布)更新缓存策略。
用 Talk2Text 算不算"用了 OpenAI"?
Whisper 是 OpenAI 开源的模型权重,但你用 Talk2Text 时不调用 OpenAI 任何 API,不产生 OpenAI 计费,也不发送任何数据给 OpenAI。
结论
"Whisper 在线不上传"不是噱头,是 2024 年后浏览器 AI 能力到位后的真实选项。它把"使用门槛"压到接近零(打开网页就用),同时把"隐私边界"守得很死(音频不出设备)。
如果你是开发者,可以基于 transformers.js 自建;如果你是普通用户,直接用 Talk2Text 就行。