WSL 使用 pulseaudio 播放声音

解决方案:使用 pulseaudio

Win 服务端

下载

下载 Windows 上的 pulseaudio 作为服务端,下载完毕后解压到任意文件夹,假设是 C:\pulseaudio\

修改 etc\pulse\default.pa

Line 42
FROMload-module module-waveout sink_name=output source_name=input
TOload-module module-waveout sink_name=output source_name=input record=0

请注意,出于安全和隐私考虑,Windows 10(2018年4月更新)似乎限制了对录音设备的访问。 您可能可以以某种方式改写此功能,但是由于我们只想听声音,我们只是通过添加’record = 0’从PulseAudio服务器禁用它。

Line 61
FROM#load-module module-native-protocol-tcp
TOload-module module-native-protocol-tcp auth-ip-acl=127.0.0.1

这使得PulseAudio服务器能通过TCP从127.0.0.1接受连接。

修改 etc\pulse\daemon.conf

Line 39
FROM; exit-idle-time = 20
TOexit-idle-time = -1

如果将此选项设置为非负值,则当最后一个客户端断开连接并且经过的时间超过此选项(以秒为单位)时,服务器将自动终止自身。

启动服务端

1
2
cd C:\pulseaudio\bin
.\pulseaudio.exe

测试服务端

打开 PowerShell 执行

1
.\paplay.exe -p --server=tcp:localhost C:\Windows\Media\ding.wav

WSL 客户端

安装

1
sudo apt install pulseaudio

导出环境设置

1
export PULSE_SERVER=tcp:127.0.0.1;