Maus mit Ton bedienen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Hallo Leute.
Ich versuche meine Maus per Mikrophon zu bedienen.
Das Script, dass ich mir dazu geschrieben habe funktioniert allerdings anders als erwartet.
Ziel:
1. Bei hoher Lautstärke Maus drücken
2. Wenn Fall eins nicht mehr eintrifft Maus loslassen

Problem:
Fall zwei tritt sofort nach Fall eins ein.

Code: Alles auswählen

import sounddevice as sd
import numpy as np
import time
from pynput.mouse import Button, Controller

duration = 10
class MouseController:
    def __init__(self):
        self.active = False
        self.mouse = Controller()

    def check_event(self, input):
        if input == 1:
            if self.active == False:
                self.active = True
                self.mouse.press(Button.left)
                print("press")

        else:
            if self.active != False:
                self.active = False
                self.mouse.release(Button.left)
                print("release")

mouse_controller = MouseController()

def procces_sound(indata, outdata, frames, time, status):
    volume_norm = np.linalg.norm(indata) * 10
    if volume_norm >= 50:
        mouse_controller.check_event(1)

    else:
        mouse_controller.check_event(0)

time.sleep(5)
with sd.Stream(callback=procces_sound):
    sd.sleep(duration * 1000)
Könnt ihr mir vielleicht helfen?
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich weis nicht ob das zur Problemlösung beiträgt, aber in 'check_event' würde ich nicht den Namen 'input' verwenden. Dass ist an sich schon eine Python-Funktion, die die Eingabe eines Strings entgegen nimmt.

Nach True bzw bei dir '1' musst du nicht direkt abfragen

Code: Alles auswählen

if check:
ist das Gleiche wie

Code: Alles auswählen

if check == True:
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist zu komplex, um das einfach selbst aufzusetzen, und sieht soweit (vom Stil abgesehen) halbwegs ok aus. Also ist Debugging angesagt - was passiert wann wo? Hast du mal print-Statements eingebaut, welche dir Aufschluss geben darueber, was das Programm macht?
Antworten