我正在尝试在Librosa中打开一个AudioFile。对其进行修剪,然后使用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: Audio data must be floating-point
这样做的原因是,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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句