Не работает микрофон в WSL2
Я пользователь Windows, но мне крайне нравится Linux, поэтому я использую WSL2. Хотел написать своего голосового ассистента, но столкнулся с проблемой, что в WSL у меня просто не распознается микрофон. В то же время если я не в WSL, то все работает корректно. Есть способ решить? Пробовал установить PulseAudio, но не помогло.
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
В WSL аудио из Windows заведено как сервер Pulse.
Проверьте у себя:
echo $PULSE_SERVER
должно быть unix:/mnt/wslg/PulseServer
Проверьте права:
$ ls -l /mnt/wslg/PulseServer
srwxrwxrwx 1 user user 0 Feb 16 13:22 /mnt/wslg/PulseServer
Проверьте наличие устройств:
pactl list sources
Должно быть что-то вроде
Source #1
State: SUSPENDED
Name: RDPSink.monitor
Description: Monitor of RDP Sink
Driver: module-rdp-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 19
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: RDPSink
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "Monitor of RDP Sink"
device.class = "monitor"
device.icon_name = "audio-input-microphone"
Formats:
pcm
Source #2
State: SUSPENDED
Name: RDPSource
Description: RDP Source
Driver: module-rdp-source.c
Sample Specification: s16le 1ch 44100Hz
Channel Map: mono
Owner Module: 20
Mute: no
Volume: mono: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: n/a
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "RDP Source"
device.class = "abstract"
device.icon_name = "audio-input-microphone"
Formats:
pcm
Проверьте, что микрофон действительно доступен:
$ winuser=`cmd.exe /c "echo %USERNAME%" 2>/dev/null| tr -d '\r\n'`
$ ffmpeg -f pulse -i default /mnt/c/Users/$winuser/Desktop/mic.wav
Дожно получиться что-то вроде
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr ...
libavutil 56. 70.100 / 56. 70.100
...
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, pulse, from 'default':
Duration: N/A, start: 1740068198.479169, bitrate: 1536 kb/s
Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, wav, to '/mnt/c/Users/User/Desktop/mic.wav':
Metadata:
ISFT : Lavf58.76.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Metadata:
encoder : Lavc58.134.100 pcm_s16le
size= 936kB time=00:00:04.98 bitrate=1537.9kbits/s speed=0.994x
video:0kB audio:936kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.008142%
На рабочем столе должен появиться файл mic.wav
. Прослушайте его.