Kann ich über das Terminal auf den internen Mikrofoneingangspegel zugreifen?

10

Ich bin daran interessiert, mein altes MacBook als Audio-Babyphone zu verwenden. Mein imaginärer Arbeitsablauf besteht darin, eine Geräuschschwelle für das interne Mikrofon im MacBook festzulegen, wenn sich das Baby rührt oder jammert, und Nachrichten zu verwenden, um mir oder meiner Frau eine SMS zu senden, wenn die Schwelle erreicht ist.

Wenn ich in den Systemeinstellungen nachschaue, kann ich sehen, Input leveldass das Mikrofon Rauschen aufnimmt. Wie kann ich jedoch eine quantifizierbare Zahl im Terminal erhalten?

Ich habe online gesehen, osascript -e "get volume settings"wie ich auf einen numerischen Wert für die Empfindlichkeit des Mikrofons zugreifen soll, aber ich kann nicht herausfinden, wie laut ein Eingang zu einem bestimmten Zeitpunkt eingeht.

Irgendwelche Ideen da draußen?

CephBirk
quelle
Ist ein Shell-Skript wirklich so, wie Sie das machen wollen?
Timothy Mueller-Harder
Ich bin offen für andere Vorschläge ...
CephBirk

Antworten:

14

Mit Befehlszeilentools können Sie Folgendes tun:

  • Gebräu installieren
  • Update und Doktor brauen
  • Installieren Sie portaudio, ffmpeg und alle Abhängigkeiten mit brown

    brew install portaudio
    brew install ffmpeg
  • Installieren Sie pip, indem Sie get-pip.py (direkter Link) herunterladen und ausführen

    sudo python ~/Downloads/get-pip.py
  • Soundmeter installieren

    sudo pip install soundmeter
  • Soundmeter laufen lassen. Um Hilfe zu erhalten, verwenden Sie den Schalter -h:

    soundmeter -h
    optional arguments:
      -h, --help            show this help message and exit
      -c, --collect         collect RMS values to determine thresholds
      -s SECONDS, --seconds SECONDS
                            time in seconds to run the meter (default forever)
      -a {stop,exec-stop,exec}, --action {stop,exec-stop,exec}
                            triggered action
      -t [+|-]THRESHOLD [NUM ...], --trigger [+|-]THRESHOLD [NUM ...]
                            trigger condition (threshold RMS and number of times)
      -e SCRIPT, --exec SCRIPT
                            shell script to execute upon trigger
      -d, --daemonize       run the meter in the background
      --log [LOGFILE]       log the meter (default to ~/.soundmeter/log)
      -v, --verbose         verbose mode
      --segment SECONDS     audio segment length recorded in seconds (defaults to
                            0.5)

Durch einfaches Ausführen soundmeterwird ein Effektivwert ausgegeben . Nachdem Sie einen Schwellenwert definiert haben, können Sie mit dem Schalter -e eine Shell-Skriptaktion auslösen (die selbst ein AppleScript-Skript auslösen kann).

Wenn soundmeter --segment 0.1 --logSie online fernsehen (Klimawandel und Kaffeeanbau in Kolumbien - das Ende der Arabica-Bohnen), sehen Sie Folgendes:

2017-01-25 18:16:02,289 24
2017-01-25 18:16:02,665 24
2017-01-25 18:16:03,037 31
2017-01-25 18:16:03,399 3
2017-01-25 18:16:03,769 15
2017-01-25 18:16:04,142 11
2017-01-25 18:16:04,524 9
2017-01-25 18:16:04,891 7
2017-01-25 18:16:05,257 7
2017-01-25 18:16:05,632 0
2017-01-25 18:16:06,001 7
2017-01-25 18:16:06,384 0
2017-01-25 18:16:06,745 2
2017-01-25 18:16:07,113 10
2017-01-25 18:16:07,491 14
2017-01-25 18:16:07,860 6
2017-01-25 18:16:08,223 0
2017-01-25 18:16:08,609 13
2017-01-25 18:16:08,973 16
2017-01-25 18:16:09,347 7
2017-01-25 18:16:09,720 26
2017-01-25 18:16:10,091 1
2017-01-25 18:16:10,464 38  an Arabica bean died here
2017-01-25 18:16:10,835 13
2017-01-25 18:16:11,204 Stopped

Nur zur Bestätigung: Dies ist der Mikrofoneingangspegel und nicht der Schallpegel des TV-Streams, da die obige Installation in einem VM-Gast und im TV-Stream auf dem Hosting-Mac ausgeführt wird - getestet, aber nicht mit einem gewissen Klatschen protokolliert, wodurch der Effektivwert auf Werte erhöht wird über 200!


Um eine Nachricht nach einem auslösenden Ereignis zu senden, gehen Sie wie folgt vor: Ändern Sie <user_name>Ihren OS X-Kurzbenutzernamen und <telephone_number>eine entsprechende Telefonnummer unten:

  • Erstellen Sie ein Verzeichnis und ändern Sie es:

    mkdir ~/.soundmeter
    cd ~/.soundmeter
  • Erstellen Sie ein AppleScript:

    nano sendMessage.applescript

    mit dem Inhalt:

    on run {targetBuddyPhone, targetMessage}
        tell application "Messages"
            set targetService to 1st service whose service type = iMessage
            set targetBuddy to buddy targetBuddyPhone of targetService
            send targetMessage to targetBuddy
        end tell
    end run
  • Erstellen Sie ein Shell-Skript:

    nano sendMessage.sh

    mit dem Inhalt:

    #!/bin/bash
    
    osascript /Users/<user_name>/.soundmeter/sendMessage.applescript <telephone_number> "Another Arabica bean died"

    und ändern Sie die Berechtigungen:

    chmod 755 sendMessage.sh
  • Starten Sie nun den Schallmesser mit einem Befehl wie dem folgenden:

    soundmeter -t +38 -a exec -e /Users/<user_name>/.soundmeter/sendMessage.sh

    Dies sollte eine Nachricht an Ihre (iPhone) Telefonnummer senden. Bitte beachten Sie, dass Sie keine iMessage an sich selbst senden können. Das Senden an einen Alias ​​funktioniert möglicherweise. Andere ähnliche (Apple) Skripte sind hier verfügbar: Wie sende ich einen Nachrichtentext mit Applescript, nur im bereitgestellten Dienst?

Klanomath
quelle
1
LIEBE die Antwort! Gut gemacht! :)
Monomeeth