超音波をマイクロ録音して分けて異調な音を聞きたいです。一般的なマイクロテストを開始しました。
これまで私はsoxとRec and Playを試しました。動作しますが、遅延時間は2秒です。
rec -r 48000 -c 1 -t wav - pitch -1000 | play -t wav -
この回線を改善し、待ち時間を減らすにはどうすればよいですか?
私のオーディオ設定は
# API: ALSA v: k6.1.27-gentoo status: kernel-api
# Server-1: PulseAudio v: 16.1 status: active
答え1
選択されたパラメータ化の場合、大量の入力が通過する前に出力を提供することは数学的に不可能です。
ピッチ変換(==周波数分割)にはリサンプリングフィルタと時間ストレッチフィルタが必要なので、これらのフィルタには次のものがあると考えるのが直感的です。グループ遅延したがって、因果関係により、入力信号と出力信号の間に大きな遅延が発生します。それはsox
問題ではありません。それは数学だけです。
ソリューションには以下が含まれます。
- あまり大胆でないコンバージョンを使用
- はるかに高い入力サンプリングレートを使用してください。
- ピッチシフト(==クロスオーバー)を行わず、周波数変換などの他の操作を実行してください。
Linux/Unix/tool の知識はここでは役に立ちません。
問題は、実際には出力サンプリングレートで大きなピッチ変更を試みることです。 Nyquistの理由により、超音波レコーダーはすでに高いサンプリングレートで動作している必要があるため、実際のアプリケーションではこの形式では問題が発生しない可能性があります。 。