ฉันสามารถเข้าถึงระดับอินพุตไมโครโฟนภายในผ่านเทอร์มินัลได้หรือไม่


10

ฉันสนใจที่จะใช้ MacBook เครื่องเก่าของฉันเป็นเครื่องเฝ้าดูเด็ก เวิร์กโฟลว์ที่จินตนาการไว้ของฉันคือการตั้งค่าระดับเสียงสำหรับไมโครโฟนภายในใน MacBook เมื่อทารกกำลังกวนหรือส่งเสียงครวญครางและใช้ข้อความเป็นข้อความฉันหรือภรรยาของฉันเมื่อถึงเกณฑ์

เมื่อฉันกำลังดูการตั้งค่าระบบฉันจะเห็นว่าInput levelไมโครโฟนกำลังรับเสียง แต่ฉันจะรับหมายเลขที่นับได้ใน Terminal ได้อย่างไร

ฉันได้เห็นทางออนไลน์เกี่ยวกับosascript -e "get volume settings"การเข้าถึงค่าตัวเลขสำหรับวิธีการตั้งค่าไมโครโฟนที่ละเอียดอ่อน แต่ฉันไม่สามารถหาวิธีที่จะเข้าถึงการป้อนข้อมูลเสียงดังในเวลาใดก็ตาม

มีความคิดเห็นอะไรบ้าง?


เชลล์สคริปเป็นวิธีที่คุณต้องการทำอย่างนั้นจริง ๆ หรือไม่?
Timothy Mueller-Harder

ฉันเปิดรับข้อเสนอแนะอื่น ๆ ...
CephBirk

คำตอบ:


14

การใช้เครื่องมือบรรทัดคำสั่งคุณสามารถทำสิ่งต่อไปนี้:

  • ติดตั้งชง
  • ปรับปรุงและชงหมอ
  • ติดตั้ง portaudio, ffmpeg และการอ้างอิงทั้งหมดด้วย Brew

    brew install portaudio
    brew install ffmpeg
    
  • ติดตั้ง pip ด้วยการดาวน์โหลดget-pip.py (ลิงค์โดยตรง) และดำเนินการ

    sudo python ~/Downloads/get-pip.py
  • ติดตั้งSoundmeter

    sudo pip install soundmeter
  • เรียกใช้ 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>เป็นชื่อผู้ใช้แบบย่อของ OS X และ<telephone_number>เป็นหมายเลขโทรศัพท์ที่เหมาะสมด้านล่าง:

  • สร้าง dir และเปลี่ยนเป็น:

    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 ด้วยคำสั่งดังนี้:

    soundmeter -t +38 -a exec -e /Users/<user_name>/.soundmeter/sendMessage.sh

    สิ่งนี้ควรส่งข้อความไปยังหมายเลขโทรศัพท์ (iPhone) ของคุณ โปรดทราบว่าคุณไม่สามารถส่ง iMessage ให้คุณได้ การส่งไปที่ชื่อแทนอาจใช้งานได้ สคริปต์อื่นที่คล้ายคลึงกัน (Apple) มีให้ที่นี่: วิธีส่งข้อความ imessage ด้วย applescript เฉพาะในบริการที่มีให้เท่านั้น


1
รักคำตอบ! เยี่ยมมาก! :)
Monomeeth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.