使用 sox 创建无间隙正弦波

使用 sox 创建无间隙正弦波

我正在使用 sox 创建 100ms 的合成器,这是我的命令:

/usr/bin/sox -V -r 44100 -n -b 64 -c 1 file.wav synth 0.1 sine 200 vol -2.0dB

现在,当我创建 3 个正弦波文件并将它们合并在一起时

/usr/bin/sox file1.wav file2.wav file3.wav final.wav

然后我发现文件之间有间隙。我不知道为什么。但是当我打开例如 file1.wav 时,我还会看到文件前面和末尾有一个短暂的间隙。

如何创建一个精确的 100 毫秒且前后没有间隙的正弦波?

我的第二个问题是:在 sox 中是否也可以用一个命令创建 10 个正弦波合成器?例如 sox f1 200 0.1、f2 210 01、f3 220 01,... 第一个 200hz 10ms、210hz 10ms、220hz 10ms

我在 sox 中尝试了一些不同的选项,但每个正弦文件看起来总是这样的:

波幅间隙

答案1

尝试:

/usr/bin/sox -V -r 44100 -n -b 64 -c 1 file.wav synth 0.1 sine 200 vol -2.0dB trim 0 0.1

或者:

/usr/bin/sox -n -r 44100 -b 64 -c 1 final.wav synth 0.1 sine 200 vol -2.0dB : synth 0.1 sine 210 vol -2.0dB : synth 0.1 sine 220 vol -2.0dB

答案2

我没有看到运行命令时有任何间隙。你确定这不是你的查看器造成的吗?

您想如何合并文件?sox有几种组合选项。摘自手册:

  --combine concatenate|merge|mix|mix-power|multiply|sequence
         Select the input file combining method; for some of these, short
         options are available: -m selects `mix', -M selects `merge', and
         -T selects `multiply'.

         See Input File Combining above for a description of the
         different combining methods.

sox使用and时默认为串联@BenjaminEcker 的解决方案应该有效。对于混合,您可能需要使用:

sox -V --combine mix \
  "|sox -r44100 -n -p synth 0.1 sine 200" \
  "|sox -r44100 -n -p synth 0.1 sine 210" \
  "|sox -r44100 -n -p synth 0.1 sine 220" \
  out.wav

输出:

sox INFO formats: assuming input pipe `|sox -r44100 -n -p synth 0.1 sine 220' has file-type `sox'
sox INFO formats: assuming input pipe `|sox -r44100 -n -p synth 0.1 sine 210' has file-type `sox'
sox INFO formats: assuming input pipe `|sox -r44100 -n -p synth 0.1 sine 200' has file-type `sox'

Input File     : '|sox -r44100 -n -p synth 0.1 sine 200' (sox)
Channels       : 1
Sample Rate    : 44100
Precision      : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Level adjust   : 0.333333 (linear gain)
Comment        : 'Processed by SoX'


Input File     : '|sox -r44100 -n -p synth 0.1 sine 210' (sox)
Channels       : 1
Sample Rate    : 44100
Precision      : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Level adjust   : 0.333333 (linear gain)
Comment        : 'Processed by SoX'


Input File     : '|sox -r44100 -n -p synth 0.1 sine 220' (sox)
Channels       : 1
Sample Rate    : 44100
Precision      : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Level adjust   : 0.333333 (linear gain)
Comment        : 'Processed by SoX'

sox INFO sox: Overwriting `out.wav'

Output File    : 'out.wav'
Channels       : 1
Sample Rate    : 44100
Precision      : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Comment        : 'Processed by SoX'

sox INFO sox: effects chain: input        44100Hz  1 channels
sox INFO sox: effects chain: output       44100Hz  1 channels

相关内容