我想发出声音太高而无法被人耳检测到。据我了解,人类可以听到 20hz 到 44000hz 之间的声音。
使用 sox,我发出 50000hz 的声音。问题是我仍然可以听到它。我正在使用的命令是这样的:
sox -n -r 50000 output.wav rate -L -s 50050 synth 3 sine
要么我的听力非常好,要么我做错了什么。如何使用 FFMPEG 的 SOX 使这种声音无法检测到?
最佳答案
人类听觉通常被认为介于 20Hz 和 20kHz 之间,尽管大多数人在 16kHz 以上听不到太多。数字信号只能代表高达其采样率一半的频率,即奈奎斯特频率,因此,为了准确地再现人耳的音频,至少需要 40kHz 的采样率。在实践中,几乎总是使用 44.1kHz 或 48kHz 的采样率,为 20-22kHz 范围内的某处听不见的声音留出足够的空间。
例如,此命令生成一个采样率为 48kHz 的 WAV 文件,其中包含我完全听不见的 22kHz 正弦波:
sox -n -r 48000 output.wav synth 3 sine 22000
我认为您的部分问题是您使用错误的语法将音高指定为
sox
. This question有一些关于使用 SoX 生成简单音调的好信息。
关于audio - 使用 Sox/FFMPEG 使声音高到听不见或无法察觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305906/