터미널을 통해 내부 마이크 입력 레벨에 액세스 할 수 있습니까?


10

오래된 MacBook을 오디오 베이비 모니터로 사용하고 싶습니다. 아기가 울거나 stirring을 때 MacBook의 내장 마이크에 대한 잡음 임계 값을 설정하고 임계 값에 도달하면 메시지를 사용하여 나와 아내에게 문자 메시지를 보내는 것이 상상됩니다.

시스템 환경 설정 Input level에서 마이크가 잡음을 포착하는 것을 볼 수 있지만 터미널에서 수량화 가능한 숫자를 어떻게 얻을 수 있습니까?

온라인 osascript -e "get volume settings"에서 마이크를 얼마나 민감하게 설정해야하는지에 대한 숫자 값에 액세스하는 것을 보았지만 주어진 시간에 입력이 얼마나 크게 들어오는 지 액세스 할 수있는 방법을 찾을 수 없습니다.

어떤 아이디어가 있습니까?


쉘 스크립트가 실제로 어떻게 가고 싶습니까?
Timothy Mueller-Harder

나는 다른 제안에 열려 있습니다 ...
CephBirk

답변:


14

명령 행 도구를 사용하여 다음을 수행 할 수 있습니다.

  • 추출 설치
  • 업데이트 및 의사 양조
  • 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

확인 : 그것은 위의 설치가 VM 게스트에서 실행되고 호스팅 Mac의 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.