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

跨浏览器HTML5 JavaScript实现20ms单次方波嘀嗒音技术求助

嘿,这事儿用浏览器原生的Web Audio API就能搞定,完全不需要任何外部库,代码短得很,而且在Chrome、Firefox、Opera里都能正常运行!

核心思路就是直接用浏览器的音频上下文生成方波,精准控制播放时长。给你看最简洁的实现:

function play20msClick() {
  // 兼容不同浏览器的音频上下文
  const ctx = new (window.AudioContext || window.webkitAudioContext)();
  const oscillator = ctx.createOscillator();
  
  oscillator.type = 'square'; // 指定方波类型
  oscillator.frequency.setValueAtTime(800, ctx.currentTime); // 设置嘀嗒声频率,800Hz听起来很舒服
  
  // 连接到输出设备(扬声器)
  oscillator.connect(ctx.destination);
  
  // 启动播放,20毫秒后自动停止
  oscillator.start();
  oscillator.stop(ctx.currentTime + 0.02);
}

几个关键细节要注意:

  • 浏览器自动播放限制:现在主流浏览器都要求音频必须由用户交互触发(比如点击按钮),所以你得把这个函数绑定到用户操作上,比如:
    document.getElementById('clickButton').addEventListener('click', play20msClick);
    
  • 频率调整:如果觉得800Hz的声音不合适,直接改frequency.setValueAtTime里的数值就行,比如1000Hz会更尖锐一点。
  • 兼容性:webkitAudioContext是为了兼容旧版Chrome,现在大部分新浏览器已经支持标准的AudioContext了,但加上这个前缀能覆盖更多场景。

这个实现和你说的DOS时代操作硬件的思路本质是一样的——直接生成原始音频波形,只不过现在是通过浏览器提供的API来做,完全不需要依赖任何外部资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:31:02