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

如何为计时项目添加响铃功能?实现倒计时结束时5秒高频提示音

实现计时结束的5秒高频提示音方法

前端 JavaScript 实现

直接用Web Audio API生成高频正弦波,无需依赖外部音频文件:

function playHighBeep() {
  const audioContext = new (window.AudioContext || window.webkitAudioContext)();
  const oscillator = audioContext.createOscillator();
  const gainNode = audioContext.createGain();

  oscillator.connect(gainNode);
  gainNode.connect(audioContext.destination);

  oscillator.frequency.value = 800; // 设置800Hz高频
  oscillator.type = 'sine'; // 正弦波音质更柔和清晰
  gainNode.gain.setValueAtTime(0.3, audioContext.currentTime); // 控制音量避免刺耳

  oscillator.start();
  oscillator.stop(audioContext.currentTime + 5); // 5秒后自动停止
}

// 计时结束时调用该函数即可
// playHighBeep();

注意:浏览器安全限制要求,AudioContext必须在用户交互(如点击、触摸)后初始化,所以要确保调用时机在用户操作触发的逻辑内。

Python 实现

跨平台方案(依赖simpleaudio库)

先安装依赖:pip install simpleaudio

import numpy as np
import simpleaudio as sa

def play_high_beep():
    sample_rate = 44100
    duration = 5
    frequency = 800

    # 生成5秒的正弦波音频数据
    t = np.linspace(0, duration, int(sample_rate * duration), False)
    audio = np.sin(frequency * t * 2 * np.pi)
    # 转换为16位整数格式
    audio = (audio * 32767 * 0.3).astype(np.int16)

    # 播放音频
    play_obj = sa.play_buffer(audio, 1, 2, sample_rate)
    play_obj.wait_done()

# 计时结束调用
# play_high_beep()

Windows原生方案(无需第三方库)

import winsound

def play_high_beep():
    # 800Hz频率,持续5000毫秒
    winsound.Beep(800, 5000)

# play_high_beep()

Java 实现

用Java Sound API生成并播放音频:

import javax.sound.sampled.*;

public class BeepPlayer {
    public static void playHighBeep() throws LineUnavailableException {
        int sampleRate = 44100;
        int duration = 5;
        double frequency = 800;

        // 生成音频字节数据
        byte[] audioData = new byte[sampleRate * duration * 2];
        for (int i = 0; i < audioData.length; i += 2) {
            double time = i / (double) (sampleRate * 2);
            short sample = (short) (Math.sin(2 * Math.PI * frequency * time) * 32767 * 0.3);
            audioData[i] = (byte) (sample & 0xFF);
            audioData[i + 1] = (byte) ((sample >> 8) & 0xFF);
        }

        // 配置音频格式并播放
        AudioFormat format = new AudioFormat(sampleRate, 16, 1, true, false);
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);

        clip.open(format, audioData, 0, audioData.length);
        clip.start();
        try {
            Thread.sleep(duration * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        clip.close();
    }

    public static void main(String[] args) {
        try {
            playHighBeep();
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:43:28