ターミナルから内部マイク入力レベルにアクセスできますか?


10

古いMacBookをオーディオベビーモニターとして使用することに興味があります。私の想像するワークフローは、赤ちゃんがかき回しているときや泣き言を言うときにMacBookの内部マイクにノイズしきい値を設定し、しきい値に達したときにメッセージを使用して私または妻にテキストを送信することです。

システム環境設定を見るInput levelと、マイクのがノイズを拾っているのがわかりますが、ターミナルで定量化可能な数値を取得するにはどうすればよいですか?

osascript -e "get volume settings"マイクを設定する感度の数値にアクセスしようとしているのをオンラインで見たことがありますが、入力の音量の大きさに常にアクセスする方法が見つかりません。

何かアイデアはありますか?


シェルスクリプトは本当にあなたがそれをやりたいのですか?
Timothy Mueller-Harder 2017年

私は他の提案を
受け入れてい

回答:


14

コマンドラインツールを使用すると、次のことができます。

  • brewをインストールする
  • アップデートとドクターブリュー
  • brewでportaudio、ffmpegおよびすべての依存関係をインストールします

    brew install portaudio
    brew install ffmpeg
  • get-pip.py(直接リンク)をダウンロードして実行して、pipをインストールします。

    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値が出力されます。しきい値を定義した後、-eスイッチを使用してシェルスクリプトアクション(それ自体がAppleScriptスクリプトをトリガーする場合があります)をトリガーできます。

入力するとsoundmeter --segment 0.1 --log見ているオンラインTV(コロンビア農業気候変動とコーヒー-アラビカ豆の終わりには)のようなものが表示されます:

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のVMゲストとTVストリームで実行されるため、これはマイク入力レベルであり、TVストリームのサウンドレベルではありません。 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)スクリプトはこちらから入手できます:Applescriptを使用してimessageテキストを送信する方法は、提供されたサービスでのみ?


1
答えが大好きです!よくやった!:)
Monomeeth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.