Звук воспроизведения записывается

831
wdhg

У меня были проблемы с моим аудио. Когда я записываю звук, я записываю звук воспроизведения, если не укажу правильное устройство (см. Ниже). Таким образом, вместо захвата моего USB-микрофона воспроизводится звук, воспроизводимый через мои наушники.

Я не уверен, что происходит и как это исправить. Я использую ALSA и Pulseaudio, и мой asound.conf по умолчанию генерируется Pulseaudio. Выход cat /proc/asound/cards:

0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf7910000 irq 29 1 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xf7080000 irq 17 2 [C01U ]: USB-Audio - Samson C01U Samson Technologies Samson C01U at usb-0000:00:14.0-9, full speed 

Вывод amixer -c0 contents: https://pastebin.com/cyERFpPk

Для записи звука при тестировании моего микрофона я использовал audacity с устройством записи, установленным на, Samson C01U:USB Audio (hw:2,0): Front Mic:0и использовал arecord with arecord -d 2 -D hw:2,0 -f cd test.wav. Оба записывают звук с моего микрофона, однако при воспроизведении звука с arecordнего он воспроизводится только через левый угол моих наушников.

Я также заметил другую проблему. Сверхурочные (особенно когда я играю с моими уровнями звука), я начинаю слышать некоторую статичность при прослушивании звука. Иногда он очень слабый, а иногда очень громкий. Это никогда не случалось со мной. Я могу решить эту проблему, перезапустив pulseaudio, но это раздражает.

Мой /etc/asound.conf: https://pastebin.com/2XSEhfHb . У меня нет ~/.asoundrc.

1
Пожалуйста, добавьте подробную информацию о вашей конфигурации, если вы используете ALSA или Pulseaudio, и как именно вы делаете захват звука. Чем больше деталей, тем лучше; как вопрос, это игра в догадки. Возможные причины: Неправильная настройка захвата звука или аппаратная петля от наушников для захвата канала включена (проверьте с помощью «alsamixer» или «amixer»). dirkt 6 лет назад 0
@dirkt Какие детали конфигурации вам нужны? Я не совсем понимаю Pulseaudio или ALSA или их конфигурацию, поэтому, пожалуйста, извините, если я не даю достаточно информации. wdhg 6 лет назад 0
Пожалуйста: (1) Отредактируйте вопрос с выводом `cat / proc / asound / cards` (2) Определите номер карты в указанном выше выводе с вашими наушниками, скажем` 42`, сохраните вывод `amixer -c42 contents` в и вставьте вопрос со ссылкой. (3) Пошагово опишите, что вы делаете для записи звука («Я использую« Audacity », когда устройство захвата установлено на XXX» или «Я делаю` arecord -d hw: 0 ... `», так далее. ). dirkt 6 лет назад 0
Чтобы уточнить: ваша проблема не в том, что * пока * вы записываете звук, вы слышите что-то в наушниках. Ваша проблема в том, что вы можете прекрасно захватывать звук с Samson, но когда вы * воспроизводите его * через наушники, подключенные к звуковой карте Intel, вы просто слышите его в левом ухе, хотя ожидали услышать его в оба уха. Это правильно? dirkt 6 лет назад 0
Проблема заключается в том, что по умолчанию при захвате звука я записываю звук при воспроизведении, если не укажу правильное устройство. Если я использую команду `arecord -d 2 test.wav` без указания устройства, она записывает звук воспроизведения. Это то же самое с разногласиями, что когда я использую голосовые каналы, все остальные просто слышат мой звук воспроизведения. Когда я могу указать deivce, он работает, но когда он использует мое устройство по умолчанию, он захватывает мой звук воспроизведения. Я хочу исправить это так, чтобы моим устройством по умолчанию был мой USB-микрофон, а не воспроизводимый звук. wdhg 6 лет назад 0

2 ответа на вопрос

1
dirkt

Хорошо, краткий обзор, как все работает.

Ваша звуковая карта Intel HDA имеет цифровое соединение с микросхемой «кодека», которая содержит ЦАП и АЦП, аналоговые микшеры, аналоговые усилители и аналоговые коммутаторы. ALSA имеет драйверы ядра для звуковых карт и назначает элементы микшера, которые вы можете видеть, amixerчтобы контролировать некоторые (но не все) вещи в кодеке.

Вы можете настроить ALSA с помощью «плагинов» для всей системы /etc/asound.confили для отдельных пользователей ~/.asoundrc.

Pulseaudio работает поверх ALSA и представляет единый механизм передачи аудио для приложений. Он заботится о преобразовании частоты дискретизации и т. Д., Что делает Pulseaudio гораздо более приятным в использовании (в принципе), чем ALSA. Стандартная конфигурация состоит в том, что Pulseaudio представляет уровень совместимости с устаревшими приложениями ALSA с такими записями, как

pcm.!default pulse ctl.!default pulse 

Они устанавливают вход и выход ALSA по умолчанию таким образом, что приложения ALSA обрабатываются как приложения Pulseaudio. Поэтому, когда вы используете arecordили audacity(кроме приложений ALSA) со входом ALSA по умолчанию, вы действительно используете Pulseaudio (вы также можете использовать parecordдля прямого доступа к Pulseaudio). Но когда вы выбираете hw:XXX, вы записываете прямо из драйверов ALSA.

Pulseaudio имеет свою (очень гибкую) концепцию аудиоисточников и приемников. Вы можете видеть (и изменять), какие приложения подключены, какие источники и приемники используют pavucontrol(и во многих средах рабочего стола, и на аналогичной панели рабочего стола).

Поэтому, если вы запускаете arecordи смотрите с помощью pavucontrol, он должен отображаться и записываться с источника, принадлежащего звуковой карте Intel HDA (обычно «Встроенный аналоговый стереозвук»).

Почему он записывает звук, который воспроизводится одновременно? Можно было бы взглянуть на кодек более подробно (вы можете сделать это с помощью cat /proc/asound/card*/codec\#*), но в вашем amixerвыводе есть элемент управления микшером, называемый «Loopback смешиванием», и он включен. Поэтому я думаю, что ваш кодек содержит функцию, которая позволяет записывать звук, который выводится в данный момент. Отключите его alsamixerи посмотрите, не изменится ли что-нибудь.

Как настроить автоматическую запись с USB-микрофона Samson? Вы можете настроить значения по умолчанию в ALSA, но если вы хотите сохранить Pulseaudio, вам следует настроить Pulseaudio вместо этого. Вы можете выбрать источники звука для каждого приложения, pavucontrolкогда оно запущено, и Pulseaudio запомнит настройки. Вы также можете установить источник звука по умолчанию, щелкнув «Установить как запасной вариант» на вкладке « Вход », или использовать pacmd set-default-source my_sourceиз командной строки. pacmd list-sources | grep name:даст вам список доступных источников. Отбросьте угловые скобки, когда используете имя источника в командной строке.

редактировать

Каждый приемник Pulseaudio имеет связанный .monitorисточник. Так вот, по какой-то причине Pulseaudio не может получить какой-либо вход ALSA, поэтому он не может создавать соответствующие источники, поэтому единственный источник, который остается, - это .monitorисточник, который выводит звук, воспроизводимый в данный момент. Таким образом, в кодеке нет внутреннего цикла (хотя это может быть другим способом записи воспроизводимого в данный момент звука).

Это означает, что вы должны отладить, почему Pulseaudio не может создавать источники, соответствующие входам ALSA, хотя он создает dmixприемник, чего не следует, - это должен быть аппаратный приемник.

Просьба представить /etc/asound.confи в ~/.asoundrcкачестве первого шага. Перед запуском Pulseaudio уже запущены программы, которые используют ALSA напрямую и не позволяют Pulseaudio использовать аппаратные входы / выходы?

Спасибо за ответ. Поэтому я открыл amixer и выключил «Loopback Mixing», однако звук при воспроизведении все еще записывался. Вот вывод `cat / proc / asound / card * / codec \ # *`: https://pastebin.com/4t4B33kD. Я также открыл `pavucontrol`, и он показывает только одно устройство ввода,« Монитор встроенного звука ». `pacmd list-sources | grep name: `также выводит только один источник:" name:Msgstr "Я не могу сменить устройство ввода / источник на мой микрофон. wdhg 6 лет назад 0
Как узнать, есть ли программа, которая использует ALSA непосредственно перед запуском Pulseaudio? Я не думаю, что есть, но как я могу быть уверен? wdhg 6 лет назад 0
Хороший вопрос. Лучший метод, который я могу придумать, это `lsof | grep / dev / snd`, который должен показывать все процессы, использующие `/ dev / snd / pcm *` (активный ввод / вывод) или `/ dev / snd / control *`. dirkt 6 лет назад 0
Вывод `lsof | grep / dev / sdn`: https://pastebin.com/ehfuku91 wdhg 6 лет назад 0
0
wdhg

Решил, что мой звук воспроизведения записывается путем удаления pulseaudio

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