ご存知のようにオーディオデバイスは勝手に増殖します。よっぽどのことがない限り耳も口も増えることはないはずなのに、なぜかそれを利用するデバイスだけが増えていくのです。今回は聖徳太子になりきれない読者に向けて、複数のオーディオデバイスを活用できるよう、より手早くデバイスを切り替える方法を紹介します。
オーディオデバイスを切り替えるとは
現在のUbuntuはサウンドサーバーとしてPulseAudioを採用しています。PulseAudioはざっくりと説明すると、アプリケーションの音声出力をどのスピーカーやヘッドフォンで再生するのか、マイクから入力された音声をどのアプリケーションに渡すのかといったアプリケーションとサウンドデバイスの橋渡しをする仕組みです[1] 。
[1] 最近はより「低レイテンシー」を売りにしたマルチメディアフレームワークである「PipeWire」が登場しています。Ubuntuでも22.04ではビデオ再生用にPipeWireが最初からインストールされているものの、まだPulseAudioがメインのサウンドサーバーのままです。2022年10月にリリースされる予定の22.10では、オーディオでもPipeWireに置き換わる予定です。
本連載でもサウンド関連の記事は多く存在します。PulseAudioが絡んでくる代表的な記事だけでもリストアップすると、次のとおりです。
内容が古い記事もあるものの、おおよそPulseAudio自体はそこまで大きく変わっていないため、今でも使える情報ばかりでしょう。
さて、Ubuntuの場合、一般的なアプリケーションであればPulseAudioがどのオーディオデバイスに出力するかをコントロールしています。特にGNOMEだとPulseAudioの設定がシステム設定画面でも行えるため、次のような画面を見たことがあるでしょう。
図1 システム設定の「サウンド」でメインの出力先を変更できる
また、ZoomやTeams、OBS Studioのように、アプリケーション側で出力デバイスを指定できるUIを備えているものもあります。これらのアプリケーションはツールキット経由でALSAライブラリを利用していることが多く、Ubuntuの場合は一旦ALSAライブラリからPulseAudioを経由して出力することになります。
図2 アプリケーションによってはALSAライブラリを利用して独自に出力デバイスを変更している
しかしながらFirefoxをはじめとする大抵のアプリケーションは、出力先を選ぶ機能が標準では備わっていません[2] 。よって何かを再生・録音する際に、普段とは異なるオーディオデバイスを選びたいのであれば、システム設定の「サウンド」から選択する必要がでてきます。
[2] Firefoxなども、上図のようにリモートミーティングのように個別に録音やカメラの利用を許可する必要があるサイトであれば、オーディオデバイスを選択可能です。また拡張機能などを入れればもう少し柔軟に設定できる場合もあります。
もちろんPulseAudioの設定をきちんと書けば、特定のアプリケーションのみ特定のオーディオデバイスに送ることは可能ですし、第177回 でも紹介しているようにpavucontrol(PulseAudio Volume Control)のようなPulseAudioの設定ツールを使えば、再生中の特定のアプリケーションごとの出力先を動的に変更できます。
今回はそこまで細かな設定は不要で、単にさっとシステム全体の出力先を変えたい、という用途に便利な「Sound Input & Output Device Chooser」を紹介しましょう。
Sound Input & Output Device Chooser
「Sound Input & Output Device Chooser 」はGNOME Shellの拡張機能です。この拡張機能を導入すると、画面右上のシステムメニューから再生・録音のオーディオデバイスを簡単に変更できます。
図3 システムメニューからオーディオデバイスを変更できる。Bluetoothデバイスのように複数のプロファイルをサポートしていたらプロファイル間の切り替えも可能
他にもデバイス単位の音量や表示・非表示の設定、Bluetooth等のプロファイルの選択なども可能です。
UbuntuにおけるGNOMEの拡張機能は現状、「 ウェブブラウザーからインストールする」「 GNOME Shell Extension Managerを使う」「 CLIからインストールする」の3択です[3] 。そのうち最初のウェブブラウザーを使う方法では、現状Snap版のFirefoxやChromiumでは対応していません。また、GNOME Shell Extension ManagerはUbuntu 22.04 LTSから利用できるようになりました。よって今回はGNOME Shell Extension ManagerとCLIを使った手順の両方を紹介します。
GNOME Shell Extension Managerでインストール
GNOME Shell Extension Managerは第712回「Ubuntu 22.04 LTSの変更点 」の最後のほうでも紹介されているように、Ubuntu 22.04 LTSから導入されたアプリケーションです[4] 。
[4] 3月ぐらいにはパッケージそのものはあったのですが、リリース前に急遽0.3.0にあげることになりました。0.3.0にあげるためには別途text-engineを新規にパッケージ化して、アーカイブに取り込む必要があります。そこで4月18日ぐらいにDebianにパッケージ作成の宣言チケットを作り、4月20日にLaunchpad側で独自に作業を開始、速攻でアーカイブに取り込んで、翌4月21日に22.04がリリースされるという、アグレッシブな措置がとられています。
あらかじめ「gnome-shell-extension-manager」パッケージをインストールしておいてください。ちなみに記事公開前後には日本語化されたパッケージが公開される見込みです。
図4 「 探す」ボタンで表示される検索ウィンドウから「sound input」で検索
図5 上記画面で「追加」を押すと「拡張機能をインストール」が表示されるので「インストール」を選択
図6 ちなみに拡張機能の名前をクリックすると詳細が表示される
図7 「 追加済み」側からは拡張機能の有効化・無効化を切り替えたり、設定画面を起動できる
インストール自体は画面の指示に従えば良いでしょう。インストール完了したらすぐにシステムメニュー部分が更新されるはずです。
CLIでインストール
実はGNOME Shellの拡張機能でインストールするのはただのファイルアーカイブです。拡張機能のサイトでは、そのアーカイブをダウンロードします。つまりCLIからインストールする場合は、ファイルを手動でダウンロードしたあとに、gnome-extensionsコマンドでインストールすれば良いだけとなります。追加でパッケージをインストールする必要もないため、慣れればこちらのほうが便利かもしれません。
アーカイブをダウンロードするには、まず拡張機能のページ から「Shellのバージョン」を指定します。具体的にはシステム設定の「このシステムについて」にある「GNOMEのバージョン」を参照してください。Ubuntu 22.04 LTSの場合は「42.1」なので、「 42」を選択します。次に「拡張機能のバージョン」が表示されます。ここは最新版を選んでおくと良いでしょう。
アーカイブをダウンロードしたら、次の方法でインストールします。
$ gnome-extensions install sound-output-device-chooserkgshank.net.v43.shell-extension.zip
インストールはこれで完了ですが、GNOME Shell Extension Managerでのインストール方法と異なり、この状態だとまだ拡張機能が見えません。そこで一度ログアウトして、ログインし直してください。そうすると無効化された拡張機能の一覧に拡張機能のIDが表示されます。
$ gnome-extensions list --disabled
[email protected]
あとはこのIDを指定して有効化するだけです。これでシステムメニューにオーディオデバイスの設定UIが追加されます。
$ gnome-extensions enable [email protected]
また次のようにprefs
サブコマンドを使うと、設定ダイアログが表示されます。
$ gnome-extensions prefs [email protected]
一時的な無効化(disable
)やアンインストール(uninstall
)は次のように実行します。
$ gnome-extensions disable [email protected]
$ gnome-extensions uninstall [email protected]
基本的な使い方
使い方自体はそこまで難しいものではありません。画面右上のシステムメニューをクリックすると、ネットワークの設定などの上に音量調整バーとともに、デバイス名のドロップダウンメニューが表示されます。
図8 表示項目は設定で変更可能
オーディオの出力(Sink)や入力(Source)に表示されるデバイス名を指定すれば、音声の入出力がそのデバイスに切り替わります。システム設定の「サウンド」の入力や出力をシステムメニューでも変えられるようになった、言ってしまえば、たったそれだけの機能です。
表示するデバイスは、設定ダイアログでコントロールできます。GNOME Shell Extension Managerなら「追加済み」のところに歯車アイコンが表示されるため、それをクリックすれば設定ダイアログが起動します。CLIで操作するなら前述の「gnome-extensions prefs
」コマンドを実行します。
図9 設定ダイアログ
「Integrate selector with slider」はデバイスのドロップダウンメニューを音量調節バーと統合するかどうかの設定です。「 Display audio profiles for selection」を設定しておくと、Bluetoothのような複数のプロファイル間を切り替えられます。「 Port Settings」では個々のデバイスの表示・非表示を設定できます。未接続のデバイスは原則表示されませんが、使用しないプロファイルや接続されていても切り替えたくない場合は非表示設定にしておくと良いでしょう。