Проблема с простым скриптом, в котором у меня плохо работает библиотека Librosa PythonPython

Программы на Python
Ответить
Anonymous
 Проблема с простым скриптом, в котором у меня плохо работает библиотека Librosa Python

Сообщение Anonymous »

У меня возникла проблема со сценарием, о котором я подробно расскажу ниже;
Я намерен автоматизировать щелчок в тот момент, когда на моем компьютере звучит сигнал будильника.
Я использовал библиотеки Sounddevice, Librosa и PyAutoGui, в которые загружал аудиофайл, который воспроизводился на моем компьютере в определенное время; звук, который будет воспроизводиться на моем компьютере вне сценария, чтобы моя мышь делала 3 автоматических щелчка.
Проблема в том, что он неправильно определяет звуковой файл моего будильника давая его, и путает его с любым другим звуком или даже иногда автоматически щелкает в абсолютной тишине.
Я не могу заставить скрипт остановиться на нужном мне звуке (файл Я загрузил внутрь конкретный будильник длительностью 3 секунд)
Когда вы запускаете следующий сценарий, он печатает расстояния, на которых звуковой порог моего будильника будет отличаться от любого звука, издаваемого вашим компьютером.
Если программа интерпретирует, что существует расстояние между 0 и тем, что вы отметили в единице «ПОРОГ», программа остановится и сделает 3 щелчка по координате.
Я попробовал изменить число частоты дискретизации в следующей строке: 'y, sr= librosa.load(file, sr=44100)' или номер устройства 'THRESOLD', но звук по-прежнему не распознается правильно (случайно останавливается, иногда с другими звуками или даже тишиной)
Мое намерение: мой сценарий должен остановиться, когда на моем компьютере прозвучит сигнал тревоги, который я загрузил в устройство REFERENCE_AUDIO_FILE.
import sounddevice as sd
import numpy as np
import librosa
import time
import pyautogui
from scipy.spatial.distance import euclidean

# Configuration
REFERENCE_AUDIO_FILE = "CLEFAIRYPRO.mp3" # Path to the reference audio file
DURATION = 120 # Monitoring time in seconds
CLICK_INTERVAL = 0.1 # Interval between clicks
THRESHOLD = 40 # Similarity threshold for detection

# Load the reference audio file
def load_reference_audio(file):
print("Loading reference audio...")
y, sr = librosa.load(file, sr=44100)
mfcc = librosa.feature.mfcc(y=y, sr=sr)
return mfcc.mean(axis=1)

# Monitor audio in real-time
def monitor_audio(reference_features):
print("Monitoring audio...")

def callback(indata, frames, time, status):
y = indata[:, 0] # Use the first audio channel
mfcc = librosa.feature.mfcc(y=y, sr=44100)
current_features = mfcc.mean(axis=1)

# Calculate the distance between the current sound and the reference sound
distance = euclidean(reference_features, current_features)
print(f"Distance to reference sound: {distance}")

if distance < THRESHOLD: # If the distance is below the threshold
print("Sound detected! Performing three clicks.")
perform_clicks()
exit() # Stop the program after detection

with sd.InputStream(callback=callback):
time.sleep(DURATION)

# Perform three mouse clicks
def perform_clicks():
for _ in range(3):
pyautogui.click(-1519, 342) # Change (-1519, 342) to the desired coordinates
print("Click performed.")
time.sleep(CLICK_INTERVAL)

# Run the program
if __name__ == "__main__":
reference_features = load_reference_audio(REFERENCE_AUDIO_FILE)
monitor_audio(reference_features)



Подробнее здесь: https://stackoverflow.com/questions/793 ... not-work-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»