// 創建音頻上下文
var audioCtx = new AudioContext();
// 創建音調控制對象
var oscillator = audioCtx.createOscillator();
// 創建音量控制對象
var gainNode = audioCtx.createGain();
// 音調音量關聯
oscillator.connect(gainNode);
// 音量和設備關聯
gainNode.connect(audioCtx.destination);
// 音調類型指定為正弦波
oscillator.type = 'sine';
// 設置音調頻率
oscillator.frequency.value = 196.00;
// 先把當前音量設為0
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
// 0.01秒時間內音量從剛剛的0變成1,線性變化
gainNode.gain.linearRampToValueAtTime(1, audioCtx.currentTime + 0.01);
// 聲音走起
oscillator.start(audioCtx.currentTime);
// 1秒時間內音量從剛剛的1變成0.001,指數變化
gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 1);
// 1秒后停止聲音
oscillator.stop(audioCtx.currentTime + 1);
來源:http://www.zhangxinxu.com/wordpress/2017/06/html5-web-audio-api-js-ux-voice/