如何记录麦克风输入并将输出传送到另一个程序

如何记录麦克风输入并将输出传送到另一个程序

大家好,我正在尝试按照教程生成真正的随机位

如何生成真正的随机位

这是教程中的命令,但它不起作用

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。

相关内容