Mengapa applescript ini tidak benar-benar mengatur volume input ke nol?
5
Saya memiliki perintah ini yang membuat skrip untuk membisukan volume input. Volume input tidak sepenuhnya dibisukan. Tampaknya lebih dekat ke 10% dari 0%.
osacompile -x -e 'tell application "System Events" to set volume input volume 0'-o ~/bin/mute_mic.scpt
Ini aneh, karena bilah geser sejauh mungkin, tetapi seperti yang Anda lihat dari gambar terlampir, suara masih mendaftar. Namun, jika saya menggunakan mouse untuk mengklik slider di nol, maka itu benar-benar mematikan input.
Mengapa ini terjadi? Apakah saya menggunakan applescript dengan tidak benar di sini?
Saya bahkan dapat meniru ini dengan Editor AppleScript dasar, jadi saya tahu itu bukan masalah dengan kompilasi.
Sejauh yang saya tahu, skrip berfungsi seperti yang diharapkan, masalahnya ada pada kode input audio OS X. Ketika saya menjalankannya, bilah geser masuk ke 0%, diverifikasi dengan mousing di atas bilah geser hingga ujung alat muncul:
Ini sama seperti jika saya menyeret slider volume secara manual.
Masalahnya adalah tampaknya bahwa "0%" tidak benar-benar berarti off , melainkan ambang batas yang sangat rendah. Dalam beberapa pengujian cepat, saya dapat merekam suara ketukan jari saya pada casing MacBook Pro di dekat mic (pada sebagian besar mesin saya percaya ini ada di sekitar panggangan speaker kanan) ketika volume disetel ke 0 . Saya bisa meniru itu terlepas dari apakah saya mengatur slider secara manual atau melalui AppleScript. Tampaknya memang cukup rendah sehingga hampir semua suara lainnya tidak diangkat, tetapi jelas mikrofonnya tidak benar-benar mati.
Sejauh yang saya tahu, tidak ada cara untuk menonaktifkan mikrofon bawaan dengan benar. Yang terbaik yang bisa saya sarankan adalah mengubah input audio untuk menggunakan jalur masuk, jika Mac Anda dilengkapi dengan saluran jalur masuk . Sayangnya, melakukannya melalui AppleScript membutuhkan beberapa skrip GUI, tetapi ini harus dilakukan ( sumber ):
tell application "System Preferences"
activateset current pane to pane id "com.apple.preference.sound"end tell
tell application "System Events"
tell process "System Preferences"set frontmost to true--get properties of UI element of tab group of window "Sound"
click radio button "input" of tab group of window "Sound"
tell row 2 of table 1 of scroll area 1 of tab group1 of window "Sound" to set selected to trueend tellend tell
Jika Anda memiliki lebih dari dua input audio standar (Mic dan Line In), Anda mungkin perlu mengubah nomor row 2ke mana yang sesuai, sesuai dengan urutan dalam preferensi Input Anda.
Anda akan melihat dari tangkapan layar saya, saya tidak memiliki metode "input" selain "Mikrofon internal". Mengapa tidak ada "Line in"?
kenny
1
Maaf, saya melewatkan itu. Saya lupa bahwa sebagian besar MacBook terbaru tidak memiliki sambungan, hanya MBP non-retina 15 "yang berfungsi. Secara teknis Anda masih dapat melakukan mic-in dengan headset yang kompatibel dengan iPhone, tetapi itu tidak terlalu berguna dalam kasus ini.
robmathers
Karena kita berbicara tentang skrip GUI, apakah ada cara untuk mensimulasikan klik pada bilah geser setelah saya mengaturnya menjadi nol? (Pengetahuan applescript saya tentang bagaimana melakukan ini kurang)
kenny
(ya itu, lihat jawaban saya)
kenny
Sepertinya Anda mengerti, tetapi skrip Anda tampaknya tidak mengubah apa pun, itu sama dengan mengaturnya langsung melalui AppleScript atau secara manual — masalah yang sebenarnya tidak dibisukan masih ada. Mungkin saya salah mengerti niat awal Anda?
Robmathers
1
Ini dibangun dari potongan skrip @robmathers GUI dan pertanyaan saya tentang apakah Anda dapat "mengklik" slider dengan applescript. Saya melakukan beberapa penggalian ke dalam tindakan AppleScript dan UI dan ternyata Anda bisa .
Ini menggunakan skrip GUI yang menyedihkan, tetapi BEKERJA.
tell application "System Events"set volume input volume 0end tell
tell application "System Preferences"
activateset current pane to pane id "com.apple.preference.sound"end tell
tell application "System Events"
tell process "System Preferences"set frontmost to true
click radio button "input" of tab group1 of window "Sound"
perform action "AXDecrement" of slider 1 of group2 of tab group1 of window "Sound"end tellend tell
tell application "System Preferences"
quitend tell
Inilah yang terjadi dalam skrip ini:
Setel volume input ke 0 - ini akan menggeser slider ke kiri
"Klik" penggeser untuk melakukan apa pun yang ada di balik layar voodoo yang dianggap perlu oleh Apple untuk benar-benar "membisukan" jalur input (ini semakin konyol)
Keluar dari Aplikasi Preferensi Sistem.
Satu hal yang perlu diperhatikan: Jendela Preferensi Suara tidak dapat dibuka sebelum menjalankan ini atau yang pertama set volume input volume 0tidak berfungsi.
Ini juga sepele untuk mengedit skrip untuk unmute (yang juga menderita masalah yang sama). (Gunakan "AXIncrement" untuk tindakan)
Alat peraga besar untuk @robmathers untuk mendapatkan saya sejauh yang saya butuhkan untuk mencari tahu bagian terakhir ini. Saya masih menunggu untuk memberikan hadiah jika ada orang lain yang memiliki solusi yang lebih elegan, tetapi sebaliknya, itu adalah miliknya untuk diambil.
Ini dibangun dari potongan skrip @robmathers GUI dan pertanyaan saya tentang apakah Anda dapat "mengklik" slider dengan applescript. Saya melakukan beberapa penggalian ke dalam tindakan AppleScript dan UI dan ternyata Anda bisa .
Ini menggunakan skrip GUI yang menyedihkan, tetapi BEKERJA.
Inilah yang terjadi dalam skrip ini:
Satu hal yang perlu diperhatikan: Jendela Preferensi Suara tidak dapat dibuka sebelum menjalankan ini atau yang pertama
set volume input volume 0
tidak berfungsi.Ini juga sepele untuk mengedit skrip untuk unmute (yang juga menderita masalah yang sama). (Gunakan "AXIncrement" untuk tindakan)
Alat peraga besar untuk @robmathers untuk mendapatkan saya sejauh yang saya butuhkan untuk mencari tahu bagian terakhir ini. Saya masih menunggu untuk memberikan hadiah jika ada orang lain yang memiliki solusi yang lebih elegan, tetapi sebaliknya, itu adalah miliknya untuk diambil.
sumber
Sekarang tampaknya ada aplikasi untuk melakukan Shush ini https://itunes.apple.com/us/app/shush-microphone-manager/id496437906?mt=12
sumber