🎙️

[Karabiner-Elements] MacでPush to Talk(キーを押している間だけ音声送信状態にする)を実現する

2023/10/01に公開

Push to Talk(PTT)

Web会議をしていて、あるキーを押しているだけ音声を送信するようにしたいと思っていました。
だいたいのWeb会議ツールにはミュート・アンミュートを切り替えるショートカットがありますが、今回はシステム設定で音声の入力をコントロールしたいと思います。

利用するもの

  • AppleScript
  • Karabiner-Elements

音声入力レベルをコントロールするAppleScriptを作成

~/.config/karabiner/adjust_mic_volume.applescript に作成します。

adjust_mic_volume.applescript
#!/usr/bin/osascript

on run argv
    set micVolume to (item 1 of argv)
    set volume input volume vol micVolume
    display notification ("Set mic volume to " & micVolume) with title "Mic"
    return micVolume
end run

set volume input volume <number> でシステムの入力音量を設定することができます。

./adjust_mic_volume.applescript <number> で音量を変更できます。
./adjust_mic_volume.applescript 0 でミュート、 ./adjust_mic_volume.applescript 100 で最大音量となります。

AppleScriptを実行するキーを設定する

上記のAppleScriptを実行するキーをKarabiner-Elementsで割り当てます。
私はF5に割り当てていますが、好きなキーを割り当ててください。
この設定で次のことができるようになります。

  • F5 を押している間だけアンミュートする
  • F5 を離すとミュートになる
  • Cmd+F5 を押すとアンミュートのままになる
karabiner.json
{
  "profiles": [
    {
      "complex_modifications": {
        "rules": [
	  ....

          {
            "description": "Push to talk",
            "manipulators": [
              {
                "from": {
                  "key_code": "f5"
                },
                "to": [
                  {
                    "shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 80"
                  }
                ],
                "to_after_key_up": [
                  {
                    "shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 0"
                  }
                ],
                "type": "basic"
              },
              {
                "from": {
                  "key_code": "f5",
                  "modifiers": {
                    "mandatory": [
                      "left_command"
                    ]
                  }
                },
                "to": [
                  {
                    "shell_command": "~/.config/karabiner/adjust_mic_volume.applescript 80"
                  }
                ],
                "type": "basic"
              }
            ]
          }
        ]
      }
    }
  ]
}

少し解説

  • shell_command によりキーを押したときにshellのコマンドを実行します
  • F5を押すと入力レベルを80に設定する shell_command が実行され、 to_after_key_up によりキーを離したタイミングで0にする shell_command が実行されます

Discussion