gpt4 book ai didi

python-3.x - Python读取声音文件,ogg还是wav?

转载 作者:行者123 更新时间:2023-12-02 22:54:10 25 4
gpt4 key购买 nike

我想用 Python 导入音乐,我正在使用 soundfile。我注意到导入 ogg 或 wav 文件会产生不同的结果,如下所示(wav 文件是使用 ffmpeg 转换的 ogg 文件)。使用下面的代码,我观察到 ogg 和 wav 文件之间存在细微差异,这种差异是否正常?

编辑:我使用以下命令转换我的 ffmpeg -i filename.mp3 newfilename.wav

X, sample_rate= sf.read(wav_file)
print(wav_file)
print(X[0:20,])

它输出:

test_inputs/Shikantaza.wav
[[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ -3.05175781e-05 -3.05175781e-05]
[ -3.05175781e-05 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00]]
test_inputs/Shikantaza.ogg
[[ 1.17459308e-06 3.78499834e-07]
[ 5.19584228e-06 2.25495864e-06]
[ 1.13173719e-05 6.28675980e-06]
[ 1.07316619e-05 4.50928837e-06]
[ 2.70867986e-06 -3.40946622e-06]
[ 5.37277947e-06 5.06399772e-07]
[ 3.64179391e-06 6.27796169e-07]
[ -5.09244865e-06 -6.14764804e-06]
[ -4.38827237e-06 -3.74127058e-06]
[ -5.41250847e-06 -3.70974522e-06]
[ -2.75347884e-06 -7.08531957e-07]
[ -9.67129495e-07 6.15705801e-07]
[ -4.91217952e-06 -3.82820826e-06]
[ 4.38740926e-06 6.00675048e-06]
[ -3.00040119e-06 -4.78463562e-08]
[ -2.18559871e-05 -1.67418439e-05]
[ -1.57035538e-05 -8.82137283e-06]
[ -1.28820702e-05 -5.31934711e-06]
[ -9.44996100e-06 -8.10974825e-07]
[ -5.33486082e-06 3.71237797e-06]]

最佳答案

对于第一个文件,您要解码为 WAV 格式的 16 位线性 PCM,然后将其转换为 float 。对于第二个文件,您直接解码为 float 。 16 位线性 PCM 的精度低于 float ,因此会丢失信息,尽管与有损压缩的丢失相比,丢失通常可以忽略不计,因此可以忽略不计。

虽然 WAV 最常与 16 位线性 PCM 一起使用,但也可以将浮点 PCM 存储在 wav 文件中(尽管该文件大约是原来的两倍大)。在 wav 中写入 float :

ffmpeg -i in.ogg -c:a pcm_f32le out.wav

有损格式的解码器也可能存在差异,从而产生略有不同的结果。此外,如果其中一个解码器不是无间隙的,它可能只会产生整个帧,因此可能在开始和/或结束时有一些额外的样本。

关于python-3.x - Python读取声音文件,ogg还是wav?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com