大家好,我正在尝试按照教程生成真正的随机位
这是教程中的命令,但它不起作用
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
有人可以帮帮我吗 ?
答案1
此命令行列出了太多输出:
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
答案2
根据您引用的教程(我也在关注那个!)和最新版本的 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).
这是质量相当好的随机数据!
答案3
看起来您的 noise.wav 的采样率不符合 sox 可以录制的采样率,而 sox 要求两个文件的采样率相同。您可能必须以更高的采样率重新生成 noise.wav。