Eu preciso obter as amostras de áudio reais enviadas para uma placa de som específica. Atualmente estou usando uma distro Debian com Alsa. Minhas pesquisas falharam, talvez devido a palavras-chave erradas.
Não quero gravar o áudio, só preciso das amostras em tempo real acessíveis a partir do meu aplicativo (o melhor é C++, mas também o Python está ok). Roubar a saída da placa de som alvo também é aceitável se não for possível obter amostras ao mesmo tempo em que são enviadas para ela.
Se você precisar de outras informações, por favor me diga nos comentários.
"Gravar" e "acessar as amostras em tempo real" são basicamente a mesma coisa.
O Debian tem o Pulseaudio habilitado por padrão, então a maneira mais simples é gravar (ou "acessar as amostras") da
.monitor
fonte associada do coletor Pulseaudio da sua placa de som. Isso funcionará fora da caixa.Do coletor Pulseaudio, as amostras passam pelo ALSA e são enviadas para o cartão, então há um pequeno atraso. Mas as amostras serão as amostras exatas enviadas.
Provavelmente existem outras maneiras de fazer isso, mas todas são muito mais complicadas, e algumas dependem do tipo de placa de som que você possui.
Com relação ao atraso, você também deve ter em mente que "acessar as amostras" envolverá armazenamento em buffer, portanto, haverá um atraso, não importa o que você faça.
Se você tiver requisitos mais específicos, explique seu caso de uso com mais detalhes.
Editar
Fontes e coletores de áudio de pulso não são arquivos, mas "objetos" que representam, bem, fontes de áudio (físicas, como microfones em suas placas de som, bem como virtuais) e coletores de áudio (físicos, como os alto-falantes conectados à sua placa de som, bem como virtuais). uns).
Cada coletor do tipo Pulseaudio
some-source-name
tem uma fonte associadasome-source-name.monitor
. Usando a biblioteca Pulseuadio do C++, do Python ou de qualquer linguagem que desejar, você pode se conectar a esta fonte e obter amostras em tempo real que refletem o que for colocado nesse coletor.Novamente, nenhum arquivo envolvido, nem WAV nem qualquer outro formato. O que acontece internamente é que seu aplicativo se comunica com o demônio Pulseaudio e obtém um buffer com amostras em intervalos regulares.
A biblioteca não é trivial de usar, dê uma olhada em alguns exemplos de código.