Чи можу я отримати доступ до внутрішнього рівня входу мікрофона через термінал?


10

Мені цікаво використовувати свій старий MacBook як аудіомонітор для немовлят. Мій уявлений робочий процес полягає у встановленні порогу шуму для внутрішнього мікрофона в MacBook, коли дитина ворушиться чи скуголить, і використовувати Повідомлення для надсилання тексту мені чи дружині, коли досягнуто порогу.

Коли я дивлюся в «Системні налаштування», я можу побачити, як Input levelмікрофон сприймає шум, але як я можу отримати число, яке можна оцінити в Терміналі?

В Інтернеті я бачив, osascript -e "get volume settings"як отримати доступ до числового значення щодо того, наскільки чутливим повинен бути встановлений мікрофон, але я не можу знайти спосіб отримати доступ до того, як голосно вводиться вхід у будь-який момент.

Якісь ідеї там?


Чи справді сценарій оболонки вам потрібен?
Тимофі Мюллер-Хардер

Я відкритий для інших пропозицій ...
CephBirk

Відповіді:


14

За допомогою інструментів командного рядка ви можете зробити наступне:

  • Встановіть варити
  • Оновлення та заварювання лікаря
  • Встановіть 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, виведете значення RMS . Визначивши поріг, ви можете запустити дію сценарію оболонки (яка сама може викликати сценарій 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

Тільки для підтвердження: це рівень входу мікрофона, а не рівень звуку телевізійного потоку, оскільки вищевказана установка працює в гості VM і в телевізійному потоці на хостинг Mac - протестована, але не входить в систему з певним плесканням, що підвищить значення RMS до значень вище 200!


Щоб надіслати повідомлення після тривожної події, виконайте наступне - змініть <user_name>своє коротке ім’я користувача X 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): Як надіслати текст яблука з яблучним сценарієм лише за наданої послуги


1
ЛЮБИТЬ відповідь! Чудова робота! :)
Мономет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.