前端如何播放二进制音频数据

音频数据

播放数据

javascript 复制代码
const tryListen = async (row) => {
    awakenPlay(row.sid).then((res) => {   // 请求接口,拿到二进制音频数据
      const binaryData = atob(res.data);
      // 将二进制数据转换为 Uint8Array
      const byteArray = new Uint8Array(binaryData.length);
      for (let i = 0; i < binaryData.length; i++) {
        byteArray[i] = binaryData.charCodeAt(i);
      }
      const offset = 42; // 跳过可能的头部数据(假设前 42 字节是 WAV 头部),否则播放开始处有杂音
      // 将 Uint8Array 转换为 Int16Array
      const pcmData = new Int16Array(byteArray.buffer, offset);
      // 创建 AudioContext
      const audioContext = new window.AudioContext();
      // 创建 AudioBuffer
      const audioBuffer = audioContext.createBuffer(1, pcmData.length, 16000); // 单声道,16000 Hz
      const channelData = audioBuffer.getChannelData(0);
      // 将 PCM 数据归一化到 [-1, 1] 范围
      for (let i = 0; i < pcmData.length; i++) {
        channelData[i] = pcmData[i] / 32768.0;
      }

      // 播放音频
      const source = audioContext.createBufferSource();
      source.buffer = audioBuffer;
      source.connect(audioContext.destination);
      source.start();
    });
  };
相关推荐
九年义务漏网鲨鱼4 分钟前
【Agentic RL 专题】五、深入浅出Reasoning and Acting (ReAct)
前端·react.js·大模型·智能体
Moment1 小时前
专为 LLM 设计的数据格式 TOON,可节省 60% Token
前端·javascript·后端
G***66912 小时前
前端性能优化插件,CSS与JavaScript压缩插件实战指南
前端·javascript·css
ACP广源盛139246256732 小时前
GSV2201S(1201S)@ACP#支持嵌入式 MCU 的 DisplayPort 1.4 到 HDMI 2.0 转换器
单片机·嵌入式硬件·电脑·音视频
鹏多多2 小时前
React的useRef的深度解析与应用指南
前端·javascript·react.js
chilavert3182 小时前
技术演进中的开发沉思-194 JavaScript: Prototype 框架
开发语言·javascript·原型模式
你说啥名字好呢3 小时前
【Vue 渲染流程揭秘】
前端·javascript·vue.js·vue3·源码分析
艾小码3 小时前
Vue表单组件进阶:打造属于你的自定义v-model
前端·javascript·vue.js
绝无仅有3 小时前
某电商大厂技术面试场景解析
javascript·后端·面试
t***L2664 小时前
终于搞定了!Vue项目打包后白屏问题
前端·javascript·vue.js