MyTetra Share
Делитесь знаниями!
Как в Linux c PulseAudio услышать в наушниках звук, который подается на микрофонный вход?
Время создания: 19.05.2025 22:38
Автор: Xintrea
Текстовые метки: linux, pulseaudio, звук, перенаправление, прослушивание, гнездо, джек, микрофон, динамики, наушники, вход, выход, эхо, pavucontrol, pactl, loopback
Раздел: Компьютер - Linux - Звук и аудио
Запись: xintrea/mytetra_syncro/master/base/1747683493rx4j98wzyi/text.html на raw.github.com

Удивительно, но в PulseAudio даже в 2025 году нет вменяемого способа услышать в наушниках (или в динамиках) звук, который поступает на микрофонный вход. В графической утилите pavucontrol невозможно настроить звук так, чтобы услышать микрофонный вход в наушниках или во внешних динамиках. Вот так прекрасно обстоят дела в звуковой подсистеме Linux.


Что делать? Ну конечно же, придется костылить.


Решение состоит в том, что бы в звуковую систему PulseAudio добавить специальный модуль с именем module-loopback. Его надо запустить и настроить так, чтобы в качестве источника звука был указан микрофон, а в качестве устройства-получателя - наушники или внешние динамики. Сделать это через графические утилиты невозможно, потому что таких настроечных GUI-утилит попросту нет. Как и тридцать лет назад, придется писать консольные команды. А вы как хотели заниматься музыкой в Linux? Думали, можно мышкой тыкать и крутить движки уровней? Нет, Linux не таков!




Аудио-система под управлением Linux



Итак, все действия будут делаться через утилиту pactl (это сокращение от Pulse Audio ConTroL).


Все нижеприведенные команды запускаются от обычного пользователя. Переключения на root не требуется.



Получение имени устройства - источника звуковых данных


Вначале надо получить список устройств-источников звука следующей командой:



> pactl list short sources


710 alsa_output.pci-0000_00_1b.0.9.analog-stereo.3.monitor

PipeWire s32le 2-канальный 4800 RUNNING


711 alsa_input.pci-0000_00_1b.0.9.analog-stereo

PipeWire s32le 2-канальный 4800 RUNNING



Здесь, по всей видимости, видны только активные устройства (со статустом RUNNING). Данная команда была запущена на ноутбуке со встроенным микрофоном и с микрофонным гнездом. В микрофонное гнездо воткнут внешний микрофон. А input-устройство видно только одно. В любом случае, именно оно и нужно.


Убедиться, что устройство alsa_input.pci-0000_00_1b.0.9.analog-stereo - это действительно какое-то устройство захвата, можно той же самой командой, но без слова shorts:



> pactl list sources


Источник №710

Состояние: RUNNING

Имя: alsa_output.pci-0000_00_1b.0.9.analog-stereo.3.monitor

Описание: Monitor of Встроенное аудио Аналоговый стерео

Драйвер: PipeWire

...

Свойства:

...

api.alsa.pcm.card = "0"

api.alsa.pcm.stream = "playback"

...

Источник №711

Состояние: RUNNING

Имя: alsa_input.pci-0000_00_1b.0.9.analog-stereo

Описание: Встроенное аудио Аналоговый стерео

Драйвер: PipeWire

...

Свойства:

...

api.alsa.pcm.card = "0"

api.alsa.pcm.stream = "capture"

...



Если в свойствах прописано api.alsa.pcm.stream = "capture" то это значит, что это устройство захвата, и, видимо, является микрофонным гнездом.


Почему в списке устройств-источников находится устройство воспроизведения, у которого в названии имеется подстрока output, не совсем понятно. Но вот что есть, то есть. Оно в дальнейшей настройке использоваться не будет.


Итак, на первом шаге было получено имя устройства: alsa_input.pci-0000_00_1b.0.9.analog-stereo.



Получение имени устройства воспроизведения звука


Далее надо понять, на какое устройство воспроизведения можно "заворачивать" звуковой поток. Делается это командой:



> pactl list short sinks


710 alsa_output.pci-0000_00_1b.0.9.analog-stereo.3

PipeWire s32le 2-канальный 4800 IDLE



В английском языке слово sink означает "приемник", "сток", "слив". Данная команда, соответственно, запрашивает список всех возможных сливов. Видно, что слив в системе один. Тут выбирать не приходится.


Итак, на втором шаге получено имя устройства: alsa_output.pci-0000_00_1b.0.9.analog-stereo.3.



Команда создания модуля обратной петли (loopback)


Как уже было сказано в начале, необходимо в Pulse Audio включить loopback-модуль. Только при его наличии можно услышать звук с микрофонного гнезда в наушниках или в динамиках. Забегая вперед надо сказать, что запуск данного модуля не приводит к появляению нового устройства, но приводит к появлению виртуального потока (Virtual Stream в терминах Pulse Audio).


Команда запуска обратной петли между микрофоном и устройством воспроизведения в общем виде выглядит так:



> pactl load-module module-loopback source=МИКРОФОН sink=НАУШНИКИ latency_msec=50



Учитывая данные, которые были получены на предыдущих шагах, полная команда будет выглядеть следующим образом:



> pactl load-module module-loopback source=analog-input-mic sink=alsa_output.pci-0000_00_1b.0.9.analog-stereo.3.monitor latency_msec=50



Вот так, введя команду из каких-то 130 символов, можно легко и непринужденно включить воспроизведение звука в наушниках. Linux, 2025 год.



Отключение виртуального потока обратной петли


Для отключения потока обратной петли, надо просто потушить данный модуль. Делается это командой:



> pactl unload-module module-loopback



В результате звук микрофона в наушниках пропадет.



Известные проблемы


Куда же без них? Обнаружено, что после создания потока обратной петли, перестает работать движок общей громкости, доступный в DE. Для того, чтобы регулировать громкость, надо будет ее крутить у соотвествующего устройства в утилите pavucontrol во вкладке "Устройства Вывода".


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования