Linux에서 오디오 녹음 - VoIP 대화의 양면을 모두 캡처합니다.

Linux에서 오디오 녹음 - VoIP 대화의 양면을 모두 캡처합니다.

Audacity(또는 유사한 제품)를 사용하여 팟캐스트 오디오를 녹음하고 싶습니다. 팟캐스트는 SIP(Voice over IP) 통화를 통해 인터뷰를 진행합니다.

여기에서 훌륭한 튜토리얼을 찾았습니다. http://www.linux.com/learn/tutorials/367395-weekend-project-record-from-skype-calls-and-other-apps-on-linux

필요한 대부분의 단계를 제공합니다. 가장 중요한 것은 녹음을 지원하지 않는 앱에서 통화의 양쪽을 모두 캡처하는 방법을 설명한다는 것입니다. "통화의 양쪽을 캡처하는 실제 솔루션은 양쪽에 연결된 가상 PulseAudio 장치를 구축하는 것입니다." 및 "그런 다음 빈 수신기를 녹음하여 결합된 오디오를 단일 파일로 캡처합니다."

하지만 저는 한 가지 다른 일을 하고 싶었습니다. 나는 대화의 오디오가 완전히 "병합"되는 것을 원하지 않습니다. 대화의 한쪽이 한 채널에 있고 다른 쪽이 다른 채널에 있기를 원합니다. 실제로 이것을 할 수 있는 하드웨어 장치가 있는데, 제가 생각한 것은 다음과 같습니다. 장치는 여기에서 찾을 수 있습니다. JK 오디오 인라인 패치:

http://www.jkaaudio.com/inline-patch_dtails.htm

"미니 스테레오 출력 잭, 왼쪽 채널에 발신자, 오른쪽 채널에 로컬 음성"을 제공합니다. 이것은 내가 원하는 것과 매우 유사합니다. 나는 250달러짜리 하드웨어를 구입하지 않고도 튜토리얼에 설명된 대로 이 작업을 수행할 수 있다고 생각했습니다.

원래 튜토리얼 단계는 다음과 같습니다.

pacmd info
cp /etc/pulse/default.pa ~/.pulse/default.pa

그런 다음 즐겨 사용하는 편집기에서 default.pa를 열고 다음과 같은 내용을 추가합니다(pacmd info의 정보를 기반으로).

# set up null sink and loopbacks to record voice calls
load-module module-null-sink sink_name=mywiretap
load-module module-loopback source=alsa_output.pci-0000_00_06.1.analog-surround-40.monitor sink=mywiretap
load-module module-loopback source=alsa_input.pci-0000_00_06.1.analog-stereo sink=mywiretap

튜토리얼에서: 이 설정의 또 다른 장점은 PulseAudio가 애플리케이션 연결 세부 정보를 자동으로 저장하므로 다음에 로그인할 때 녹음 애플리케이션을 빈 출력 모니터에 연결하는 프로세스를 반복할 필요가 없다는 것입니다. 녹음기를 켜고 [인터뷰 대상]에게 전화를 걸어 이야기를 시작하세요…

내 질문은 스테레오 녹음의 한 채널에서 내 오디오를 캡처하고 다른 채널에서 인터뷰 대상의 오디오를 어떻게 캡처합니까? 아니면 Audacity(필요한 경우)를 사용하여 완전히 개별적으로 캡처하려면 어떻게 해야 합니까?

나는 Audacity를 사용하고 있는데 Audacity를 사용하여 두 개의 창을 열고 두 개의 별도 소스를 녹음할 수 없습니다(적어도 이해할 수는 없습니다).

관심이 있으시다면 제 SIP 클라이언트는 Twinkle입니다.

답변1

해결책은 JACK 오디오 연결 키트(http://jackaudio.org/). 결국 KX Studio 배포판(Debian/Ubuntu 기반)을 설치하고 단순성을 위해 PulseAudio를 제거했습니다.

팟캐스트는 SIP(Voice over IP) 통화를 통해 인터뷰를 진행합니다. 대화의 한쪽이 한 채널에 있고 다른 쪽이 다른 채널에 있기를 원합니다.

JACK은 내가 그렇게 할 수 있도록 허용합니다.

답변2

PulseAudio 및 gstreamer에 대한 솔루션은 다음과 같습니다.

  1. 출력을 확인하여 스피커 모니터 및 마이크의 gstreamer 장치 이름을 알아보세요 pactl list | grep -A2 'Source #'. 이 두 장치는 통화의 두 끝 부분에 해당합니다.

  2. 다음과 같이 gstreamer 명령을 실행하여 장치 이름을 제공합니다 device=….

    gst-launch-1.0 -e \
    pulsesrc device=alsa_input.usb-046d_0819_561F63A0-02.mono-fallback \
    ! queue ! audioresample ! audioconvert \
    ! vorbisenc ! oggmux ! filesink location=recording1.ogg \
    pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
    ! queue ! audioresample ! audioconvert \
    ! vorbisenc ! oggmux ! filesink location=recording2.ogg
    
  3. recording1.ogg따라서 통화 양측 모두에 대해 두 개의 별도 녹음을 받게 됩니다 . recording2.ogg정확히 동시에 시작되므로 Audacity 등에서 다른 트랙으로 사용할 수 있습니다.

gstreamer 명령은 단순히 두 개의 별도 소스와 두 개의 별도 싱크를 열고 하나의 소스를 각각 하나의 싱크로 라우팅합니다. 여러 소스를 단일 싱크로 혼합할 수도 있지만 이 경우에는 그런 일이 발생하지 않기를 바랍니다.

관련 정보