WSL2:PCから音を出す方法

この記事ではWSL2のUbunutuで音を出す方法を説明する。WSL2では現状、PCのサウンドデバイスを直接扱えない。/devにサウンドデバイスが認識されていない。そのためWSL2のUbuntuだけでは音を出すことはできない。いろいろ調べた結果、以下の参考サイトが一番わかりやすかった。この記事はそれの意訳とささやかな説明を加えたもの。

参考サイト

環境

  • Windows10 バージョン2004
  • WSL2
  • Ubuntu 18.04.5

手法の概要

  • Linuxで良く使われるクロスプラットフォームのサウンドサーバー。WSLのUbuntuでサウンドデバイスにアクセスできないので、PulseAudioクライアントからTCPでデータをWindowsのPulseAudioサーバーへ送りPCからサウンドを奏でる。

インストール

  • Windowsでの作業
    • Cドライブ直下にWSLというフォルダを作成する。
    •  ビルド済みのWindows用PulseAudioを次のサイトから上で作成したWSLフォルダにダウンロードする。
    • ダウンロードしたファイルを解凍する。以下の2つのファイルを変更する。
      • C:\WSL\pulseaudio-1.1\etc\pulse\default.paの61行目
        • 変更前 #load-module module-native-protocol-tcp
        • 変更後 load-module module-native-protocol-tcp auth-anonymous=1
      • c:\WSL\pulseaudio-1.1\etc\pulse\daemon.confの39行目
        • 変更前 ; exit-idle-time = 20
        • 変更後  exit-idle-time = -1
    • エクスプローラーで以下のファイルをダブルクリックしてPulseAudioサーバーを起動する。
      • C:\WSL\pulseaudio-1.1\bin\pulseaudio.exe
    • 以下のようなウインドウが表示される。一番下の行に “daemon/main.c: Failed to load directory.”と表示されるが問題ない。
    • Windows Defender ファイアウォールでアプリを許可
  • Ubuntuでの作業
    • Pulseaudioのコマンドラインツールをインストールする。
      • $ sudo apt install pulseaudio-utils
    • WindowsのPulseaudioサーバーを使うための設定。~/.bashrcに以下の1行を追加する。
      • $ export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}');
    • Pulseaudioサーバーと通信できるか次のコマンドで確認する。
      • $ source ~/.bashrc
      • $ nc -vz $(grep nameserver /etc/resolv.conf | awk '{print $2}') 4713
        • 成功すると次のように表示される。
        • nc: connection to 4713 port [tcp/*] succeeded!

実 行

  • Windowsでの作業
    • エクスプローラーで以下のファイルをダブルクリックしてPulseAudioサーバーを起動する。
      • C:\WSL\pulseaudio-1.1\bin\pulseaudio.exe
    • 以下のようなウインドウが表示される。
  • Ubunutでの作業
    • これで音がなるはず。ウェブブラウザchromeを開きYoutubeで素敵な音楽でも聴いてみよう!

終わり

コメント

Folding@home Kanazawa (ID 257261)

みんなのためにおうちで新型コロナウイルスを解析しよう!

タイトルとURLをコピーしました