Estoy interesado en usar mi viejo MacBook como un monitor de audio para bebés. Mi flujo de trabajo imaginado es establecer un umbral de ruido para el micrófono interno en la MacBook cuando el bebé se mueve o gime y usar Mensajes para enviarme mensajes de texto a mí o a mi esposa cuando se alcanza el umbral.
Cuando miro en Preferencias del sistema, puedo ver Input level
que el micrófono está captando ruido, pero ¿cómo puedo obtener un número cuantificable en Terminal?
He visto en línea acerca osascript -e "get volume settings"
de cómo acceder a un valor numérico de la sensibilidad que debe configurarse el micrófono, pero no puedo encontrar una manera de acceder al volumen de una entrada en un momento dado.
¿Alguna idea por ahí?
Con las herramientas de la línea de comandos, puede hacer lo siguiente:
Instale portaudio, ffmpeg y todas las dependencias con brew
brew install portaudio
brew install ffmpeg
Instale pip descargando get-pip.py (enlace directo) y ejecutando
sudo python ~/Downloads/get-pip.py
Instalar sonómetro
sudo pip install soundmeter
Ejecutar sonómetro. Para obtener ayuda, use el modificador -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)
Simplemente ejecutar soundmeter
generará un valor RMS . Después de definir un umbral, puede desencadenar una acción de secuencia de comandos de shell (que a su vez puede desencadenar una secuencia de comandos AppleScript) con el modificador -e.
Entrando soundmeter --segment 0.1 --log
a ver TV online (cambio climático y cultivo de café en Colombia - el fin de los granos de Arábica) mostrará algo como:
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
Solo para confirmar: ese es el nivel de entrada del micrófono y no el nivel de sonido de la transmisión de TV porque la instalación anterior se ejecuta en un invitado de VM y la transmisión de TV en la Mac de alojamiento: probado pero no registrado con algunos aplausos que aumentarán el RMS a valores por encima de 200!
Para enviar un mensaje después de un evento desencadenante, haga lo siguiente: cambie <user_name>
a su nombre de usuario abreviado de OS X y <telephone_number>
al número de teléfono apropiado a continuación:
Crea un directorio y cámbialo:
mkdir ~/.soundmeter
cd ~/.soundmeter
Crear un AppleScript:
nano sendMessage.applescript
con el contenido:
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
Cree un script de shell:
nano sendMessage.sh
con el contenido:
#!/bin/bash
osascript /Users/<user_name>/.soundmeter/sendMessage.applescript <telephone_number> "Another Arabica bean died"
y cambiar los permisos:
chmod 755 sendMessage.sh
Ahora inicie soundmeter con un comando como este:
soundmeter -t +38 -a exec -e /Users/<user_name>/.soundmeter/sendMessage.sh
Esto debería enviar un mensaje a su número de teléfono (iPhone). Tenga en cuenta que no puede enviarse un iMessage a sí mismo. Enviarlo a un alias puede funcionar. Otros scripts similares (de Apple) están disponibles aquí: ¿Cómo enviar un mensaje de texto con applescript, solo en el servicio proporcionado?
martes
CephBirk