5 votes

Pourquoi cet applescript ne met-il pas réellement le volume d'entrée à zéro ?

J'ai cette commande qui construit un script pour couper le volume d'entrée. Le volume d'entrée n'est pas complètement coupé, cependant. Il semble être plus proche de 10% que de 0%.

osacompile -x -e 'tell application "System Events" to set volume input volume 0' -o ~/bin/mute_mic.scpt

C'est étrange, parce que la barre de défilement est aussi loin à gauche qu'elle peut aller, mais comme vous pouvez le voir sur l'image ci-jointe, le son est toujours enregistré. Toutefois, si j'utilise la souris pour cliquer sur le curseur à zéro, l'entrée est effectivement coupée.

Pourquoi cela se produit-il ? Est-ce que j'utilise applescript de manière incorrecte ?

Proof of script not muting.

Je peux même reproduire ce phénomène avec l'éditeur AppleScript de base, donc je sais qu'il ne s'agit pas d'un problème de compilation.

applescript not working

(Note : J'ai initialement trouvé la solution à ce problème dans le document suivant la réponse à cette question .)

3voto

Ged Byrne Points 481

Pour autant que je puisse dire, le script fonctionne comme prévu, le problème est dans le code d'entrée audio OS X. Lorsque je l'exécute, le curseur passe à 0%, vérifié en passant la souris sur le curseur jusqu'à ce que l'infobulle apparaisse :

tooltip

C'est la même chose que si je fais glisser le curseur du volume manuellement.

Le problème est apparemment que "0%" ne signifie pas réellement off mais plutôt un seuil très bas. Lors d'un test rapide, j'ai pu enregistrer le son de mon doigt tapant sur le boîtier de mon MacBook Pro près du micro (sur la plupart des machines, je crois que c'est autour de la grille du haut-parleur droit). lorsque le volume était réglé sur 0 . J'ai pu reproduire ce phénomène, que je règle le curseur manuellement ou via AppleScript. Il semblait être suffisamment bas pour que pratiquement aucun autre son ne soit capté, mais il est clair que le microphone n'est pas vraiment éteint.

Pour autant que je sache, il n'y a aucun moyen de couper correctement le micro intégré. Le mieux que je puisse suggérer est de changer l'entrée audio pour utiliser l'entrée ligne, si votre Mac est équipé d'un port d'entrée de ligne . Faire cela via AppleScript nécessite malheureusement un script GUI, mais cela devrait le faire ( source ) :

tell application "System Preferences"
   activate
   set 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 group 1 of window "Sound" to set selected to true
   end tell
end tell

Si vous disposez de plus que les deux entrées audio standard (Mic et Line In), vous devrez peut-être modifier le nombre dans le champ row 2 à celui qui est approprié, selon l'ordre de vos préférences de saisie.

0 votes

Vous remarquerez sur ma capture d'écran que je n'ai pas d'autre méthode d'"entrée" que le "microphone interne". Pourquoi n'y aurait-il pas d'"Entrée ligne" ?

1 votes

Désolé, j'ai raté ça. J'ai oublié que la plupart des MacBooks récents n'ont pas d'entrée ligne, seuls les MBP 15" non-retina en ont. Techniquement, vous pouvez toujours faire une entrée micro avec un casque compatible iPhone, mais ce n'est pas vraiment utile dans ce cas.

0 votes

Puisque nous parlons de scripting GUI, y a-t-il un moyen de simuler un clic sur le curseur une fois que je l'ai mis à zéro ? (mes connaissances en applescript sur la façon de faire cela sont insuffisantes)

1voto

kenny Points 213

Cette question fait suite à l'article de @robmathers sur les scripts GUI et à ma question sur la possibilité de "cliquer" sur le curseur avec AppleScript. J'ai fait quelques recherches sur AppleScript et les actions de l'interface utilisateur et il s'avère que l'on peut peut .

Ce système utilise des scripts GUI, ce qui est triste, mais il fonctionne.

tell application "System Events"
    set volume input volume 0
end tell
tell application "System Preferences"
    activate
    set 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 group 1 of window "Sound"
        perform action "AXDecrement" of slider 1 of group 2 of tab group 1 of window "Sound"
    end tell
end tell
tell application "System Preferences"
    quit
end tell

Voici ce qui se passe dans ce script :

  1. Règle le volume d'entrée à 0 -- cela déplace le curseur complètement vers la gauche.
  2. "Cliquez sur le curseur pour faire tout ce qu'Apple a jugé nécessaire pour mettre en sourdine la ligne d'entrée (cela devient ridicule).
  3. Quitte l'application des préférences système.

Une chose à noter : la fenêtre des préférences sonores ne doit pas être déjà ouverte avant d'exécuter cette opération ou la première opération de l'opération. set volume input volume 0 ne fonctionne pas.

Il est également trivial d'éditer le script pour désactiver le son (qui souffre également du même problème). (Utilisez "AXIncrement" pour l'action)

Un grand merci à @robmathers pour m'avoir permis d'aller aussi loin que nécessaire dans la résolution de ce dernier problème. Je vais encore attendre avant d'attribuer la prime au cas où quelqu'un d'autre aurait une solution plus élégante, mais sinon, c'est à lui de la prendre.

-1voto

tik27 Points 154

Il semble qu'il existe maintenant une application pour faire cela. Chut https://itunes.apple.com/us/app/shush-microphone-manager/id496437906?mt=12

-1voto

Tobiesque Points 579

MuteKey est une application gratuite qui fonctionne bien : https://apps.apple.com/us/app/mutekey/id1509590766?mt=12

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X