Audio

在 Linux 上錄製音頻 - 擷取 VoIP 對話的雙方

  • April 22, 2021

我想使用 Audacity(或類似的)來錄製播客的音頻。播客將通過 IP 語音 (SIP) 電話進行採訪。

我在這裡遇到了一個很好的教程: http ://www.linux.com/learn/tutorials/367395-weekend-project-record-from-skype-calls-and-other-apps-on-linux

它提供了我需要的大部分步驟。最重要的是,它描述瞭如何從不支持錄音的應用程序中擷取通話雙方。“擷取通話雙方的真正解決方案是建構一個連接到雙方的虛擬 PulseAudio 設備”和“然後記錄空接收器,在單個文件中擷取合併的音頻。”

但是,我想以不同的方式做一件事。我不希望對話的音頻完全“合併”。我希望對話的一側在一個頻道中,另一側在另一個頻道中。實際上有一個硬體設備可以做到這一點,這就是我想到的地方。該設備是此處找到的 JK Audio Inline Patch:

http://www.jkaudio.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 會自動儲存應用程序連接詳細資訊,因此下次登錄時,您無需重複將錄音應用程序連接到 Null 輸出監視器的過程 - 只需啟動你的錄音機,打電話給你的

$$ interview subjects $$,然後開始說話…… 我的問題是,如何在立體聲錄音的一個通道中擷取我的音頻,而在另一個通道中擷取採訪對象的音頻?或者我如何使用 Audacity 完全單獨(如有必要)擷取它們?

我玩弄了 Audacity,我無法打開兩個視窗並使用 Audacity 記錄兩個單獨的源(至少我無法弄清楚)。

如果有興趣,我的 SIP 客戶端是 Twinkle。

解決方案是使用 JACK 音頻連接套件 ( http://jackaudio.org/ )。我最終安裝了 KX Studio 發行版(基於 Debian/Ubuntu),為了簡單起見,我刪除了 PulseAudio。

播客將通過 IP 語音 (SIP) 電話進行採訪。我希望對話的一側在一個頻道中,另一側在另一個頻道中。

JACK 允許我這樣做。

這是 PulseAudio 和 gstreamer 的解決方案:

  1. 通過查看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
  1. 因此,您將擁有兩個單獨的錄音recording1.ogg,並recording2.ogg用於通話的雙方。它們在完全相同的時間開始,因此可以用作例如 Audacity 中的不同軌道。

gstreamer 命令只是打開兩個單獨的源和兩個單獨的接收器,並將一個源分別路由到一個接收器。它還可以將多個源混合到一個接收器中,但在這種情況下,這是您不希望發生的。

引用自:https://unix.stackexchange.com/questions/88008