arecord、parec、またはjackdを使用してオーディオ入力を再生または監視するための理想的な方法は何ですか?

arecord、parec、またはjackdを使用してオーディオ入力を再生または監視するための理想的な方法は何ですか?

録音後のティーに出力をパイプする最善の努力にもかかわらず、録音されたオーディオ入力をマイオーディオデバイス(alsaで駆動されるハイファイバリーおよびラズベリーパイでホストされているADC)にパイプすることはできません。パルスオーディオを設置、設定、活用します。 parec は jackd と jack_capture で以下のようになります。

私の仕事の主な図:

ラインレベルオーディオ - > ADC - > PCM / Wavファイル - > DAC - >ラインレベルオーディオ。

問題は、録音中に出力が再生されないことです。

ラインレベル入力を録音しているのに聞きたいです。遅延時間は重要ではありませんが、200ミリ秒以下になると予想されます。

私は1つのターミナルウィンドウで「arecord」を使用し、もう一方のターミナルウィンドウで「aplay」を使用する非常にハッキングされたソリューションを実装しましたが、これは私の問題の解決策にはなりません。

問題をさらに複雑にするため、Google への私の試みは悲惨に失敗しました。なぜなら、Googleは私がアプリケーションの出力をファイルにキャプチャしようと思ったからです。私はそうではありません。サウンドカードの入力を監視したい。 AppleのLogic Proでは、これを「ソフトウェア監視」と呼びます。かなり簡単だと思いました。私もそれを「プレイスルー」と呼ぶのを見ましたが、おそらくそれは別のものかもしれません。

私はパルスオーディオに希望を抱いています。彼らはそれが単に「ソースとシンク」であると言います。

私はpulseaudioのparec、alsaのarecord、jackd + jack_captureを使ってpcmファイルを正常に録音しました。私は明らかに何かを見逃しています。

parec -d alsa_input.platform-soc_sound.stereo-fallback | sox -t raw -b 16 -e signed -c 2 -r 44100 - /mnt/audio/pulsetest.wav

明らかに、私のOSとハードウェアは同時に記録して再生できるという点で「二重化」できます。

これは可能ですか、それともarecordとaplayを使い続けるべきですか?

ベストアンサー1

次のことを試してください

pacmd load-module module-loopback source="alsa_input.platform-soc_sound.stereo-fallback" sink="alsa_output.whatever"

ここで、「alsa_output.whatever」はライン出力レシーバの実際の名前です。流し台が見えます。

pacmd list-sinks | grep name:

「ループバック」は、システムオーディオのキャプチャに特に使用される用語のようです。

「ループバック」は、一部の出力を一部の入力に戻すために使用される一般的な用語です。ネットワーク用のループバックインターフェイス(lo)、物理LANデバイスのループバック機能、ALSAループバックドライバ、Pulseaudioループバックモジュールなどがあります。

パルス構成では、デフォルトのサンプル形式と速度を設定しました。

これをしないでください。 Pulseaudioが再サンプリングします。他に触れるのではなく、module-loopbackソースからシンクに接続するだけです。

それは非常に簡単でなければなりません。

とても簡単です。何をしようとこんなに難しいのか分からない。

私はスニファーを取り出してチップを調べて、アルサが何をしているのか調べなければならないと思いました。

興味深い点です(特にIntel HDAドライバを使用する実際のPCでは - RaspPiではかなり退屈です)。しかし、ALSAではなくPulseaudioレベルを扱うので、おそらく役に立ちません。職業があるので問題にaplayなりarecordません。


ソースとシンクが96k / 24ビットを使用するための追加要件(質問に記載されていない)がある場合、これはPulseaudioでの旅になります。 Pulseaudioは、ALSAハードウェアソース/シンクを合理的な方法でコンバータのデフォルトとして実行するように設計されています。その後、ストリーミング中に必要に応じてアップサンプリング/ダウンサンプリングします。これを変更するためにPulseaudio内部デバイスを使用するのは難しいです。

見てモジュールループバック文書:追加のパラメータを使用して希望の速度とフォーマットを設定できますが(これを行う必要があります)、ソースとシンクがこのモードで終了するという保証はなく、Pulseaudioはどこかでリサンプリングしません。

また、この要件がどこから来たのかを明らかにしませんでした。 RaspPiをプロフェッショナルレベルのオーディオ処理(DAW、デジタルオーディオワークステーション)に使用する場合は、PulseaudioよりもJACKの方が良い選択です。しかし、それはすべてあなたの状況によって異なります。

つまり、次module-loopbackのように実行するとparec --rate=96000 --format=s24le確かに実行中の受信機のビットレートとフォーマットを変更することはできませんが、希望のフォーマットとビットレートをすでに取得している場合は、忘れて満足してください。

はい、Pulseaudioを使用すると、ソース内の複数のストリームだけでなく、複数のストリームをシンクに入れることができます。

おすすめ記事