Как контролировать вход микрофона?

В вашем регулярном выражении вы разрешаете произвольное количество пробелов -символов после двоеточия ("file:*" ). Возможно, вы захотите расширить это до общего пробельного символа ("\s" ), чтобы разрывы строк и табуляции обрабатывались "как пробелы".

6
15.03.2021, 06:20
2 ответа

Вы должны иметь возможность контролировать свой микрофон с помощью модуля кольцевой проверки PulseAudio . Модуль должен автоматически создавать петлевые выходы для доступных устройств ввода. Чтобы загрузить модуль вручную

pactl load-module module-loopback

Чтобы сделать изменение постоянным, добавьте /etc/pulse/default.paк

load-module module-loopback
5
18.03.2021, 23:02

Если у вас есть аналоговый вход и аналоговый выход, я бы рекомендовал просто использоватьpavucontrol(Регулятор громкости PulseAudio )для маршрутизации входного звука на выход на микшере. Однако, если у вас есть, например. USB-микрофон, то звук нельзя просто микшировать, но какое-то программное обеспечение должно записывать звук, а затем воспроизводить его в выходной поток. И в зависимости от вашего оборудования эта запись + воспроизведение может вызвать некоторую (или даже большую )задержку.

Вы можете попробовать это:

Сначала получите имена входов и выходов, которые вы хотите использовать:

$ pactl list short | egrep "alsa_(input|output)" | fgrep -v ".monitor"

для меня результаты выглядят так:

0   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
0   alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono module-alsa-card.c  s16le 1ch 44100Hz   SUSPENDED

, что означает, что мое устройство вывода называется alsa_output.pci-0000_00_1b.0.analog-stereo, а моя веб-камера/микрофон USB называется alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono.

Теперь я могу записывать USB-микрофон и выводить его на аудиовыход вот так:

$ pacat -r --latency-msec=1 -d alsa_input.usb-Microsoft_Microsoft___LifeCam_HD-5000-02.analog-mono | pacat -p --latency-msec=2 -d alsa_output.pci-0000_00_1b.0.analog-stereo

То есть один pacatпроцесс считывает данные с микрофона и запрашивает аудиостек, чтобы попытаться уменьшить задержку до 1 мс или 0,001 секунды. А другой процесс pacatзаписывает звук на мое устройство вывода и пытается довести задержку до 2 мс или 0,002 секунды. Вы также можете попробовать уменьшить задержку вывода до 1 мс, но, по крайней мере, для моего довольно старого оборудования в этом случае аудиоклипы слишком легко обрываются.

Однако, если я оставляю эту комбинацию записи и воспроизведения в течение длительного времени, кажется, что задержка медленно увеличивается с течением времени. Я предполагаю, что часы моего USB-микрофона немного быстрее моих выходных звуковых часов, что приводит к медленному увеличению буфера. Я не знаю хорошего способа разрешить этим процессам pactl пропускать звук, чтобы сохранить вывод в реальном времени. Думаю, мне нужно будет написать специальное приложение для этого.

Для приведенного выше конвейера pacat... | pacatнаилучшая задержка для моего оборудования составляет около 6 мс от звуковых волн, попадающих в микрофон, до звуковых волн, излучаемых выходными динамиками при использовании ядра Linux с включенным PREEMPT (, например. Ядро Ubuntu linux-lowlatency).

1
29.09.2021, 09:41

Теги

Похожие вопросы