Como minha entrada de áudio sempre pode ser o microfone da webcam?

14

Cada vez que eu quero usar o Skype, tenho que ir nas preferências de som. E aí, vire a entrada de áudio para " webcam " e desmarque o botão " silenciar ". É muito chato. Existe uma maneira de manter sempre a mesma configuração?

Gizmoatwork
fonte
1
Eu também tenho esse problema com um quickacam da Logitech. Após cada reinicialização, tenho que passar pelas preferências e redefini-la como a entrada padrão para que funcione. Eu acho que tem algo a ver com o fato de que os dispositivos USB são carregados após as preferências de som serem definidas, para que o pulso ou o alsa não "vejam" o microfone USB. Infelizmente, porque o "problema" não é realmente um problema, apenas um inconveniente, não é tão importante que eu queira arregaçar as mangas da camisa e começar a cavar e editar os arquivos de configuração.

Respostas:

14

Alterando as configurações padrão do PulseAudio

Ao executar o pulseaudio, todas as configurações podem ser definidas colocando os arquivos de configuração personalizados no .pulsediretório oculto da sua HOME. Se esses arquivos ainda não existirem, você poderá usar os arquivos padrão /etc/pulse/como modelo. A maioria das entradas possui explicações verbais nesses arquivos.

  • ~/.pulse/default.pa carregar módulos e definir padrões
  • ~/.pulse/client.conf configurar um cliente para o servidor de som
  • ~/.pulse/daemon.conf definir taxas de amostragem e buffers

Para tornar sua webcam a fonte padrão, precisamos saber o nome e o número dessa fonte, consultando a lista produzida pelo seguinte comando em um terminal:

pacmd list-sources

Em seguida, editamos a seguinte linha em ~/.pulse/default.pa:

set-default-source [name]

e substitua [name]pelo nome ou pelo número da fonte da fonte desejada. Em seguida, precisamos garantir que a fonte não fique emudecida adicionando esta linha:

set-source-mute [name]|[#n]> 0

Dê o nome ou o índice da sua fonte. Você pode adicionar uma variedade de outras configurações referenciadas no PulseAudio Wiki (agora na página de manual:) man pulse-cli-syntax.

É recomendável primeiro testar todos os comandos através da interface da linha de comandos antes de alterar os arquivos de configuração. Isso pode ser aberto com pacmd um terminal

Takkat
fonte
Não há default.pa na minha pasta .pulse. Devo criar um novo arquivo com uma linha: set-default-source x?
você
3
@ToDo as configurações padrão estão em /etc/pulse/default.pa. Use este arquivo ou copie-o ~/.pulseantes de editar.
Takkat 17/03/12
Por uma questão de completude: é preciso escrever como nome do dispositivo de entrada o que está escrito dentro das chaves angulares da saída de pacmd list-sources. Ou seja, com o meu dispositivo era set-default-source alsa_input.usb-0d8c_USB_PnP_Sound_Device-00-Device.analog-mon.
Hi-Angel
@ Hi-Angel: obrigado por isso - a resposta veio de uma versão muito mais antiga do pulseaudio. Agora podemos usar o nome próprio de uma pia.
Takkat 13/11/2015
6

Concordo que o problema é que o Pulseaudio não define um dispositivo USB como padrão porque ele não está presente quando o pulso é iniciado.

Soo minha solução para isso é para ligar para o sistema que faz aviso quando um dispositivo USB é conectado ... UDEV!

BTW, essas instruções são um pouco descoladas, e eu suponho que você esteja confortável fazendo coisas na linha de comando e se tornando o usuário root para atualizar arquivos do udev e tornando os scripts executáveis.

Primeiro, descubra coisas

ID do USB

O primeiro passo é conectar sua webcam e encontrar o número mágico do fornecedor e do produto digitando

lsusb

Estou usando um Microsoft Lifecam, e ele aparece como

Bus 001 Device 013: ID 045e:072d Microsoft Corp.

a parte importante é 045e: 072d

Dispositivo Pulseaudio

Em seguida, enquanto a webcam estiver conectada, descubra o nome do dispositivo pulseaudio. Tipo

pacmd list-sources

Mais uma vez, estou procurando a linha que começa name:e, em seguida, tem algo sobre um Microsoft Lifecam ... aqui está

name: <alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono>

então o nome do meu dispositivo pulseaudio será alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Regras UDEV

Em seguida, criei uma nova regra do udev que é acionada quando um dispositivo USB com fornecedor = 045e e produto = 072d é inserido. Para fazer uma regra, crie um novo arquivo chamado /etc/udev/rules.d/ALGO.rules (chamei meu arquivo /etc/udev/rules.d/95-webcam-mic.rules).

Coloque esta linha no arquivo

SUBSYSTEMS=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="072d", ACTION=="add", GROUP="audio", RUN+="/usr/local/bin/webcam-mic"

Lembre-se de substituir ATTR {idVendor} e ATTR {idProduct} pelos valores da sua webcam.

O que essa regra faz é executar um script para definir o dispositivo USB para entrada, essa é a RUN+="/usr/local/bin/webcam-mic"parte.

Por fim, configure a webcam para entrada

Tempo de visão geral rápida. Cada vez que conecto minha webcam, desejo executar o comando

pacmd set-default-source alsa_input.usb-Microsoft_Microsoft___LifeCam_VX-5500-02-VX5500.analog-mono

Mas o comando precisa ser executado como eu (o usuário que está executando a área de trabalho), mas o udev é executado como usuário root - portanto, quando o udev executa meu comando, preciso que ele mude para meu usuário e execute o comando.

Então, temos 2 opções.

  1. Rápido e sujo . Faça a regra do udev rodar, su james -c pacmd set-default-source... isso é tão errado que eu nem consigo terminar de digitar o comando. E se você mudar de webcam? E se você instalar isso para outro usuário?

  2. Ligeiramente mais limpo . Execute um script que leia um arquivo padrão com o nome do dispositivo pulseaudio e seu nome de usuário. Se você quiser os arquivos, eles estão no GitHub. Primeiro o script /usr/local/bin/webcam-mic. O arquivo padrão /etc/default/webcam-micsó precisa definir as 2 variáveis ​​do shell, conforme o comentário na lista principal. Coloque o script /usr/local/bin/e torne-o executável. Em seguida, coloque o arquivo padrão /etc/defaults/e edite-o para usar seu nome de usuário e o dispositivo pulseaudio anteriores.

Boa sorte!

James Mitchell
fonte
Qualquer chance de você poder enviar esses scripts novamente; eles parecem ter desaparecido de pastebin?
ej159
Coloquei o script em uma essência no GitHub e atualizei a resposta.
James Mitchell
2

A solução de Takkat não estava funcionando para mim, aqui está a minha solução para quem ainda está tendo um problema com isso.

Havia dois problemas para mim com a solução de Takkat. Primeiro, percebi que é preciso haver um atraso após a inicialização antes que a mudança para o microfone possa ocorrer (eu uso o comando 'suspensão' na minha solução abaixo). Além disso, o comando 'set-default-source' estava funcionando para ligar o microfone USB, mas de alguma forma o Skype não estava reconhecendo isso e continuou a usar o microfone interno.

Para que isso funcione, primeiro é útil instalar o pavucontrol. No pavucontrol, abra a guia 'Configuração' e observe o que acontece com os comandos abaixo para verificar se as coisas estão funcionando conforme o esperado.

Em seguida, de um terminal, digite:

pacmd

A partir daí, digite:

list-cards

Na saída, encontre o número de índice do áudio USB que você deseja (no meu caso, era '1'). Dê uma olhada nas linhas listadas em 'perfis' para o cartão padrão e o cartão USB. Devem ser iguais aos listados no pavucontrol e podem ser algo como 'ouput: input + output', 'off' ou 'input: analog-mono' etc. Ainda na linha de comando pacmd, o comando set-card-profile <index number> <profile name>deve mudar as configurações no pavucontrol. O que queremos fazer aqui é mudar o áudio interno de duplex para somente saída e o USB para entrada.

Depois de encontrar os perfis apropriados, queremos criar um comando de inicialização para alterar algumas configurações logo após a inicialização. Para criar um comando de inicialização, abra o traço e procure por 'aplicativos de inicialização', clique em 'adicionar', digite um nome de sua escolha e o comando apropriado abaixo.

Após tentativa e erro, meu comando de inicialização acabou assim:

bash -c "sleep 30 && pacmd set-card-profile 0 output:analog-stereo && pacmd set-card-profile 1 off && pacmd set-card-profile 1 input:analog-mono"

Explicação: Descobri que o comando 'sleep' era necessário, o que significa que o comando é executado após uma pausa, que defini para 30 segundos (acho que isso pode ser menor, brinque com isso). O próximo comando (depois de '&&') é fazer com que o perfil do cartão (interno) padrão mude de entrada + saída (duplex, que é o padrão) para somente saída. O próximo comando é para a placa de som USB (no meu caso, o número é '1') para desligar. O último comando é que esse mesmo cartão seja reativado no modo 'input: analog-mono'

Você pode ter que brincar com essas configurações, para encontrar a que funciona.

Agora, quando eu inicializo, meu microfone USB está pronto para uso após 30 segundos, e o Skype usa o microfone correto.

geoffrey
fonte
0

tente isso, clique no ícone do alto-falante no painel superior, nas preferências de clique. lá você pode selecionar uma opção de entrada padrão para o seu microfone e provavelmente alterar algumas configurações de hardware para fazê-lo funcionar corretamente.

helios66
fonte
1
Obrigado por sua ajuda, mas é isso que estou fazendo agora. No entanto, não vejo nenhuma maneira de tornar isso uma configuração padrão. De vez em quando, precisarei fazer isso novamente porque a configuração teria mudado.
Gizmoatwork 21/03