2つのオーディオストリームをミックスする方法

2つのオーディオストリームをミックスする方法

放送設定では、入力デバイスからのオーディオと .wav ファイルのオーディオをミックスしたいと考えています。 .wav ファイルには、放送中のある時点で音楽に追加したいイントロ、待機、または終了時の音楽が含まれています。

目標は以下の設定です。 ここに画像の説明を入力してください

必要な手順は複数あります:

  1. 2つのストリームを追加/ミックスする
  2. モノラルに変換する(あるいはこれを最初に行うべきだったかもしれない)
  3. 放送ストリームとVUメーターのストリームを分割する
  4. ストリームをローカルオーディオ出力に送信する

これは可能であると確信していますが、インターネット上ではまだ解決策を見つけることができません。alsa の .asoundrc を調べても、まだ結果は得られませんでした。alsa dmix はミキシングを行うようですが、ここで私が求めているものではありません...

どこから始めたらいいのか本当に分かりません。

誰かこれについて説明してくれませんか? 部分的な解決策でも構いません!

答え1

最も簡単な方法は、Pulseaudio を使用することです。(ALSA でも可能ですが、設定が面倒です。)

サウンドを生成するものはすべて、現在の出力 (Pulseaudio 用語では「シンク」) で自動的にミックスされるため、ミックスについて心配する必要はありません。 でボリュームを制御できpavucontrol、アプリケーション名によって最後のボリュームが記憶されます。 を使用するpaplayと、コマンドラインから wav ファイルを再生できますが、他のオーディオ プレーヤーでもかまいません。

シンクがモノラルの場合、モノラルへの変換は自動的に行われます。ローカルのRaspPiシンクをそのように構成できない場合(RaspPiを所有していないのでわかりません)、次のように「疑似」シンクを追加できます。

pactl load-module module-null-sink sink_name=whatever

または、Pulseaudio で再マップする必要があることが判明した場合module-remap-sink(以下を参照、まだ自分で試していません)。

このシンクまたはローカル RaspPi シンクには、.monitoricecast などに配布するために使用できる関連ソースがあります。

選択したシンクにhw:1入力を永続的に供給するには、

pacmd load-module module-loopback source="alsa_input.name_of_hw_1" sink="whatever_or_local_sink"

利用可能なシンク名を一覧表示するには、

pacmd list-sinks | grep name:

引数として、山括弧なしの名前を使用します。

これが基本だと思います。Pulseaudioについてはこちらをお読みくださいモジュールpacmd helpを使用したくない場合は、コマンドラインから何ができるかがわかりますpavucontrol

編集のためにアルサ:

まず、利用可能なプラグインオーディオをdarkiceなどに送るには「仮想サウンドカード」が必要です。これはカーネルモジュールなので、次のようにします。

sudo modprobe snd-aloop pcm_substreams=2

/etc/modprobe.dテスト用に、動作したらファイルを配置します。ループバックは であるとしますhw:3,*,*

仮想サウンドカードの入力側には、次のようなものが必要です。

dmix "main_in" --> プラグ (slave.channels = 1) --> hw:3,0,0

aplay -D main_in sound.wavそして、実行することができます

alsaloop -C hw:0 -P main_in

オーディオグラバーに接続します。

仮想サウンドカードの出力側では、次のようなもの

hw:3,1,0 --> dsnoop "main_out"

そして、ローカルオーディオ出力でモニターするために、

alsaloop -C main_out -P local_audio_out

darkiceその後、と VU メーターを直接実行できますmain_out。ちなみに、arecord -D main_out -d 0 -vv /dev/nullはテスト用の優れた VU メーターです。

上記のリンクで構文の詳細を読んでください。私はこれを試すつもりはありません。-->矢印はプラグインのマスター/スレーブ関係を示しています。カーネル空間を介したループバックが 1 つあり、ユーザー空間アプリケーションが多数あるため、レイテンシはおそらくひどいものになるでしょう。

Pulseaudio が機能しない場合は、代替手段として がありますjackが、私はそれを設定した経験がありません。

関連情報