找回密码
 立即注册
查看: 246|回复: 3

建议增加声音无声监测的条件,满足此条件执行其他命令

[复制链接]

2

主题

2

回帖

85

积分

注册会员

积分
85
发表于 2025-2-17 10:00:43 | 显示全部楼层 |阅读模式
建议增加声音无声监测的条件,满足此条件执行其他命令。有时候视频课件挂课,当课件中途停止时,也就是无声了,需要人为点击确定才能继续听课,增加声音监测机制,可以很好的挂课

回复

使用道具 举报

64

主题

600

回帖

3635

积分

超级版主

积分
3635
发表于 2025-2-17 12:37:52 | 显示全部楼层
可灵活使用计划分类里的执行程序或者脚本

给你个示例,用ahk,只需要几行代码
从工具栏点击导入,或者直接拖放到主界面导入

系统静音检测.ztt

15.31 KB, 下载次数: 6

回复

使用道具 举报

2

主题

2

回帖

85

积分

注册会员

积分
85
 楼主| 发表于 2025-2-19 08:47:07 | 显示全部楼层
作者君 发表于 2025-2-17 12:37
可灵活使用计划分类里的执行程序或者脚本

给你个示例,用ahk,只需要几行代码

谢谢,我去学习
回复

使用道具 举报

2

主题

2

回帖

85

积分

注册会员

积分
85
 楼主| 发表于 2025-2-21 22:15:07 | 显示全部楼层
import pyaudio
import numpy as np
import pyautogui
import time

# 音频参数设置
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
SILENCE_THRESHOLD = 100  # 静音阈值(根据环境调整)
SILENCE_DURATION = 5     # 持续静音时间(秒)
CLICK_POSITION = (1630, 560)  # 点击坐标

def get_rms(data):
    """计算音频信号的RMS值"""
    audio_data = np.frombuffer(data, dtype=np.int16)
    return np.sqrt(np.mean(audio_data**2))

p = pyaudio.PyAudio()

# 打开音频输入流
stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

try:
    silent_count = 0
    while True:
        data = stream.read(CHUNK)
        rms = get_rms(data)

        if rms < SILENCE_THRESHOLD:
            silent_count += 1
            if silent_count > (SILENCE_DURATION * RATE / CHUNK):
                # 触发鼠标点击
                pyautogui.click(*CLICK_POSITION)
                print("检测到静音,已执行点击操作")
                silent_count = 0
        else:
            silent_count = 0

        time.sleep(0.1)  # 检测间隔

except KeyboardInterrupt:
    print("停止监测")
finally:
    stream.stop_stream()
    stream.close()
    p.terminate()

评分

参与人数 1金钱 +50 贡献 +1 收起 理由
作者君 + 50 + 1 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|zTasker

GMT+8, 2025-6-7 17:24 , Processed in 0.057433 second(s), 24 queries .

快速回复 返回顶部 返回列表