重采样后,如何使用Librosa得到RMS矩阵对应的时间矩阵?

问题描述 投票:0回答:1

由于 Librosa 中的默认采样率为 22050,我想下采样到采样率 = 1000。但是,在我重新采样到采样率 = 1000 后,time_end 从 93.72 秒更改为 4 秒左右,但我希望 time_end 保持不变相同。此外,我在获取与 RMS 矩阵相对应的时间矩阵时遇到困难。目前我使用了 times_like 和 get_duration,但是 librosa.get_duration 返回正确的时间长度 93.72s,librosa.times_like(rmsmatrix) 返回这样的时间序列:

[0.00000000e+00 2.32199546e-02 4.64399093e-02 ... 2.18197914e+03
 2.18200236e+03 2.18202558e+03]

这是我当前的代码。


y_8k, sr2 = librosa.load('104.mp4', sr=1000)
time104 = librosa.get_duration(y=y_8k, sr=sr2)
print(time104) # Here prints 93.972s, which is the actual length of the audio file 104.mp4.
timematrix = librosa.times_like(rms104) # Here prints the time series shown above


我还尝试计算frame_length和hop_length以获得所需的RMS矩阵长度,但我仍然不知道如何获得相应的时间矩阵,因为librosa.times_like返回正确的数据点数量,但time_end不是93.972s .


total_samples = len(y_8k)  
desired_rms_length = 93599   # Desired length 

hop_length1 = total_samples // desired_rms_length

frame_length1 = 2 * hop_length1
rms104 = librosa.feature.rms(y=y_8k, frame_length=frame_length1, hop_length=hop_length1)

我对如何解决这个问题感到困惑。有人可以帮我吗?

feature-extraction librosa rms resample
1个回答
0
投票

librosa.times_like 采用参数

sr
,必须将其设置为输入数据的采样率。否则,将使用默认值 22050,这会给出不正确的结果。
hop_length
也是如此。

© www.soinside.com 2019 - 2024. All rights reserved.