焼肉on寿司onピザ

プログラミングとか、かっこいい音楽とかの話を

【Windows10】WSL(Windows Subsystem for Linux)で音を出すまで(メモ)【PulseAudio】

はじめに

WSLで音出したいなーと思ったので環境構築した

発生した問題

この辺の記事を参考に、WSlから音を出したかったのですが…
cobodo.hateblo.jp
token2shell.com

待機状態になってくれれば成功なのですが、ターミナルから起動してもうまく待機状態になってくれません。
こんな感じのエラー(エラーはイメージです)がブワーって出た後止まってしまいます
(これは動いてる時のエラーなので、本当に動かない時は違うエラーが出るかも)
f:id:dokataponiti:20200107234904j:plain
う~ん困った

対処法

WSL側はこちらを参考に導入
cobodo.hateblo.jp

window側はこちらを参考に導入、何が要因でうまくいったかはわかりません…
vogel.at.webry.info


上記記事を参考にpulseaudioのdaemon.confとdefault.paを編集
pulseaudio.exeファイルをダブルクリックするとターミナルが立ち上がって無事に待機状態になりました。

他の記事のやつと追加してやったことは

Win32がどうのってエラーが出ますがちゃんと音は出ます。
※pulseaudioを走らせておかないとWSLからの音は拾えないので注意

具体的処理

WSL側

WSL側の手順はこっちを参考にしましたが、行数とか自分の環境と若干違ったので一応手順をまとめておきます
Windows Subsystem for Linuxのインストールからmikutterをそれらしく動かすまで - cobodoのブログ

まずはインストール

$ sudo apt install pulseaudio

pulseaudioの設定ファイルを書き換えます
読み込み専用ファイルなので sudo vi [ファイル名]で実行して 保存時は:w! とかすると保存できるかと

/etc/pulse/client.confの22行目を書き換える
変更前

; default-server =

変更後

default-server = tcp:localhost


続いて/etc/pulse/default.paの83行目

#load-module module-native-protocol-tcp

こいつの#を消しましょう

WSL側はこれで終了です

Windows

さっきの記事様とほとんど全く同じことをします
まずpulseaudioをダウンロード
https://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Windows/Support/
zipfile containing preview binariesってとこをクリックすればOK
ダウンロードしたら解凍

/pulseaudio-1.1/etc/pulseのファイルを編集します、元のを削除して置き換えましょう
/pulseaudio-1.1/etc/pulse/default.pa

load-module module-waveout sink_name=output source_name=input record=0
load-module module-native-protocol-tcp auth-anonymous=1

参考元の記事様の編集に追加してdaemon.confも編集
/pulseaudio-1.1/etc/pulse/daemon.conf 39行目
変更前

; exit-idle-time = 20

変更後

exit-idle-time = -1

次に管理者でパワーシェルを起動して次のコマンドを実行
ファイウォールの設定らしいです

netsh advfirewall firewall add rule name="PulseAudio" dir=in action=allow protocol=TCP localport=4713

ここまでやったら/pulseaudio-1.1/bin/pulseaudio.exeをエクスプローラーからクリックして実行
黒いターミナルが立ち上がって、待機状態にくれれば成功です。
この後、パワーシェルで実行しても待機状態になりました

動作確認

paplayとかでテキトーなwavファイルを再生してみましょう

$ paplay test.wav
shared memfd open() failed: 関数は実装されていません

こんなエラーが出ますが、音声は再生されるので大丈夫です。



なんかWSLとかのこういう記事の日本語文書探してもあんまないですね、もっと盛り上がれWSL