사운드 카드로 전송된 오디오 샘플 가져오기

사운드 카드로 전송된 오디오 샘플 가져오기

실제 오디오 샘플을 특정 사운드 카드로 보내야 합니다. 현재 저는 Alsa와 함께 데비안 배포판을 사용하고 있습니다. 검색에 실패했습니다. 키워드가 잘못되었기 때문일 수 있습니다.

오디오를 녹음하고 싶지는 않습니다. 단지 내 애플리케이션에서 샘플에 실시간으로 액세스하면 됩니다(C++가 바람직하지만 Python도 작동함). 샘플을 대상 사운드 카드로 보내는 동안 샘플을 얻을 수 없는 경우 대상 사운드 카드의 출력을 훔치는 것도 허용됩니다.

추가 정보가 필요하면 댓글로 알려주시기 바랍니다.

답변1

"녹음"과 "샘플에 대한 실시간 액세스"는 기본적으로 동일합니다.

Pulseaudio는 Debian에서 기본적으로 활성화되어 있으므로 가장 쉬운 방법은 .monitor사운드 카드의 Pulseaudio 싱크와 연결된 소스에서 녹음(또는 "샘플에 액세스")하는 것입니다. 이것은 즉시 작동합니다.

샘플이 Pulseaudio 수신기에서 ALSA를 거쳐 카드로 이동할 때 약간의 지연이 있습니다. 그러나 샘플은 보낸 샘플과 정확히 동일합니다.

이를 수행하는 다른 방법이 있을 수 있지만 모든 방법은 훨씬 더 복잡하며 일부는 사용 중인 사운드 카드 유형에 따라 다릅니다.

대기 시간과 관련하여 "샘플 액세스"에는 버퍼링이 포함된다는 점도 기억해야 합니다.~ 할 것이다무슨 일을 하든 미루세요.

더 구체적인 요구사항이 있는 경우 사용 사례를 더 자세히 설명해 주세요.

편집하다

Pulseaudio 소스 및 싱크는 파일이 아니라 오디오 소스(사운드 카드의 마이크와 같은 물리적 소스 및 가상 소스) 및 오디오 싱크(사운드 카드에 연결된 스피커와 같은 물리적 소스)를 나타내는 "객체"입니다. , 가상 소스도 포함).

각 Pulseaudio 수신기에는 some-source-name관련 소스가 있습니다 some-source-name.monitor. C++, Python 또는 원하는 언어로 Pulseuadio 라이브러리를 사용하면 이 소스에 연결하고 이 싱크에 넣은 내용을 반영하는 샘플을 실시간으로 얻을 수 있습니다.

다시 말하지만, WAV이든 다른 형식이든 파일은 관련되지 않습니다. 내부적으로 일어나는 일은 애플리케이션이 Pulseaudio 악마와 통신하고 주기적으로 샘플이 포함된 버퍼를 가져오는 것입니다.

이 라이브러리를 사용하는 것은 간단하지 않습니다. 몇 가지 샘플 코드를 살펴보세요.

관련 정보