Передача звука с микрофона на желаемое устройство вывода на Linux.

05. января 2020 Linux 0

В данной заметке будет рассмотрен простейший вариант передачи звука с микрофона на выбранное устройство вывода, например на колонки (импровизированное караоке, почему бы и нет?). Кстати, это может быть хорошим вариантом для организации подсказок во время игровой сессии в VR от оператора игроку в наушниках.

arecord — утилита командной строки, позволяющая записывать звук посредством ALSA.

aplay — утилита командной строки, позволяющая воспроизводить запись из файла. Если не указывать файл, то воспроизведение будет вестись со стандартного или выбранного вручную устройства вывода.

Обозначенные утилиты имеют довольно широкие возможности, но ограничимся конкретной задачей.

 

Команда для начала записи с одновременным выводом:

arecord -f cd | aplay

-f — формат записи.

cd — набор параметров качества записи, под которым подразумевается стандартное CD-качество: 16 bit little endian, 44100, stereo. Представляет собой следующий набор параметров: -f S16_LE -c2 -r44100

-f S16_LE — 16 бит.

-c2 — 2 канала (стерео).

-r44100 — частота дискретизации.

aplay — воспроизводит запись.

Необходимо выполнить команду в терминале и в звуковом микшере выбрать желаемое устройство ввода и вывода.


Для завершения записи-воспроизведения достаточно подать сигнал прерывания: Ctrl + C.

 

Если задержка вывода покажется неудовлетворительной, то стоит попробовать следующие значения:

arecord -f cd --period-size=128 | aplay --buffer-time=50000

—period-size — время между прерываниями в миллисекундах. Чем меньше значение, тем выше нагрузка на процессор, но меньше задержка. При низких значениях могут появиться хрипы. В ходе тестирования значение 128 показало себя неплохим компромиссом.

—buffer-time — продолжительность буфера в миллисекундах. Увеличение значения снижает хрипы, но увеличивает задержки. При низких значениях, кроме появления хрипов, нарушается стабильность работы утилиты. В ходе тестирования значение 50000 показало себя хорошим вариантом.

 

Вот и вся хитрость.


Добавить комментарий

Ваш адрес email не будет опубликован.