You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将RecordRTC录制的WebRTC音频传入Web Speech API转文本?求相关文章

能否将RecordRTC录制的音频轨道传入Web Speech API进行语音转文本?

完全可以!Web Speech API的语音识别接口(SpeechRecognition,Chromium内核浏览器中为webkitSpeechRecognition)支持处理录制好的音频内容——不管是RecordRTC导出的Blob还是转换后的MediaStream都能对接,而且这个API是免费的(基于浏览器内置的识别能力,部分场景支持离线使用)。

具体实现思路和代码示例

核心是把RecordRTC录制的音频Blob转换成Web Speech API能处理的格式,再喂给识别接口:

  1. 用RecordRTC录制兼容格式的音频
    优先选择WAV格式录制,因为Web Speech API对WAV的兼容性更稳定:
// 先获取麦克风的MediaStream
const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true });
// 初始化RecordRTC,指定录制为WAV音频
const recorder = RecordRTC(mediaStream, {
  type: 'audio',
  mimeType: 'audio/wav'
});
// 开始录制
recorder.startRecording();

// 录制完成后提取音频Blob
recorder.stopRecording(() => {
  const audioBlob = recorder.getBlob();
  // 调用处理函数,将Blob传给Web Speech API
  processAudioForRecognition(audioBlob);
});
  1. 将音频Blob转换为可识别流并传入API
    借助AudioContext把Blob转换成MediaStream,再交给识别接口处理:
function processAudioForRecognition(audioBlob) {
  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
  if (!SpeechRecognition) {
    alert('当前浏览器不支持Web Speech API,请使用Chrome/Edge等Chromium内核浏览器');
    return;
  }

  const recognition = new SpeechRecognition();
  recognition.lang = 'zh-CN'; // 设置识别语言,英文可设为'en-US'
  recognition.continuous = false; // 单次识别(需要连续识别可设为true)

  // 监听识别结果
  recognition.onresult = (event) => {
    const finalTranscript = event.results[0][0].transcript;
    console.log('识别出的文本:', finalTranscript);
    // 这里可以把结果展示到页面或做后续处理
  };

  recognition.onerror = (event) => {
    console.error('语音识别出错:', event.error);
  };

  // 将Blob转换为MediaStream
  const audioContext = new (window.AudioContext || window.webkitAudioContext)();
  const fileReader = new FileReader();
  fileReader.onload = (e) => {
    audioContext.decodeAudioData(e.target.result, (audioBuffer) => {
      const source = audioContext.createBufferSource();
      source.buffer = audioBuffer;
      const dest = audioContext.createMediaStreamDestination();
      source.connect(dest);
      // 将生成的MediaStream传给识别接口
      recognition.stream = dest.stream;
      recognition.start();
    });
  };
  fileReader.readAsArrayBuffer(audioBlob);
}

关键注意事项

  • 浏览器兼容性:目前只有Chromium内核浏览器(Chrome、Edge、Opera等)支持Web Speech API的SpeechRecognition接口,Firefox暂未实现该功能。
  • 离线支持:Chrome允许下载语言包实现离线识别,在浏览器设置中搜索“语音”即可找到语言包下载选项,无网络时也能完成识别。
  • 音频格式:尽量使用WAV格式录制,避免WebM等格式可能出现的兼容性问题。

参考资源

虽然专门针对RecordRTC+Web Speech API的教程不多,但可以通过以下方式获取相关内容:

  • 查看MDN上的Web Speech API官方文档,里面有详细的接口说明和基础示例。
  • 在Stack Overflow上搜索关键词RecordRTC Web Speech API speech recognition,能找到不少开发者分享的实战代码和问题解决方案。

内容的提问来源于stack exchange,提问作者AlenSv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:17:39