重新采样上采样WAV,而没有插值SOX?

问题描述

好,所以我开始这样的实验:打开Audacity,然后将Project Rate(Hz)设置为8000,然后将Generate / Silence ...-生成,并在出现的对话框中,将时间格式更改为“ samples”,然后将长度设置为10个样本。然后,在插入产生的10个样本的静后,使用绘图工具(F3)为样本分配一些随机值-看起来像这样:

audacity-01

然后将文件/导出/导出另存为WAV-并将其另存为test.wav。我们可以在命令行上使用mediainfo进行检查:

$ mediainfo test.wav
General
Complete name                            : test.wav
Format                                   : Wave
File size                                : 64.0 Bytes
Overall bit rate mode                    : Constant

Audio
Format                                   : PCM
Format settings                          : Little / Signed
Codec ID                                 : 1
Bit rate mode                            : Constant
Bit rate                                 : 128 kb/s
Channel(s)                               : 1 channel
Sampling rate                            : 8 000 Hz
Bit depth                                : 16 bits

好吧,现在我想将其重新采样到48 KHz-但是,不进行插值(也就是说,仅重复采样:考虑到在这种情况下,48/8 = 6,则意味着上述每个采样都应重复6次,以获得新的重新采样文件

因此,我尝试使用认设置为sox

$ sox test.wav -r 48000 test_out.wav
C:\Program Files (x86)\sox-14-4-2\sox.exe WARN rate: rate clipped 1 samples; decrease volume?
C:\Program Files (x86)\sox-14-4-2\sox.exe WARN dither: dither clipped 1 samples; decrease volume?

...但是当我在Audacity中导入test_out.wav时,会看到以下内容

audacity-02

...因此,重新采样的文件显然已经插值了。

仅作记录,一个非插值的重采样文件将类似于以下内容(我尝试使用“绘图工具”手动进行绘制,因此并不十分精确,但足以用于说明目的):

audacity-03-non-interp

我可以说服sox在没有插值的情况下进行重采样吗?另外,有没有其他工具可以让我对.wav进行重新采样而无需插值?


为完整起见,这是我在此处使用的test.wav的十六进制转储:

$ hexdump -C test.wav
00000000  52 49 46 46 38 00 00 00  57 41 56 45 66 6d 74 20  |RIFF8...WAVEfmt |
00000010  10 00 00 00 01 00 01 00  40 1f 00 00 80 3e 00 00  |........@....>..|
00000020  02 00 10 00 64 61 74 61  14 00 00 00 00 00 78 29  |....data......x)|
00000030  8b 5f a4 95 e5 c0 80 3b  2a 6c b1 39 3f 19 fc ff  |._.....;*l.9?...|
00000040

您可以使用xxd(请参阅Transform hexadecimal information to binary using a Linux command)将其转换回二进制文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)