工作原理
这个网站上的每个工具,都是一个普通网页加一个在浏览器里运行的开源神经网络。本页讲清楚三件事:打开工具之后发生了什么,在真实硬件上有多快,以及你怎么自己确认文件没被上传。
打开一个工具之后
- 加载页面。纯静态的 HTML、CSS、JavaScript,没有服务端代码,也不用登录。
- 下载模型,只下一次。页面从
models.swordfishsoft.org拉取模型权重(ONNX 文件,按工具不同约 5 MB 到 600 MB)。进度条显示的是实际收到的字节数。浏览器会把文件存进自己的 Cache Storage。 - 选择运行方式。浏览器支持 WebGPU、且这个工具在 WebGPU 上验证过时,模型跑在显卡上;否则通过 WebAssembly 单线程跑在 CPU 上。工具界面会显示当前用的是哪一种。
- 在本地读取文件。你拖进来的图片、录音或文档,由浏览器直接从磁盘读进页面内存。模型在后台线程(Web Worker)里运行,所以页面不会卡住。
- 在页面里生成结果。你下载的 PNG、音频或文字都是在浏览器里生成,作为本地下载保存的,不经过任何服务器。
再次打开时,模型直接从浏览器缓存读取,不走网络,工具通常一到三秒就能用。
自己验证
不必只听我们说。在 Chrome、Edge 或 Firefox 里:
- 打开一个工具,等模型加载完。
- 打开开发者工具(F12,Mac 上按 ⌥ ⌘ I),切到 Network(网络)标签页,点清空按钮把列表清掉。
- 处理一个文件。
- 看列表:没有任何请求带着你的文件,请求体里没有你的数据,也没有体积接近你那个文件的发送。
更彻底的办法:模型加载完之后关掉 Wi-Fi 或拔掉网线,在同一个标签页里再处理一个文件。照样能用,因为处理过程根本不需要网络。
WebGPU 与 WebAssembly:实测速度
每个工具上线前都要过同一套测试:在自动化 Chrome 里用它的内置样例分别跑 WebGPU 和 WebAssembly(CPU)两条路径,既看耗时,也检查输出对不对。下表是这些测试的处理耗时,机器是 Apple M2 Max,模型已加载完。CPU 一栏是 2026-09-25 按下文的改动重测的,是单线程数字:
| 工具 | 样例输入 | WebGPU | CPU(WASM) | 下载体积 |
|---|---|---|---|---|
| 语音转文字 | 30 秒播客片段 | 2.0 秒 | 12.9 秒 | 291 / 206 MB |
| 文字转语音 | 207 个字符 → 13 秒语音 | 1.3 秒 | 19.2 秒 | 326 / 305 MB |
| 图片去背景 | 1024 × 683 照片 | 1.2 秒 | 5.3 秒 | 98 / 192 MB |
| 照片去物体 | 1024 × 683 照片 | 0.34 秒 | 11.2 秒 | 107 / 62 MB |
| 深度图 | 1280 × 855 照片 | 0.28 秒 | 5.5 秒 | 99 / 27 MB |
| 图片 4 倍放大 | 512 × 384 → 2048 × 1536 | 1.0 秒 | 11.8 秒 | 5 MB |
| 图片去模糊 | 1024 × 768 照片 | 2.0 秒 | 39.3 秒 | 275 MB |
| 人声分离 | 20 秒歌曲 | 2.1 秒 | 74.2 秒 | 67 MB |
| 图片文字识别 | 小票,20 行 | 0.42 秒 | 3.0 秒 | 17 MB |
| 文本脱敏 | 209 词客服邮件 | 0.32 秒 | 2.8 秒 | 596 MB |
| 老照片上色 | 923 × 737 照片 | — | 5.8 秒 | 135 MB |
| 证件照制作 | 960 × 1150 人像 → 600 × 600 | 0.19 秒 | 1.5 秒 | 26 / 13 MB |
| 图片转描述 / 提示词 | 1024 × 635 照片 → 三段文字 | 6.8 秒 | 14.1 秒 | 194 / 251 MB |
| AI 音乐检测 | 3 分钟歌曲(MP3) | — | 0.48 秒 | 15 KB |
下载体积写了两个数的,表示 WebGPU 和 CPU 两条路径用的是不同版本的模型:适合显卡的精度未必最适合 CPU,所以每条路径各用我们实测效果更好的那一版。慢一些的笔记本会比表里的数字慢,手机更慢。首页标了「建议桌面端」的工具,模型太大,手机上不一定跑得动。
为什么上色没有 WebGPU 那一栏
有些模型在一种引擎上正常,换一种就不行。我们用的上色模型在当前浏览器的 WebGPU 上启动不了,所以它被声明为只走 CPU,从不尝试显卡。我们还遇到过在 WebGPU 上一声不响地输出纯黑图、完全不报错的模型。这就是为什么每个工具都要检查输出,而不只是测速度;也是为什么有些工具会在运行中自己检查输出,发现不对就换更稳妥的设置重试。
为什么慢在第一次加载
处理本身只要几秒,页面上最大的下载是模型。家用网络下 100 MB 的模型要几秒到半分钟。之后就被缓存了,所以每个浏览器只等这一次。想回收磁盘空间,在浏览器设置里清除 swordfishsoft.org 的网站数据,缓存的模型就会被删掉。
为什么 CPU 路径只用一个线程
WebAssembly 要把计算分到多个 CPU 核心上,页面必须处于「跨源隔离」状态,网站靠两个 HTTP 头(Cross-Origin-Opener-Policy 和 Cross-Origin-Embedder-Policy)开启它。但这两个头同时会挡住页面里嵌入的其他网站的框架,其中就包括广告框架,而广告是这些工具能保持免费的来源。我们选择了广告:从 2026 年 9 月 25 日起,页面不再发送这两个头。WebGPU 路径不受影响;CPU 路径改为单线程,在我们的测试机上比原来慢了大约三倍,上表已经是新的数字。
哪些东西确实会离开你的浏览器
为了说全,确实会发生的网络请求有这些:
- 请求页面本身和模型文件。托管服务商 Cloudflare 会像所有网站服务器一样记录访问日志。
- Cloudflare Web Analytics 的页面浏览统计,不写 Cookie。
- 广告开启之后,广告网络为展示广告发出的请求,见隐私政策。
这些请求里都没有你的文件、你在工具里输入的文字,也没有处理结果。