Я заинтересован в использовании моего старого MacBook в качестве аудионяни. Мой воображаемый рабочий процесс состоит в том, чтобы установить порог шума для внутреннего микрофона в MacBook, когда ребенок шевелится или скулит, и использовать сообщения, чтобы отправлять текстовые сообщения мне или моей жене, когда порог достигнут.
Когда я смотрю в Системных настройках, я вижу, Input level
что микрофон улавливает шум, но как я могу получить количественное число в Терминале?
Я видел в Интернете osascript -e "get volume settings"
, как получить доступ к числовому значению того, насколько чувствительным должен быть установлен микрофон, но я не могу найти способ получить доступ к тому, насколько громкий вход поступает в любой момент времени.
Есть идеи?
Используя инструменты командной строки, вы можете сделать следующее:
Установите portaudio, ffmpeg и все зависимости с помощью brew
brew install portaudio
brew install ffmpeg
Установите pip, загрузив get-pip.py (прямая ссылка) и выполнив
sudo python ~/Downloads/get-pip.py
Установить шумомер
sudo pip install soundmeter
Запустите шумомер. Чтобы получить помощь, используйте ключ -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)
Простое выполнение soundmeter
выведет среднеквадратичное значение . После определения порога вы можете запустить действие сценария оболочки (которое может само вызвать сценарий AppleScript) с помощью переключателя -e.
Заходя soundmeter --segment 0.1 --log
на просмотр онлайн ТВ (изменение климата и выращивание кофе в Колумбии - конец арабики) покажет что-то вроде:
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
Просто для подтверждения: это уровень входного сигнала микрофона, а не уровень звука ТВ-потока, потому что описанная выше установка выполняется в гостевой виртуальной машине, а ТВ-поток на хостинге Mac — протестирован, но не зарегистрирован с некоторыми хлопками, которые увеличат RMS до значений выше 200!
Чтобы отправить сообщение после инициирующего события, выполните следующие действия: измените <user_name>
свое имя пользователя OS X на короткое и <telephone_number>
соответствующий номер телефона ниже:
Создайте каталог и перейдите в него:
mkdir ~/.soundmeter
cd ~/.soundmeter
Создайте AppleScript:
nano sendMessage.applescript
с содержанием:
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
Создайте сценарий оболочки:
nano sendMessage.sh
с содержанием:
#!/bin/bash
osascript /Users/<user_name>/.soundmeter/sendMessage.applescript <telephone_number> "Another Arabica bean died"
и измените разрешения:
chmod 755 sendMessage.sh
Теперь запустите саундметр с помощью такой команды:
soundmeter -t +38 -a exec -e /Users/<user_name>/.soundmeter/sendMessage.sh
Это должно отправить сообщение на ваш номер телефона (iPhone). Обратите внимание, что вы не можете отправить iMessage самому себе. Отправка на псевдоним может сработать. Другие подобные (Apple) скрипты доступны здесь: Как отправить текст imessage с помощью applescript, только в предоставленном сервисе?
Вторник
CephBirk