1. ループバックモジュールをロードする

1. ループバックモジュールをロードする

私は 1 つの USB ヘッドセットを使用して 2 台のコンピューターで作業しています。Linux 以外のコンピューターの出力を Linux コンピューターのライン入力 (青いオーディオ ジャック) にパイプし、PulseAudio を使用して信号を Linux コンピューターのヘッドセット出力にミックスして、両方の音を聞きたいと考えています。

オーディオハードウェア図

pavucontrol には「内蔵オーディオ アナログ ステレオ」入力デバイスが表示され、これを使用して「ライン入力」(選択済み)、「フロント マイク」、「リア マイク」などのポートを選択できます。デバイスの音量メーターが Linux 以外のマシンでのオーディオ再生に反応しているのがわかります。

内蔵オーディオアナログステレオ

PulseAudio でオーディオ信号を選択した出力デバイスで再生するにはどうすればよいですか?

答え1

1. ループバックモジュールをロードする

pacmd load-module module-loopback latency_msec=5

再生デバイスと録音デバイスを作成します。

2. pavucontrolでデバイスを設定する

pavucontrolでは、録音タブで、「ループバック」デバイスのから入力デバイスからライン入力信号を受信するデバイスへ。

録音設定

の中に再生タブで、「ループバック」デバイスのの上ライン入力信号を聞きたいデバイスに出力デバイスを接続します。

再生設定

3. トラブルシューティング

オーディオ信号に問題がある場合は、モジュールを取り外してpacmd unload-module module-loopback、より高いlatency_msec=値で再試行してください。

その他の注意事項

最新のミッドレンジ コンピューターでは、以下のオプションを使用して簡単に低レイテンシを実現できる可能性がありますlatency_msec=1

pacmd load-module module-loopback latency_msec=1

この回答は、このフォーラム投稿。 ありがとう!

答え2

に記載されているように、好ましい回答

pacmd load-module module-loopback latency_msec=5

再生と録音のデバイスを作成するはずですが、すべてのケースで機能するわけではないようです。その場合は、

pactl load-module module-loopback latency_msec=5

pactlを使用した同様の引数に注目してください

私の場合、pacmd では動作しませんでしたが、pactl では動作しました。

注: これらのオプションは両方ともPulse Audio専用であり、Pipewireには対応していません。

答え3

私も同じような状況に陥っています。PC が 2 台、Linux マシンが 1 台 (メイン)、Windows マシンが 1 台です。双方向のオーディオ接続を自動化する便利な設定をしました。Linux マシンと Pulseaudio でヘッドセットを使用すると、Windows マシンの音声が聞こえ、Linux 経由でマイクに話しかけ、Windows マシンのマイク入力に返すことができます。

当然、これには 1 本ではなく 2 本の AUX ケーブルをマシン間に接続する必要があります。しかし、一度解決して以来、うまく機能しています。同じことをしたい人にとって簡単にするために、ここでスクリプトを共有します。これを機能させるために必要なことは、マシンの特定のオーディオ シンク名を 2 つ見つけて、スクリプトの変数内に配置するだけです (私のものと異なる場合)。

#!/usr/bin/env bash

# 2-way audio connection - Slaves 2nd device audio through this device:
# - Directs AUX in to default speakers (connect 2nd device -> AUX).
# - Directs Mic to AUX out (connect AUX out -> 2nd device AUX in).
# 
# Then sleeps forever. Stops audio redirection when killed.
# 
# Requires:
# sudo apt-get install pactl
# 
# Manual Process:
# 1) pavucontrol > Configuration > Built-in Audio > Analog Stereo Duplex
# 2) Find - look for "analog-stereo" (no frills) in both commands:
#    pacmd list-sources | grep name:
#    pacmd list-sinks | grep name:
# 3) Select - enter found name or ID in this command:
#    pactl load-module module-loopback source=$auxinsource source_dont_move=1 sink=$defaultsink
# 4) pavucontrol > Input > Built-in Analog Stereo > Line in (plugged in)
# 5) pavucontrol > Playback > Loopback from Built-in Analog Stereo > SELECT_SPEAKERS
# 6) pavucontrol > Output > Built-in Analog Stereo > Line Out (plugged in)
# 7) pavucontrol > Recording > Loopback to Built-in Analog Stereo > SELECT_HEADSET_MIC
#
# BREAKPOINT:
# read -n 1 -s -r -p 'BREAKPOINT'

auxinsource='alsa_input.pci-0000_00_1f.3.analog-stereo'                                                 # Get name of AUX in (Replace these with yours!)
micsink='alsa_output.pci-0000_00_1f.3.analog-stereo'                                                    # Get name of AUX out (Replace these with yours!)

set -e

printf '\n 1) Connect Audio IN (Win->)...'
defaultsink=$(pactl get-default-sink)                                                                   # Get name of currently selected speakers
modulein=$(pactl load-module module-loopback source=$auxinsource source_dont_move=1 sink=$defaultsink)  # Locked from manual selection in GUI, will not jump around
#modulein=$(pactl load-module module-loopback source=$auxinsource sink=$defaultsink)                    # Unlocked for manual selection in GUI, but may jump around
#echo ' ' $defaultsink ' connected!'                                                                    # Debug output
echo ' connected!'


printf '\n 2) Connect Audio OUT (<-Mic)...'
modulemic=$(pactl load-module module-loopback latency_msec=10 source_dont_move=1 sink=$micsink)         # Locked from manual selection in GUI, will not jump around
#modulemic=$(pactl load-module module-loopback latency_msec=10 sink=$micsink)                           # Unlocked for manual selection in GUI, but may jump around
#echo ' ' $micsink ' connected!'                                                                        # Debug output
echo ' connected!'


printf '\n CTRL+C to stop'                                                                              # Flavor text.


function cleanup
{
  pactl unload-module $modulemic
  if [ ! -z ${modulein+x} ]; then
    pactl unload-module $modulein
  else
    echo
  fi
}

trap cleanup EXIT

sleep infinity

このセットアップのトラブルシューティング手順については、(オプション)

#!/usr/bin/env bash

# Troubleshooting steps for audioconnect
#
# Requires:
# sudo apt-get install pactl
# 
# BREAKPOINT:
# read -n 1 -s -r -p 'BREAKPOINT'


printf ' 1) pavucontrol > Configuration > Built-in Audio > Analog Stereo Duplex'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 2) pavucontrol > Input > Built-in Analog Stereo > Line in (plugged in)'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 3) pavucontrol > Playback > Loopback from Built-in Analog Stereo > SELECT_SPEAKERS'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 4) pavucontrol > Output > Built-in Analog Stereo > Line Out (plugged in)'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 5) pavucontrol > Recording > Loopback to Built-in Analog Stereo > SELECT_MIC'
read -n 1 -s -r -p ''
echo ': OK'

関連情報