浏览器里的 LLM 推理:jax-js 驱动 Whisper 语音识别与语音克隆全解析
【免费下载链接】jax-jsJAX in JavaScript – ML library for the web, running on WebGPU & Wasm项目地址: https://gitcode.com/gh_mirrors/ja/jax-js
想在浏览器里直接跑大模型?jax-js 是一个纯 JavaScript 编写的浏览器机器学习框架,兼容 JAX/NumPy API,能把数组运算编译为 WebAssembly 与 WebGPU 内核,让你在 Web 端完成LLM 推理、Whisper 语音识别与语音克隆——全程本地运行,音频不出浏览器,隐私有保障。
为什么是浏览器端推理?
传统方案要把音频上传到服务器,而 jax-js 把整个推理链路搬进了前端:
- 🚀三种后端:WebGPU(GPU 加速)、WebGL、Wasm(CPU),自动探测设备能力,代码见 src/backend/webgpu.ts 与 src/backend/wasm.ts
- 📦体积小:gzip 后仅约 80 KB,零外部依赖
- 🔒隐私安全:录音、权重、推理全部在客户端完成
浏览器兼容性一览:
| 平台 | CPU(Wasm) | GPU(WebGPU) |
|---|---|---|
| Chrome / Edge | ✅ | ✅ |
| Firefox | ✅ | ✅(macOS 26+) |
| Safari / iOS | ✅ | ✅(iOS 26+) |
| Android Chrome | ✅ | ✅ |
Whisper 语音识别:音频到文字的完整链路
演示代码位于website/src/routes/whisper/目录,共四步:
- 音频解码与重采样:用 Web Audio API 解码录音,统一为 16 kHz 单声道(features.ts)
- 特征提取:手写 STFT + Mel 滤波器,把波形转换为 80 维 log-mel 谱(30 秒窗口,3000 帧)
- 编码器 + 解码器:完整实现了 Whisper 的 Transformer 结构,支持
tiny.en→medium全部 8 种规格,权重以 fp16 safetensors 加载(model.ts 中定义了各档 dModel 与层数) - 带时间戳的解码:贪心采样 + 时间戳门控,输出带起止时间的分段文本(decoding.ts)
几个工程亮点值得学习:
- KV Cache 加速:解码器逐 token 自回归,Key/Value 张量只增量更新,避免重复计算
- jit 内核融合:编码器、交叉注意力 KV、单步解码各编译一次并缓存(model.ts)
- 性能可视化:页面实时展示模型加载、prefill、逐 token 解码的耗时
语音克隆:Kyutai Pocket TTS 的浏览器实现
TTS 演示(website/src/routes/tts/)运行 Kyutai 开源的Pocket TTS模型,架构由两部分组成:
- FlowLM:自回归 Transformer,预测音频潜变量(latent),配合流匹配解码(LSD)生成高质量波形(pocket-tts.ts)
- Mimi 神经声码器:把潜变量还原为音频帧,每步输出 1920 个采样点
边生成边播放是关键体验优化:inference.ts 中的推理循环每生成一帧音频就立即推入播放器,页面还会实时统计帧率和实时率(RTF)。
🎙️ 如何克隆一个声音
页面内置 8 个预置声线(alba、cosette、jean 等),每个声线只是一份audio_prompt潜变量文件(+page.svelte)。克隆新声音的原理相同:把参考音频编码为语音潜变量,与文本嵌入拼接后作为条件输入——这就是"零样本语音克隆"的核心,整个流程见 inference.ts。
文本分词由浏览器内的 SentencePiece tokenizer 完成,权重解析则复用 packages/loaders/src/safetensors.ts 中的 safetensors 读取器,支持 OPFS 本地缓存,二次访问近乎秒开。
快速上手:3 步在浏览器中部署
- 引入框架:
npm i @jax-js/jax,或直接在 HTML 中用 ES Module 引入 CDN 版本 - 复制
website/src/routes/whisper/或website/src/routes/tts/目录,作为你的语音应用起点 - 按你的需求替换模型权重 URL,页面会自动在 WebGPU / Wasm 后端间切换
总结
jax-js 证明了"浏览器即推理终端"的可行性:Whisper 语音识别做到了带时间戳的准实时转录,语音克隆做到了流式生成、边说边听,而这一切都发生在用户设备本地。对隐私敏感场景(会议记录、语音助手、无障碍产品)来说,这是一条值得关注的技术路线。核心功能与浏览器支持矩阵详见 FEATURES.md。
【免费下载链接】jax-jsJAX in JavaScript – ML library for the web, running on WebGPU & Wasm项目地址: https://gitcode.com/gh_mirrors/ja/jax-js
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考