Resolvi minha gravação de áudio sendo gravada removendo pulseaudio
Tenho tido problemas com o meu áudio. Quando capto áudio, estou capturando áudio de reprodução, a menos que eu especifique o dispositivo correto (veja abaixo). Então, em vez de meu microfone USB ser capturado, o som sendo reproduzido através dos fones de ouvido está sendo capturado.
Não sei ao certo o que está acontecendo e como corrigi-lo. Eu estou usando ALSA e Pulseaudio, e meu asound.conf é o padrão gerado pelo Pulseaudio. Saída de 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
Saída de amixer -c0 contents
: link
Para gravar som ao testar meu microfone, usei audácia com o dispositivo de gravação definido como Samson C01U:USB Audio (hw:2,0): Front Mic:0
e usei um registro com arecord -d 2 -D hw:2,0 -f cd test.wav
. Ambos gravam o som do meu microfone, no entanto, quando reproduzindo o som de arecord
, ele toca apenas pela esquerda dos meus fones de ouvido.
Eu também notei outro problema. Horas extras (especialmente quando estou brincando com meus níveis de áudio) Eu começo a ouvir alguma estática quando ouço áudio. Às vezes é muito fraco e outras vezes é muito alto. Isso nunca aconteceu comigo. Eu posso resolver isso reiniciando pulseaudio, mas é irritante fazer isso.
Meu /etc/asound.conf
: link . Eu não tenho um ~/.asoundrc
.
Ok, visão geral rápida de como as coisas funcionam.
Sua placa de som Intel HDA possui uma conexão digital com um chip "codec", que contém os conversores D / A e A / D, os mixers analógicos, os amplificadores analógicos e os switches analógicos. O ALSA possui drivers de kernel para as placas de som e atribui os elementos do mixer que você pode ver em amixer
para controlar algumas (mas não todas) as coisas no codec.
Você pode configurar o ALSA com "plugins" por meio de todo o sistema /etc/asound.conf
ou por usuário ~/.asoundrc
.
O Pulseaudio é executado sobre o ALSA e apresenta um mecanismo de transporte de áudio unificado para aplicativos. Ele cuida da conversão da taxa de amostragem, etc., o que torna o Pulseaudio muito mais agradável de usar (em princípio) do que o ALSA. A configuração padrão é que o Pulseaudio apresenta uma camada de compatibilidade para aplicativos legados do ALSA com entradas como
pcm.!default pulse
ctl.!default pulse
Eles definem a entrada e a saída padrão do ALSA de forma que os aplicativos ALSA sejam tratados como aplicativos Pulseaudio. Então, quando você usa arecord
ou audacity
(buth aplicativos ALSA) com a entrada ALSA padrão, você está realmente usando o Pulseaudio (você também pode usar parecord
para acessar diretamente o Pulseaudio). Mas quando você seleciona hw:XXX
, você está gravando diretamente dos drivers da ALSA.
O Pulseaudio tem seu próprio conceito (muito flexível) de fontes e pias de áudio. Você pode ver (e modificar) quais aplicativos estão conectados a quais fontes e coletores usando pavucontrol
(e em muitos ambientes de área de trabalho e painel de área de trabalho semelhante).
Portanto, se você executar arecord
e assistir com pavucontrol
, ele deverá aparecer e gravar da origem que pertence à placa de som Intel HDA (geralmente "Estéreo analógico de áudio incorporado").
Por que ele grava o som que é reproduzido ao mesmo tempo? Seria necessário examinar o codec em mais detalhes (você pode fazer isso com cat /proc/asound/card*/codec\#*
), mas há um controle de mixer chamado "Loopback mixing" na sua saída amixer
, e está habilitado. Então, eu acho que o seu codec contém um recurso que permite gravar o som que é atualmente emitido. Desativar em alsamixer
e ver se alguma coisa muda.
Como configuro para gravar automaticamente a partir do Samson USB Mic? Você pode configurar os padrões no ALSA, mas se quiser manter o Pulseaudio, você deve configurar o Pulseaudio. Você pode selecionar fontes de áudio por aplicativo em pavucontrol
quando o aplicativo está sendo executado e o Pulseaudio se lembra das configurações. Você também pode definir a fonte de áudio padrão clicando em "set as fallback" na guia Input , ou use pacmd set-default-source my_source
na linha de comando. pacmd list-sources | grep name:
fornecerá uma lista de fontes disponíveis. Solte os colchetes angulares ao usar o nome da fonte na linha de comando.
Editar
Cada coletor Pulseaudio tem uma fonte .monitor
associada. Então, o que está acontecendo é que, por algum motivo, o Pulseaudio não pode obter nenhuma entrada ALSA, por isso não pode fazer fontes correspondentes, então a única fonte que resta é a .monitor
source, que produz o som atualmente reproduzido. de volta. Portanto, não há loop interno no codec (embora isso possa ser outra maneira de gravar o som atualmente reproduzido).
O que significa que você tem que depurar porque o Pulseaudio não pode criar fontes correspondentes a entradas ALSA, embora ele crie um dmix
sink, o que também não deveria - isso deve ser um coletor de hardware.
Por favor, forneça o /etc/asound.conf
e ~/.asoundrc
como primeiro passo. Antes de iniciar o Pulseaudio, já existem programas em execução que usam o ALSA diretamente e impedem que o Pulseaudio use as entradas / saídas de hardware?
Tags alsa linux arch-linux pulse-audio