gpt4 book ai didi

python - 在 Pydub 和 Librosa 之间转换音频文件

转载 作者:行者123 更新时间:2023-12-02 02:44:56 24 4
gpt4 key购买 nike

我正在尝试在 Librosa 中打开音频文件。修剪它,然后使用 pydub 修改它。这是我的代码:

sound = AudioSegment.from_file(filePath)
samples = sound.get_array_of_samples()
arr = np.array(samples)
print(type(arr))
print(arr)
# then modify samples...
y, index = librosa.effects.trim(arr)

问题是,即使我遵循此处概述的解决方案:
https://github.com/jiaaro/pydub/issues/289

我似乎无法使用librosa的trim()函数。它给了我这个错误:

librosa.util.exceptions.ParameterError:音频数据必须是浮点

这样做的原因是 Librosa 需要一个浮点 numpy 数组(并使用它们),而 pydub 导出一个整数数组(我将其转换为 np 数组)。我不知道如何在 2 之间转换 numpy 数组。

我可以从 Pydub 导出到文件,然后使用 Librosa 加载它 - 但这似乎是一种非常低效的做事方式。

软件包版本:
Librosa - 0.7.1。
Pydub - 0.23.1

最佳答案

Librosa 符合 arr 数据的类型为 int,您需要将其转换为 float,如下所示,

arr = np.array(samples).astype(np.float32)

代码:

import librosa
import numpy as np
import os

from pydub import AudioSegment
from pydub.playback import play

sound = AudioSegment.from_file("test.wav")
samples = sound.get_array_of_samples()
new_sound = sound._spawn(samples)
arr = np.array(samples).astype(np.float32)
print(type(arr))
#print(arr)
# then modify samples...
y, index = librosa.effects.trim(arr)
print(index)
print(y)

修剪输出

 <type 'numpy.ndarray'>
[ 0 882]
[ 0.00000000e+00 0.00000000e+00 1.07629056e+08 1.07629056e+08
:
:
1.09489754e+09 1.09489754e+09]

关于python - 在 Pydub 和 Librosa 之间转换音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58810035/

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