Seite 1 von 1

Maus mit Ton bedienen

Verfasst: Sonntag 7. März 2021, 14:50
von Fire Spike
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?

Re: Maus mit Ton bedienen

Verfasst: Sonntag 7. März 2021, 16:13
von Dennis89
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

Re: Maus mit Ton bedienen

Verfasst: Sonntag 7. März 2021, 17:44
von __deets__
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?