В вашем регулярном выражении вы разрешаете произвольное количество пробелов -символов после двоеточия ("file:*" ). Возможно, вы захотите расширить это до общего пробельного символа ("\s" ), чтобы разрывы строк и табуляции обрабатывались "как пробелы".
Вы должны иметь возможность контролировать свой микрофон с помощью модуля кольцевой проверки PulseAudio . Модуль должен автоматически создавать петлевые выходы для доступных устройств ввода. Чтобы загрузить модуль вручную
pactl load-module module-loopback
Чтобы сделать изменение постоянным, добавьте /etc/pulse/default.pa
к
load-module module-loopback
Если у вас есть аналоговый вход и аналоговый выход, я бы рекомендовал просто использовать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
).