OKE Free Download
282.76MB · 2025-09-16
设想一个场景:
可以浓缩成三句口诀:
采集 → 转写 → 生成 → 展示
麦克风 -> PCM音频流 -> 实时转写 -> 文本 -> AIGC生成 -> 返回网页
当人声从喉咙震动飘出,经过空气摩擦掉一半魂魄,剩下的交给浏览器通过 [MediaStream API] 来采集。
// 获取浏览器麦克风流
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
// AudioContext 处理更底层的 PCM
const audioCtx = new AudioContext();
const source = audioCtx.createMediaStreamSource(stream);
在这里,数据其实就是一串浮点数序列(amplitude),就像波浪 ——此时只是人类耳朵能理解的物理现象被转化为数字。
浏览器端的音频数据需要传送到后台做语音识别。此时两种常用方式:
const ws = new WebSocket('wss://your-asr-server');
ws.binaryType = 'arraybuffer';
// 持续推送音频数据到后端
processor.onaudioprocess = (event) => {
const input = event.inputBuffer.getChannelData(0);
ws.send(float32ToInt16(input));
};
注意点:ASR 模型习惯吃的是 16bit PCM,所以要从 float32 转成 Int16。
到了后台,语音数据进入 ASR 引擎。
核心步骤:
常见方案:
说的直白点:机器耳朵听的是噪音里的山水画,ASR 要做的就是 把乱麻理成一条丝线。
当得到了用户说的话,接下来丢给 AIGC 模型(大模型)处理。
比如:
const response = await aiClient.chatCompletion({
messages: [{ role: 'user', content: transcribedText }],
});
displayOnPage(response.content);
此处 AIGC 不仅仅能生成文本,还能:
前端负责把结果放出来,可以增添一些交互体验:
const utterance = new SpeechSynthesisUtterance(response.content);
speechSynthesis.speak(utterance);
延迟控制
噪声处理
跨浏览器兼容
把实时语音转写与 AIGC 融合,Web 端不再只是“动动手指”,而能直接“开口说话”。
这就像是给网页装了耳朵和嘴巴:
未来的应用场景:
于是——舞台灯光亮起,观众就能和机器展开 真正的对话。
282.76MB · 2025-09-16
284.48MB · 2025-09-16
286.89MB · 2025-09-16