我正在使用 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