Olá, pessoal!
Vou compartilhar aqui uma solução (na verdade DUAS soluções!) de um problema que me assola há anos!
O problema:
Versões mais recentes do pulseaudio deixaram de reconhecer o microfone que é conectado na frente do PC ( um PC comum com audio Intel on-board), e o pipewire também vai na mesma onda. Para o microfone funcionar, eu tomava soluções drásticas como remover o pipewire ou pulseaudio e usar o velho ALSA puro. Eu até descrevi essa solução mais drástica há um tempo aqui mesmo no fórum ( https://forum.biglinux.com.br/d/678-dica-problemas-insolucionaveis-na-placa-de-som-troque-o-pulseaudio-pelo-alsa )
Hoje eu descobri como mexer na configuração do pipewire para então o microfone funcionar sem precisar desinstalar nem instalar nadinha da silva!
Temos duas opções para fazer o seu microfone funcionar:
A - Habilitar o microfone manualmente no Pipewire
ou
B- Alterar o sistema de detecção de dispositivos de som pelo Pipewire.
OBS: antes de fazer qualquer alteração no seu sistema, certifique-se que o seu hardware e o seu microfone realmente funcionam! Como fazer isso? Teste no Windows ou numa distro antiga, ou ainda num outro PC ou notebook.
De nada adiantaria fazer esses testes se o teu microfone estiver quebrado…
Método A: Para habilitar manualmente o microfone no Pipewire:
Primeiro precisamos rodar um comando para o sistema nos dizer quais são os dispositivos de captura que há no sistema:
$ arecord -l
O terminal mostrará uma listagem com uma ou mais linhas assim:
card X: (nome da placa de som), device Y: (nome do recurso da placa)
Onde essa linha poderá se repetir com variações em X, onde 0 corresponderia à primeira placa da lista e talvez única placa existente.
Já Y (de 0 em diante) corresponde aos recursos da placa X em questão, tais como som analógico, alternativo etc. Lembrando que o arecord só mostrará os dispositivos de captura de som.
Vamos supor que a lista te deu 2 dispositivos (como no meu caso), onde a primeira linha (ou opção) seria X=0 e Y=0, e a segunda linha seria X=0 e Y=3.
Agora iremos testar essas linhas, uma a uma, para sabermos qual das duas funciona o microfone, com o seguinte comando que gravará um áudio de 5 segundos:
(substitua X e Y do comando antes do enter)
(ao dar enter no comando abaixo, fale logo qualquer coisa junto ao microfone por 5 segundos):
$ arecord --duration=5 --format=dat --device=hw:X,Y test-mic.wav
O comando acima foi para gravar o áudio do dispositivo X,Y.
Agora vamos tocar o áudio gravado para vermos se o microfone funcionou
$ aplay test-mic.wav
Se tocar com a voz que você falou naquela hora, você descobriu o seu microfone. Daí, anote os valores X e Y aprovados.
Se não tocar nada, você deverá repetir o arecord com outros valores X e Y que apareceram na lista gerada inicialmente.
Sabendo dos valores X e Y onde funciona o microfone, crie o seguinte arquivo:
$ sudo touch /etc/pipewire/pipewire.conf.d/microphone.conf
E abra-o para editar
$ kate /etc/pipewire/pipewire.conf.d/microphone.conf
Agora acrescente o seguinte texto no arquivo criado:
context.objects = [
{ factory = adapter
args = {
factory.name = api.alsa.pcm.source
node.name = "microphone"
node.description = "Microfone adicionado manualmente"
media.class = "Audio/Source"
api.alsa.path = "hw:X,Y"
}
}
]
Não se esqueça de substituir os valores X e Y que descobrimos.
Salve o arquivo (vai perdir senha) e feche-o.
Agora rode isso no terminal para reiniciar o Pipewire:
systemctl –user restart pipewire
Agora você verá o seu microfone aparecendo na listagem de dispositivos do mixer.
Deixe-o selecionado na lista do mixer para que ele funcione.
Esse recurso é compatível com o script que o Bruno fez para reduzir o ruído do microfone, onde faz surgir um novo dispositivo de captura chamado “Microfone sem ruídos”.
Teste agora o seu microfone com o gravador de som, audacity, zoom etc
Não funcionou e quer reverter?
Então faça:
$ sudo rm /etc/pipewire/pipewire.conf.d/microphone.conf
$ systemctl –user restart pipewire
Você pode tentar o método abaixo, que é um pouco mais drástico, para fazer o microfone funcionar
Método B: Alterar o sistema de detecção de dispositivos de som pelo Pipewire.
O pipewire usa por padrão um índice do ALSA (Alsa Card Profile - ACP ) para detectar seu hardware de som. Porém, ele pode estar errando em detectar certos dispositivos. Daí, o pipewire possui um sistema de detecção alternativo chamado UCM.
O procedimento a seguir servirá justamente para indicar ao pipewire que use UCM em vez do ACP.
1 - Abra com o kate (Anotações) o seguinte arquivo: /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
$ kate/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
2 - Localize o trecho abaixo:
-- Use ALSA-Card-Profile devices. They use UCM or the profile
-- configuration to configure the device and mixer settings.
["api.alsa.use-acp"] = true,
-- Use UCM instead of profile when available. Can be
-- disabled to skip trying to use the UCM profile.
--["api.alsa.use-ucm"] = false,
3 - Você irá alterar as seguintes frases do trecho acima:
3.1 - para desabilitar o ACP:
de
["api.alsa.use-acp"] = true,
para
["api.alsa.use-acp"] = false,
3.2 - para habilitar o UCM:
de
--["api.alsa.use-ucm"] = false,
para
["api.alsa.use-ucm"] = true,
Então, salve o arquivo (o sistema pedirá a senha)
4 - Para a alteração fazer efeito, vamos reiniciar o pipewire.
Mande ver num terminal:
$ systemctl --user restart pipewire
5 - Agora vá num terminal e abra o alsamixer, pois precisamos fazê-lo funcionar 100%, já que o pipewire agora está usando o UCM e parece não mais interagir com o ALSA:
Clique em F6 e selecione o seu hardware de som (geralmente Default:0 bla bla bla)
Aperte F3 para ajustar os volumes de reprodução (geralmente aparece sozinho)
Ajuste Master, Headphone, PCM, Surround, Center, LFE para 100%
Aperte F4 para ajustar os volumes de captura
Ajuste Capture para 100% e ajuste o Input Source para Front Mic
Aperte ESC para sair do Alsamixer
Daqui pra frente, os níveis de volume serão controlados normalmente por meio do ícone de volume do sistema e dos programas.
Pronto, agora vá dar uma olhada na dispositivos quando você clica no ícone de volume. Você vai ver que tem uma lista grande de troços agora e você deverá escolher um dispositivo de saída (para tocar) e outro de entrada (para capturar), que nesse caso está sendo o microfone frontal. No meu caso, deixei selecionado “Áudio interno” para reprodução (ícone do autofalante) e também “Áudio interno” para gravação (ícone do microfone). Recomendo que teste tudo relacionado ao som no seu sistema.
O script que o Bruno fez para reduzir o ruído também funciona aqui nessa modalidade, fazendo com que apareça (e seja selecionado) mais um dispositivo de gravação chamado “Microfone sem ruídos”
6 - “Não deu certo. Quero a configuração original de volta!”
Basta desfazer os passos que citei acima:
- abra o arquivo /usr/share/wireplumber/main.lua.d/50-alsa-config.lua
- colocar false na parte do UCM e comentar a linha com dois traços (–)
- colocar true na parte do ACP
- salvar o arquivo
- reiniciar o pipewire com systemctl –user restart pipewire
Tomara que isso ajude!
Fui!
Fonte para consulta: https://wiki.archlinux.org/title/PipeWire