无需服务器!5分钟实现浏览器端实时语音转文字:基于transformers.js的Whisper模型实战
你还在为语音识别需要昂贵的云服务而烦恼吗?还在担心用户语音数据传输的隐私安全问题吗?本文将带你零成本实现浏览器本地运行的实时语音转文字功能,无需后端服务器,所有处理都在用户设备上完成。读完本文,你将掌握如何使用transformers.js和Whisper模型构建一个安全、高效的语音识别应用。
技术原理概述
transformers.js是一个专为Web平台优化的机器学习库,它允许开发者在浏览器中直接运行预训练模型。而Whisper是由OpenAI开发的通用语音识别模型,能够将多种语言的语音准确地转换为文本。
通过结合这两项技术,我们可以实现完全在客户端运行的语音识别功能。下面是这个方案的核心优势:
| 传统云服务方案 | transformers.js方案 |
|---|---|
| 需要后端服务器支持 | 纯浏览器本地运行 |
| 存在数据隐私泄露风险 | 语音数据永不离开用户设备 |
| 受网络延迟影响 | 无网络也能正常工作 |
| 按调用次数收费 | 完全免费 |
实现步骤
1. 准备工作
首先,我们需要从项目仓库获取示例代码:
git clone https://gitcode.com/GitHub_Trending/tr/transformers.js
cd transformers.js/examples/webgpu-whisper
npm install
这个示例项目已经包含了所有必要的配置和依赖,相关代码可以在examples/webgpu-whisper/目录中找到。
2. 核心实现原理
下面是实时语音识别的工作流程图:
sequenceDiagram
participant 用户
participant 浏览器
participant Web Audio API
participant Whisper模型
participant 结果显示
用户->>浏览器: 授权麦克风访问
浏览器->>Web Audio API: 获取音频流
Web Audio API->>Web Audio API: 音频处理与采样
Web Audio API->>Whisper模型: 音频数据
Whisper模型->>Whisper模型: 语音识别处理
Whisper模型->>结果显示: 识别文本
结果显示->>用户: 实时展示文字
3. 关键代码解析
3.1 初始化Worker
为了避免UI阻塞,我们使用Web Worker在后台线程中处理模型加载和语音识别任务:
// [examples/webgpu-whisper/src/App.jsx](https://gitcode.com/GitHub_Trending/tr/transformers.js/blob/1538e3a1544a93ef323e41c4e3baef6332f4e557/examples/webgpu-whisper/src/App.jsx?utm_source=gitcode_repo_files#L37-L45)
useEffect(() => {
if (!worker.current) {
// 创建Worker
worker.current = new Worker(new URL('./worker.js', import.meta.url), {
type: 'module'
});
}
// ...
}, []);
3.2 加载Whisper模型
当用户点击"Load model"按钮时,我们会向Worker发送加载模型的请求:
// [examples/webgpu-whisper/src/App.jsx](https://gitcode.com/GitHub_Trending/tr/transformers.js/blob/1538e3a1544a93ef323e41c4e3baef6332f4e557/examples/webgpu-whisper/src/App.jsx?utm_source=gitcode_repo_files#L211-L214)
<button
onClick={() => {
worker.current.postMessage({ type: 'load' });
setStatus('loading');
}}
>
Load model
</button>
3.3 获取麦克风权限并录音
获取用户麦克风权限,并使用MediaRecorder API录制音频:
// [examples/webgpu-whisper/src/App.jsx](https://gitcode.com/GitHub_Trending/tr/transformers.js/blob/1538e3a1544a93ef323e41c4e3baef6332f4e557/examples/webgpu-whisper/src/App.jsx?utm_source=gitcode_repo_files#L120-L127)
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
setStream(stream);
recorderRef.current = new MediaRecorder(stream);
audioContextRef.current = new AudioContext({ sampleRate: WHISPER_SAMPLING_RATE });
// ...
})
3.4 音频处理与识别
将录制的音频数据发送给Worker进行识别:
// [examples/webgpu-whisper/src/App.jsx](https://gitcode.com/GitHub_Trending/tr/transformers.js/blob/1538e3a1544a93ef323e41c4e3baef6332f4e557/examples/webgpu-whisper/src/App.jsx?utm_source=gitcode_repo_files#L171-L180)
fileReader.onloadend = async () => {
const arrayBuffer = fileReader.result;
const decoded = await audioContextRef.current.decodeAudioData(arrayBuffer);
let audio = decoded.getChannelData(0);
if (audio.length > MAX_SAMPLES) {
audio = audio.slice(-MAX_SAMPLES);
}
worker.current.postMessage({ type: 'generate', data: { audio, language } });
}
4. 运行应用
启动开发服务器:
npm run dev
打开浏览器访问http://localhost:5173,你将看到如下界面:
- 点击"Load model"按钮加载Whisper模型
- 授权麦克风访问
- 开始说话,实时看到语音转文字的结果
性能优化建议
-
模型选择:根据需求选择不同大小的Whisper模型,如base、small、medium或large。较小的模型加载更快,但识别准确率可能较低。
-
WebGPU加速:确保浏览器支持WebGPU以获得最佳性能。相关实现可参考src/backends/webgpu/目录下的代码。
-
音频预处理:适当调整音频采样率和时长,平衡识别效果和性能。
总结
通过transformers.js和Whisper模型,我们可以在浏览器中实现高效、安全的实时语音转文字功能。这个方案不仅保护了用户隐私,还消除了服务器成本和网络延迟问题。
你可以进一步扩展这个示例,比如添加多语言支持、实时翻译功能,或者集成到你的现有Web应用中。完整的代码示例可以在examples/webgpu-whisper/目录中找到。
现在就尝试构建你自己的浏览器端语音识别应用吧!如有任何问题,可以查阅官方文档docs/source/index.md或参考项目中的其他示例。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00