Google MeetにはUSBデバイスでミュートスイッチを操作する機能が存在する。一般には会議用スピーカーのミュートスイッチに連動してMeetのミュートをON/OFFする機能と思われる。
workspaceupdates.googleblog.com
Call control will work with most USB telephony peripherals; however, the experience may differ from device to device.
書きぶりからして、USB HIDのReport DescriptorにTelephony Usageが含まれているデバイスを認識させればこの機能を利用できそう。これでPush to Talkを実現する物理デバイスができないか、ということを考えていた(というか2,3年くらい前に考えていたけど、気持ちが高まらず優先順としては低めだった)。
1月のGotanda.rbで急遽なにか話すことになり、ふと思い出して30分くらいでClaude Codeにガッと書かせたらできたので、これで発表した。当日のコードはごちゃついていたので、その後整理した結果できたのがこれ。
Raspberry Pi PicoまたはRaspberry Pi Pico 2を買ってきてPCに繋いで、認識されたディスクにファームウェアをドラッグアンドドロップすれば完成。Google Meetの設定から通話コントロールのデバイスを設定するだけで使える。Raspberry Pi Pico 2上では動作確認していて、Picoもどこかに実機があるけど発掘できていないので確認していない。たぶん動くはず。


BOOTSELボタンを押している間だけLEDが光ってミュート解除されるようになる。

とはいえリモートワークだとわざわざミュートを切り替えたいことがあんまりない。同じ会議室にいて音声統合しているケースだと他のPCに自分の声が拾われて聞きづらくなってしまうことがあるから、全員にこのボタンを持ってもらったら解決しそうだけど、それは現実的ではなかろう。
Claude CodeなりCodexなりにうまくコンテキストを渡せばRaspberry Pi Pico向けのファームウェアであっても十分に動くものを作ってもらえる、というのは収穫だったように思う。