我想使用ruby wavefile gem增加wav文件的采样率,但保持wav文件中的声音听起来正常。基本上这个例子,但修改后的声音听起来很正常。 https://github.com/jstrait/wavefile/wiki/WaveFile-Tutorial#copying-a-wave-file-to-different-format
require 'wavefile'
include WaveFile
SAMPLES_PER_BUFFER = 4096
Writer.new("copy.wav", Format.new(:stereo, :pcm_16, 44100) do |writer|
Reader.new("original.wav").each_buffer(SAMPLES_PER_BUFFER) do |buffer|
writer.write(buffer)
end
end
答案 0 :(得分:0)
您可以将wav文件视为以给定速率(采样率)采样的数据点集合。如果您有一个已知采样率的给定集合,并且您希望每单位时间增加样本的分辨率,那么您将需要采用新样本(即以所需速率制作新的原始记录)或推断/近似新数据点上的必要样本将出现在您已经拥有的样本之间。
例如,如果你有一个22khz的录音,并且想要将它增加到44khz,那么一个选项是简单地取每个数据点并重复一次,这样就可以得到如下内容:
```
随时间推移的原始波形样本:
1.2.3.4.5.6
如果您只更改采样率: 123456(同一声音在一半的时间内)
随着时间推移的新波形样本:
112233445566
```