必要

必要

Wiresharkのように動作しますが、ネットワークトラフィックの代わりに生のサウンドをキャプチャしてファイルに保存するプログラムはありますか?

私はネットワークトラフィックがプロトコルサンドイッチであり、実際にそれと同じように聞こえないことを知っていますが、その動作を強調するためにWiresharkと比較しています。

必要

  • ユーザー空間プログラムを一時的に起動します。
  • 特定のサウンドカードまたはシステム全体でサウンドをキャプチャ
  • スキャンのためにファイル(ネイティブPCM(Pulse Code Modulation))に保存することをお勧めします。

私はここでどんな忠実度も探していません。 44Khzでサンプリングされたチャネルであっても十分であるか、それよりも低くなる可能性があります。

結局のところ、私はキャプチャされたデータを見て自分自身の分析を実行できるようにしたいと思います。

似ていますが、まったく同じではありません。

Randomsound [1]は私が望むものと似ていますが、自己分析を行い、カーネルランダムプールにのみエントロピーを注入します。元のデータは保存されません。

次にAudacityを見ました。このプログラムではマイクストリームをキャプチャできますが、コンピュータで再生されているすべてのストリームをキャプチャすることはできません。したがって、コマンドラインを使用してAudacityを起動してストリームをキャプチャすることもできます。これは「入力」デバイスだけをキャプチャするため、十分ではありません。

[1]https://github.com/jimcrayne/randomsound

ベストアンサー1

これはかなり標準的な設定のようです。あなたが探しているもの監視装置デバイスの場合、サウンドシステムはPipeWireに組み込まれています(またはまだPulseaudioである可能性がありますが、インターフェイスは同じであるため実際には重要ではありません)。

すでに使用している可能性があります:実行

pactl list short sources

Name: field ends in .monitor`の内容を見つけてください。

この内容をボックスからログアウトできますparecord。またはすぐに圧縮するには、以下を使用しますffmpeg

ffmpeg \
     -f pulse \
     -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor \
     -c:a libopus -b:a 128k \
     recording.opus

これは、PulseAudio/PipeWireから入力を受け取り、どのデバイス(表示されているように)を指定し、広く-f pulse利用可能な非常に優れたOPUSコーデックを使用し、ビットレートを128kb / s(通常非圧縮オーディオと区別できない)に設定するようにします。指示します。ffmpeg-i {Device name}pactl list short sources-c:a libopus-b:a 128k


太字:問題の子供

しかし、Audacityは、少なくとも私が知っている限り、最新のサウンドシステムを完全にサポートしていません(目的を考慮すると、やや不幸なことです)。

実際のオーディオハードウェアデバイスをエミュレートするようにシステムに指示する必要があります。幸い、これはそれほど難しくありません。

.asoundrcホームディレクトリでファイルを開きます。まだ存在していない可能性があります。ただ作成してください(例:を使用してtouch ~/.asoundrc)。

次に、使用するデバイスを探します。出力をフィルタリングし、pactl list short sources次を含む行を見つけます.monitor

pactl list short sources | grep  '\.monitor'

ここにリストされているデバイスから始めたいですalsa_output.pci-0000_00_1b.0.analog-stereo.monitor。お使いのデバイスは他と呼ばれることがあります。その名前をコピーしてください。

次に、~/.asoundrcテキストエディタで編集し、次を追加します。

pcm.analog_out_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}

ctl.analog_out_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}

(もちろん、私が使用したデバイス名を使用してください。)

大胆な再起動。analog_out_monitorこれで入力デバイスが表示されます。

おすすめ記事