由于 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)
我对如何解决这个问题感到困惑。有人可以帮我吗?