web-dev-qa-db-ja.com

マイク入力を録音し、出力を別のプログラムにパイプする方法

こんにちは皆さん私は本当にランダムなビットを生成するためのチュートリアルに従おうとしています

真にランダムなビットを生成する方法

これはチュートリアルのコマンドですが、機能しません

rec -c 1 -d /dev/dsp -r 8000 -t wav -s w  - | ./noise-filter >bits

マイク入力を使用して録音できることはわかっています

rec -c 1 no.wav

これは私が使ってみたコマンドです

rec -c 1 -r 8000 -t wav -s noise.wav | ./noise-filter >bits

しかし、私は得る

root@xxc:~/cc# rec -c 1 -r 8000 -t wav -s noise.wav  - | ./noise-filter >bits
rec WARN formats: can't set sample rate 8000; using 48000
rec FAIL sox: Input files must have the same sample-rate

ノイズフィルターを使用しました

ノイズフィルター

チュートリアルでは、使用している古いバージョンのSOXとRECを使用していると思います

sox: SoX v14.3.2 on Ubuntu 12.04 server

誰かが私を助けてくれますか?

4
acrs

このコマンドラインには、リストされている出力が多すぎます。

rec -c 1 -r 8000 -t wav -s noise.wav - | ./noise-filter >bits
                           ^file     ^standard output

コマンドパイプラインの場合、出力は最後の-のみである必要があります。 recコマンドは、noise.wavパラメーターを追加の入力として解釈します。これは失敗するか、偽の出力を生成します。余分なファイル名(およびその他の不要/互換性のないオプション)を削除してみてください。

rec -c 1 -t wav - | ./noise-filter > bits
3
Bradd Szonye

あなたが参照したチュートリアル(私もそれに従っています!)と最新バージョンのSoXマンページ(2014年11月9日現在)によると、私のために機能した完全な修正されたコマンドは次のとおりです。

rec -c 1 -r 8000 -t raw -e signed-integer -2 - | ./noise-filter > bits

entは、49,152バイトのファイルに対して次の値を返しました。

Entropy = 7.996356 bits per byte.

Optimum compression would reduce the size
of this 49152 byte file by 0 percent.

Chi square distribution for 49152 samples is 247.53, and randomly
would exceed this value 50.00 percent of the times.

Arithmetic mean value of data bytes is 127.5771 (127.5 = random).
Monte Carlo value for Pi is 3.147949219 (error 0.20 percent).
Serial correlation coefficient is -0.002336 (totally uncorrelated = 0.0).

これはかなり高品質のランダムデータです!

2
CousinIT

ノイズ.wavはsoxが記録できるサンプルレートではないようです。また、soxでは両方のファイルが同じサンプルレートである必要があります。おそらく、より高いサンプルレートでnoise.wavを再生成する必要があります。

0
Alex Hofsteede