Dahili mikrofon giriş seviyesine Terminal üzerinden erişebilir miyim?


10

Eski MacBook'umu bir ses bebek monitörü olarak kullanmakla ilgileniyorum. Hayal ettiğim iş akışı, bebek karışırken veya sızlanırken MacBook'taki dahili mikrofon için bir gürültü eşiği ayarlamak ve eşiğe ulaşıldığında bana veya eşime mesaj göndermek için Mesajlar kullanmaktır.

Sistem Tercihleri'ne baktığımda Input level, mikrofonun gürültüyü aldığını görebiliyorum, ancak Terminal'de nasıl ölçülebilir bir numara alabilirim?

osascript -e "get volume settings"Mikrofonun ne kadar hassas ayarlanması gerektiğine dair sayısal bir değere erişmek üzere çevrimiçi gördüm , ancak herhangi bir zamanda bir girişin ne kadar yüksek sesle geldiğine erişmenin bir yolunu bulamıyorum.

Orada fikir var mı?


Bir kabuk betiği gerçekten bu konuda ne yapmak istiyorsunuz?
Timothy Mueller-Harder

Diğer önerilere açığım ...
CephBirk

Yanıtlar:


14

Komut satırı araçlarını kullanarak aşağıdakileri yapabilirsiniz:

  • Demlemek yükleyin
  • Güncelleme ve doktor demleme
  • Portaudio, ffmpeg ve tüm bağımlılıkları demleme ile kurun

    brew install portaudio
    brew install ffmpeg
    
  • Get-pip.py (doğrudan bağlantı) dosyasını indirerek ve yürüterek pip kurun

    sudo python ~/Downloads/get-pip.py
  • Soundmeter'ı kurun

    sudo pip install soundmeter
  • Soundmeter'ı çalıştırın. Yardım almak için -h anahtarını kullanın:

    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)
    

Basitçe çalıştırmak soundmeterbir RMS değeri verir . Bir eşik tanımladıktan sonra -e anahtarıyla bir kabuk komut dosyası eylemini (kendisi bir AppleScript komut dosyasını tetikleyebilir) tetikleyebilirsiniz.

soundmeter --segment 0.1 --logÇevrimiçi TV izlemeye (Kolombiya'da iklim değişikliği ve kahve yetiştiriciliği - Arabica fasulyesinin sonu) girmek şöyle bir şey gösterecektir:

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

Sadece onaylamak için: bu, TV kurulumunun ses seviyesi değil, mikrofon giriş seviyesi değil, yukarıdaki kurulum bir VM misafirinde ve barındırma Mac'indeki TV akışında çalışır - test edildi, ancak RMS'yi değerlere artıracak bazı alkışlarla kaydedilmedi 200'ün üstünde!


Bir tetikleyici olaydan sonra mesaj göndermek için aşağıdakileri yapın - <user_name>OS X kısa kullanıcı adınızı ve <telephone_number>aşağıdaki uygun bir telefon numarasını değiştirin:

  • Bir dizin oluşturun ve değiştirin.

    mkdir ~/.soundmeter
    cd ~/.soundmeter
    
  • AppleScript oluşturun:

    nano sendMessage.applescript

    içeriği ile:

    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
    
  • Kabuk betiği oluşturma:

    nano sendMessage.sh

    içeriği ile:

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

    ve izinleri değiştirin:

    chmod 755 sendMessage.sh
  • Şimdi sesölçeri şöyle bir komutla başlatın:

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

    Bu, (iPhone) telefon numaranıza bir mesaj göndermelidir. Lütfen kendinize bir iMessage gönderemeyeceğinizi unutmayın. Bir takma adı göndermek işe yarayabilir. Diğer benzer (Apple) komut dosyaları burada mevcuttur: Sadece sağlanan hizmette el yazısı ile bir mesaj metni nasıl gönderilir?


1
Cevabı SEVİYORUM! İyi iş! :)
Monomeeth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.