まえまえから気になっていたことがあります。WSLのプログラムで『音声ファイルを鳴らすことができるのか?』ということです。
現在、音声関連の処理を行うプログラムを書いているので、これが可能となると実験機器の数が減るので便利なんだけどな🙄という思いです。
Webで検索をしてみるとWSLgとPulseAudioに対応していれば音がなるのでは?と考えました。案ずるより産むが易し、本当に鳴らすことができるか確認してみたいと思います。
WSLgとは?
WSLg はWSL GUIの略で、Windows Subsystem for Linux(WSL)上でLinuxのGUIアプリケーションを実行するための機能です。
動作の具体例
WSLgの仕組み
WSLgは処理のレイヤとして以下のような箇所の処理を行います。

WSLgのメリット
開発の容易性
環境構築が簡単
WSLgのない環境では別途X serverの設定が必要(Windows10時代の話)だったが…- バージョンアップをすることで
WSLgに対応し、意識せずセットアップが行われ、WSL起動と同時にスタート
Windowsとの統合
Xに対応したアプリの画面が新しいウインドウで開く(表示デバイスを意識することなく)
- アプリ間のテキストのコピー&ペーストが普通にできる
- 音声出力がWindowsのスピーカーを使用可能
必要な環境
- Windows 11(Build 22000以降)
- WSL バージョン 0.50.2 以降
音声再生の仕組み?

WSLgがあることで、WSL(Linux)とWindowsの『橋渡し』をしてくれるため、開発者は特別な設定をすることなく、普通のLinux環境と同じようにコードを書くことができます。これすごい🤩🤩🤩
PulseAudioとは?
音声を管理するためのサウンドサーバアプリケーションです。複数のアプリケーションからの音声を制御し、適切にミキシングして、実際のサウンドデバイスへ出力する役割を担います。
具体例で理解する
以下のような状況を考えてみると

PulseAudioがあることで、以下の処理が可能になります。
- 複数のアプリの音を同時再生
- アプリごとの音量調整が可能
- 出力先(スピーカー/ヘッドホン)の切り替え
システム構成図

WSL(WSLgの場合)でのPulseAudioとの接続
PulseAudioがアプリ層とドライバ層をつなぐ役目をするものであることがわかりました。
WSLgは以下のように動作します。WSLの音声出力アプリの音声データをPulseAudioで受取り、Windows側へ送信する動作をします。

ということはPulseAudioに対応している音声出力アプリであれば、基本的にWindows側のスピーカから音声がなります。これはかなり制御が楽になりそうです。
開発者視点での使い方
1. 直接PulseAudioを使用する
使用例
# 音声ファイルの再生 $ paplay sound.wav # paplayが存在しない場合には事前に以下をインストールしてください。 # $ sudo apt install pulseaudio-utils
2. ライブラリ経由で使用
# PyAudioの場合 # PulseAudioが利用可能な場合、自動的に使用される import pyaudio # Pygameの場合 # 内部的にPulseAudioを使用 import pygame pygame.mixer.init()
- 動作の確認ポイント
PulseAudioのプロセスが動いているか- アプリケーションが
PulseAudioを認識しているか
PulseAudioは最近のLinuxシステムではサウンド関連のほぼ標準的(?)役割なを果たしています。
つまり、WSLgを通じてPulseAudioが利用可能であれば、音声関連の開発がスムーズに行えるようです。
WSLgに対応しているかを調べる方法
1. WSLgの対応確認
【田+Rキー】を押してcmd.exeを起動します。

以下のコマンドを実行します。
# Windowsのバージョン確認(Windows 11 Build 22000以降が必要) cmd.exe /c ver # WSLのバージョン確認(0.50.2以降が必要) wsl --version
Windows10ではわかりませんが、Windows11であればこの条件はクリアしていると思います。 WSLのバージョン表記にもWSLgのバージョンが表記されています。

2.PulseAudioの動作確認
# サウンド関連のプロセス確認 $ ps aux | grep pulseaudio # WSLgのPulseServer確認 $ ls -l /mnt/wslg/PulseServer

3.PulseAudio対応アプリの動作確認
# 音声再生のテスト # paplayが存在しない場合には事前に以下をインストールしてください。 # $ sudo apt install pulseaudio-utils $ paplay /usr/share/sounds/alsa/Front_Center.wav
これらの確認が成功すれば問題なくWSLで音声出力するプログラムを作成していくことができます。
注意点
- WSLg環境では自動的にPulseAudioサーバが起動するため、手動での起動は不要です。
- 音が出ない場合は、Windows側の設定の可能性もあります。念の為、音声設定を確認してください
これらの設定で、WSL上で音声を再生できるようになります。
おわりに
今回は、WSLgとPulseAudioを使用してWindowsで音声を再生する方法についてまとめてみました。
最初は「WSLで音声が鳴るのか?」という単純な疑問から始まりましたが、調べていくうちにWSLgという素晴らしい機能の存在を知ることができました。特に印象的だったのは、WSLgによってWindows-Linux間の連携が非常にスムーズになっている点です。以前はX serverの設定に苦労した経験がある方も多いと思いますが、現在のWSLgではそういった設定は不要になっています🤩
音声出力に関しても、PulseAudioを介することで、通常のLinux環境と同じように扱えます。これにより、Linux向けに開発した音声アプリケーションをWindows上でもテストできるようになります。
WSLでの音声アプリケーション開発に取り組む方々の参考になれば幸いです。
WSLgはグラフィカルな部分だけでないという点が割と盲点だったかも😎