У меня возникла проблема со сценарием, о котором я подробно расскажу ниже;
Я намерен автоматизировать щелчок в тот момент, когда на моем компьютере звучит сигнал будильника.
Я использовал библиотеки 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
Проблема с простым скриптом, в котором у меня плохо работает библиотека Librosa Python ⇐ Python
Программы на Python
1735955609
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79328088/problem-with-a-simple-script-in-which-the-librosa-python-library-does-not-work-w[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия