前回の記事で音声再生に悪戦苦闘していたけど、音声再生/録音するだけならWSLgでとっくに対応していた。。。
そのWSLgが組み込まれたWSL2なら、あっけないくらい簡単に再生/録音できた。
(WSLgはWindows11の比較的新しいWSL環境なら組み込まれているっぽい)
USBオーディオデバイスは直接扱えないけど、自分の用途だと全然問題ない。
環境
Windows 11 バージョン22H2 (OSビルド 22621.1105)
WSL2で、Ubuntu 20.04インストール済み
$ sudo wslsys Release Install Date: 0x636e7a47 Branch: ni_release Build: 22621 Full Build: 22621.1.amd64fre.ni_release.220506-1250 Uptime: 0d 5h 21m Linux Release: Ubuntu 20.04.5 LTS Linux Kernel: Linux 5.15.79.1-microsoft-standard-WSL2 Packages Count: 2400
WSL2上のUbuntu20.04から音声再生する
WSL2上のUbuntuで再生しようとすると、Windows PCのオーディオデバイスで再生される。 WSLgの構成図を見るとPulseAudio Serverが動いていて、pulseaudioを経由するものは簡単に再生できる。
$ aplay /usr/share/sounds/alsa/Side_Right.wav Failed to read cookie file '/home/taro/.config/pulse/cookie': Is a directory Failed to load cookie file from cookie: Is a directory Failed to read cookie file '/home/taro/.config/pulse/cookie': Is a directory Failed to load cookie file from cookie: Is a directory Playing WAVE '/usr/share/sounds/alsa/Side_Right.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
WSL2上のUbuntu20.04から音声録音する
録音も簡単。
WSL2上のUbuntuで録音をしようとすると、Windows PCのマイクをつかって録音される。
$ arecord -twav sample.wav 省略 Recording WAVE 'sample.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono Ctrl+Cで停止
いろいろ確認
$ echo $PULSE_SERVER /mnt/wslg/PulseServer
$ aplay -l aplay: device_list:276: no soundcards found... $ aplay -L 省略 default Playback/recording through the PulseAudio sound server 省略 pulse PulseAudio Sound Server 省略