Tôi có thể truy cập cấp đầu vào micrô nội bộ qua Terminal không?


10

Tôi quan tâm đến việc sử dụng MacBook cũ của tôi như một màn hình bé âm thanh. Quy trình làm việc tưởng tượng của tôi là đặt ngưỡng tiếng ồn cho micrô bên trong MacBook khi em bé đang khuấy hoặc rên rỉ và sử dụng Tin nhắn để nhắn tin cho tôi hoặc vợ tôi khi đạt đến ngưỡng.

Khi tôi đang tìm kiếm trong Tùy chọn hệ thống, tôi có thể thấy Input levelmicrô đang phát ra tiếng ồn, nhưng làm cách nào tôi có thể nhận được số lượng có thể định lượng trong Terminal?

Tôi đã thấy trực tuyến về osascript -e "get volume settings"việc truy cập một giá trị số để biết mức độ nhạy của micrô, nhưng tôi không thể tìm thấy cách truy cập mức độ lớn của đầu vào vào bất cứ lúc nào.

Có ý tưởng nào ngoài đó không?


Là một kịch bản shell thực sự như thế nào bạn muốn đi về điều đó?
Timothy Mueller-Harder

Tôi sẵn sàng nhận các đề xuất khác ...
CephBirk

Câu trả lời:


14

Sử dụng các công cụ dòng lệnh bạn có thể làm như sau:

  • Cài đặt bia
  • Cập nhật và bác sĩ ủ
  • Cài đặt portaudio, ffmpeg và tất cả các phụ thuộc với brew

    brew install portaudio
    brew install ffmpeg
    
  • Cài đặt pip bằng cách tải xuống get-pip.py (liên kết trực tiếp) và thực thi

    sudo python ~/Downloads/get-pip.py
  • Cài đặt âm thanh

    sudo pip install soundmeter
  • Chạy âm kế. Để được trợ giúp, hãy sử dụng công tắc -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)
    

Chỉ cần chạy soundmetersẽ tạo ra một giá trị RMS . Sau khi xác định ngưỡng, bạn có thể kích hoạt hành động tập lệnh shell (có thể tự kích hoạt tập lệnh AppleScript) bằng công tắc -e.

Tham gia soundmeter --segment 0.1 --logxem truyền hình trực tuyến (biến đổi khí hậu và canh tác cà phê ở Colombia - sự kết thúc của hạt cà phê Arabica) sẽ cho thấy một cái gì đó như:

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

Chỉ cần xác nhận: đó là mức đầu vào micrô chứ không phải mức âm thanh của luồng TV vì cài đặt ở trên chạy trong máy khách VM và luồng TV trên máy chủ lưu trữ Mac - đã được thử nghiệm nhưng không được ghi lại bằng một số tiếng vỗ sẽ làm tăng RMS thành giá trị trên 200!


Để gửi tin nhắn sau khi có sự kiện kích hoạt, hãy làm như sau - đổi <user_name>tên người dùng ngắn OS X của bạn và <telephone_number>sang số điện thoại thích hợp bên dưới:

  • Tạo một thư mục và thay đổi nó:

    mkdir ~/.soundmeter
    cd ~/.soundmeter
    
  • Tạo một AppleScript:

    nano sendMessage.applescript

    với nội dung:

    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
    
  • Tạo một kịch bản shell:

    nano sendMessage.sh

    với nội dung:

    #!/bin/bash
    
    osascript /Users/<user_name>/.soundmeter/sendMessage.applescript <telephone_number> "Another Arabica bean died"
    

    và thay đổi quyền:

    chmod 755 sendMessage.sh
  • Bây giờ bắt đầu soundmeter với một lệnh như thế này:

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

    Điều này sẽ gửi một tin nhắn đến số điện thoại (iPhone) của bạn. Xin lưu ý rằng bạn không thể gửi iMessage cho chính mình. Gửi nó cho một bí danh có thể làm việc. Các tập lệnh tương tự (Apple) khác có sẵn ở đây: Làm thế nào để gửi một văn bản bắt chước bằng applescript, chỉ trong dịch vụ được cung cấp?


1
YÊU câu trả lời! Bạn đã làm rất tốt! :)
Monomeeth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.