マイクが複数あるときにマイクがミュートされているかミュート解除されているかをどうやって知ることができますか?

マイクが複数あるときにマイクがミュートされているかミュート解除されているかをどうやって知ることができますか?

マイク(マザーボード、USB、HDMIなど)が複数ある場合は、マイクがミュートされているかどうかを確認します。

1)以下を使用して見つかりません。

$ cat /proc/asound/cards 
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xfe720000 irq 48
 1 [default        ]: USB-Audio - AK5370          
                      AKM              AK5370           at usb-0000:00:1a.0-1.1, full s

2) これも同様である

$ amixer -D 'hw:0' | grep Capture
  Capture channels: Front Left - Front Right
Simple mixer control 'Capture',0
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 46
  Front Left: Capture 22 [48%] [6.00dB] [on]
  Front Right: Capture 22 [48%] [6.00dB] [on]
Simple mixer control 'Capture',1
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 46
  Front Left: Capture 42 [91%] [26.00dB] [on]
  Front Right: Capture 42 [91%] [26.00dB] [on]
  Capture channels: Front Left - Front Right

$ amixer -D 'hw:1' | grep Capture
  Capture channels: Mono
  Limits: Capture 0 - 78
  Mono: Capture 70 [90%] [12.00dB] [off]

3) 以下の場合も同様です。

$ pactl list | sed -n '/^Source/,/^$/p' | grep Mute
    Mute: yes
    Mute: no
    Mute: no

$ amixer scontrols
Simple mixer control 'Master',0
Simple mixer control 'Capture',0

型クエリに基づいて私bash(または他の)スクリプトが値を読み取るようにするにはどうすればよいですか?hw:value,value

答え1

alsa-utilsパッケージにあるalsamixerを試すことができます。それは素晴らしいncurses型GUIを持っています。

答え2

出力amixer -D 'hw:1'は実際に最後の行にマイクの状態を表示します。スクリプトからそのコンテンツを抽出する1つの方法は次のとおりですbash

amixer -D "hw:1" sget Mic | awk -F "[\[\]]" '/\[on|off\]/{ print $6 }'

amixerを使用して-Dデバイスを指定し、照会するデバイスをsget指定します。simple control私にとってはコントロールは簡単ですMicが、あなたには異なるかもしれません。これを使ってamixer -D "hw:1"調べてください。

amixerこのアプローチは、出力があまり変更されない限り機能します。それがすることは:

  1. amixerの出力をパイプで接続しますawk
  2. [on]またはを含まない行をフィルタリングします[off]。だから私たちは一行で終わりますMono: Capture 70 [90%] [12.00dB] [off]
  3. 行の6番目のフィールドを抽出して印刷します。フィールド区切り文字は[または]に設定され、スイッチ状態文字列(「on」または「off」)を取得します。

amixerもちろん、これは最もエレガントな解決策ではありませんが、出力をより構造化された方法で生成する方法を見つけることができませんでした。

関連情報