ALSA — нижний слой звуковой подсистемы Linux. Даже если поверх работают PipeWire или PulseAudio, приложения в итоге общаются с ядром через ALSA, а утилиты aplay и arecord позволяют проверить тракт без графики. Это удобно на сервере, в ssh-сессии, при отладке микрофона и при записи с линейного входа. Ниже — команды для перечисления устройств, записи и воспроизведения, управления микшером и разбора типичных ошибок.
Какие устройства видит система
Начните с карт и их номеров. Файл /proc/asound/cards показывает соответствие индексов и названий, aplay -l перечисляет устройства воспроизведения, arecord -l — устройства записи. Обозначение plughw:1,0 означает карту 1, устройство 0; префикс plug разрешает автоматическое преобразование формата и частоты.
cat /proc/asound/cards
aplay -l
arecord -l
aplay -L
Список aplay -L показывает уже именованные PCM: default, sysdefault, hw, а при установленном PipeWire — ещё и его маршруты. Для повседневных задач достаточно default, для точной проверки железа — hw без программных преобразований.
Запись с микрофона
Команда arecord принимает формат, длительность и контейнер. Сокращение cd означает 16 бит, 44,1 кГц, два канала; dat — 16 бит, 48 кГц, два канала. Для голоса часто достаточно моно 48 кГц, для музыки лучше сразу писать без потерь.
arecord -f cd -d 15 -t wav ~/test-cd.wav
arecord -D plughw:1,0 -f dat -c 2 -d 10 ~/line-in.wav
arecord -f S24_3LE -r 96000 -c 2 -d 20 ~/hi-res.wav
arecord -vv -f cd -d 5 ~/level-test.wav
Флаг -vv рисует индикатор уровня: если полоска стоит на нуле, проверьте Capture в микшере и права на устройство. Запись с plughw спасает, когда карта не поддерживает выбранную частоту, но именно из-за преобразования можно не услышать реальное качество тракта.
Воспроизведение
aplay проигрывает WAV и RAW. Для проверки каналов удобна speaker-test: она по очереди подаёт сигнал на каждый канал и помогает понять, не перепутаны ли левый и правый. Если файл не играет, сначала проверьте, что он действительно WAV, а не MP3 с другим расширением.
aplay ~/test-cd.wav
aplay -D plughw:0,0 ~/test-cd.wav
speaker-test -D default -c 2 -t sine -l 1
aplay --dump-hw-params ~/test-cd.wav
--dump-hw-params печатает поддерживаемые форматы, частоты и число каналов для выбранного устройства. Это самый быстрый способ понять, почему карта отказывается принимать 96 кГц или многоканальный поток.
Микшер и сохранение настроек
Уровни задаются через amixer в терминале или alsamixer в псевдографике. Изменения живут до перезагрузки, если их не сохранить. Команда alsactl store записывает состояние, alsactl restore возвращает его; в большинстве дистрибутивов это делает служба alsa-restore при загрузке.
amixer -c 0 sget Master
amixer -c 0 sset Master 60%
amixer -c 0 sset Master mute
alsamixer -c 0
sudo alsactl store
Имя регулятора зависит от карты: это может быть Master, PCM, Headphone или Capture. Посмотреть полный список позволяет amixer -c 0 scontrols. Если после перезагрузки громкость сбрасывается, проверьте, включена ли служба alsa-restore.service и существует ли файл состояния.
Форматы и конвертация
ALSA умеет немного: записать и проиграть поток. Для обрезки, склейки и смены формата используют sox или ffmpeg. Это удобно, когда нужно привести запись к единому виду перед публикацией или отдать её в редактор.
sox ~/test-cd.wav -r 48000 -c 1 -b 16 ~/voice.wav
sox ~/voice.wav ~/voice.flac
ffmpeg -f alsa -i default -t 10 ~/capture.wav
ffmpeg -i ~/test-cd.wav -ar 48000 ~/out.wav
При конвертации следите за уровнем: повышение громкости после записи не уберёт клиппинг, а лишь усилит искажения. Лучше оставить запас 3–6 дБ при записи.
PipeWire и PulseAudio
В современных дистрибутивах default обычно указывает не на железо, а на звуковой сервер. Тогда aplay и arecord работают через совместимый слой, а маршрутизацией управляет PipeWire. Проверить это можно по списку устройств и статусу служб.
wpctl status
pactl list short sinks
pactl list short sources
systemctl --user status pipewire wireplumber
Если wpctl status показывает устройство, а aplay молчит, проверьте громкость и выбранный по умолчанию выход. Для записи системного звука нужен monitor-источник, а не микрофон: его видно в pactl list short sources как .monitor.
Типичные ошибки
Device or resource busy: устройство занято другим приложением, проверьтеfuser -v /dev/snd/*.No such file or directory: неверный номер карты, сверьтесь сaplay -l.- Щелчки и пропуски: перегрузка CPU или слишком маленький буфер, попробуйте
--buffer-size. - Нет прав: обычно доступ выдаётся через logind, но в некоторых системах требуется группа
audio; запуск от root не нужен. - Микрофон пишет тишину: выбран не тот вход или выключен
Captureв микшере.
fuser -v /dev/snd/*
groups
cat /proc/asound/card0/pcm0p/sub0/hw_params
dmesg | grep -i snd
Файл hw_params показывает, в каком формате устройство работает прямо сейчас. Если там closed, поток уже завершён; если параметры отличаются от ожидаемых, вмешался звуковой сервер или преобразование plug.
Проверка тракта по шагам
- Убедитесь, что карта видна в
/proc/asound/cards. - Проверьте уровень и отсутствие mute в
alsamixer. - Запишите пять секунд с
-vvи посмотрите индикатор. - Проиграйте файл через
aplayна том же устройстве. - Сравните частоту и формат с
--dump-hw-params. - Сохраните настройки через
alsactl store.
Такой порядок отсекает большинство проблем: если запись слышна, а воспроизведение нет, дело в выходе или микшере, а не в микрофоне. Если не работает и то и другое, проверьте, не занято ли устройство другим приложением, и загляните в dmesg после подключения карты. Для внешней USB-гарнитуры полезно сразу сравнить arecord -l до и после подключения: иногда система создаёт новую карту, и старый номер устройства перестаёт быть верным.
Итог
ALSA из терминала — это четыре инструмента: aplay, arecord, amixer и alsactl. Они позволяют за пять минут проверить железо, записать голос, выставить уровень и сохранить настройки. Если звук идёт через PipeWire, те же команды работают через совместимый слой, но диагностику маршрутов удобнее вести через wpctl и pactl.