librosa对应numpy版本
时间: 2023-11-19 16:05:11 浏览: 344
Librosa 0.8.0 及更高版本要求 Numpy 1.16 及更高版本,但建议使用 Numpy 1.20 及更高版本以获得更好的性能和稳定性。如果使用 Librosa 0.7.x 或更早版本,则需要 Numpy 1.8 或更高版本。建议使用最新版本的 Numpy 和 Librosa 以获得最佳性能和功能。
相关问题
import librosa import numpy as np import matplotlib.pyplot as plt path = "Actions - Devils Words/mixture.wav" # sr=None声音保持原采样频率, mono=False声音保持原通道数 data, fs = librosa.load(path, sr=None, mono=False) L = len(data) print('Time:', L / fs) #0.025s framelength = 0.02 #NFFT点数=0.025*fs framesize = int(framelength * fs) print("NFFT:", framesize) #画语谱图 plt.specgram(data, NFFT=framesize, Fs=fs, window=np.hanning(M=framesize)) plt.ylabel('Frequency') plt.xlabel('Time(s)') plt.title('Spectrogram') plt.show()
在这段代码中,用于计算和绘制语谱图的参数如下:
- framelength:帧长度,表示每个窗口的持续时间。在这里,它被设置为 0.02 秒(20 毫秒)。
- framesize:NFFT 点数,表示进行快速傅里叶变换时使用的点数。在这里,它的值是根据帧长度和采样率计算得到的。
根据代码中的注释,帧长度为 0.02 秒,对应的 NFFT 点数为 `framesize`。接下来,使用 `plt.specgram` 函数来计算和绘制语谱图。其中:
- `data` 是音频数据。
- `NFFT` 参数指定进行 FFT 计算时使用的点数,即 `framesize`。
- `Fs` 参数指定采样率,即 `fs`。
- `window` 参数指定窗口函数,这里使用的是汉宁窗。
最后通过调用 `plt.ylabel`、`plt.xlabel` 和 `plt.title` 来设置坐标轴和标题,然后使用 `plt.show()` 展示语谱图。
您可以根据需要调整帧长度和 NFFT 点数来获得所需的时间和频率分辨率。此外,还可以尝试不同的窗口函数来观察语谱图的变化效果。
使用librosa对音频进行截取然后保存截取音频
可以使用librosa库的load函数加载音频文件,然后使用numpy数组的切片操作来截取需要的部分,最后使用librosa库的output.write_wav函数将截取的音频保存为wav文件。
以下是一个示例代码:
```python
import librosa
import numpy as np
# 加载音频文件
audio_file = 'example.wav'
y, sr = librosa.load(audio_file)
# 设置截取的起始时间和结束时间
start_time = 5 # 单位为秒
end_time = 10 # 单位为秒
# 计算截取的起始和结束样本索引
start_index = int(start_time * sr)
end_index = int(end_time * sr)
# 截取音频
audio_cut = y[start_index:end_index]
# 保存截取的音频为wav文件
output_file = 'example_cut.wav'
librosa.output.write_wav(output_file, audio_cut, sr)
```
在上面的代码中,我们首先使用librosa.load函数加载了一个名为example.wav的音频文件,并将其存储在numpy数组y中。然后,我们设置了截取的起始时间和结束时间,并计算了它们对应的样本索引。接下来,我们使用numpy数组的切片操作y[start_index:end_index]来截取需要的部分,并将其存储在另一个numpy数组audio_cut中。最后,我们使用librosa库的output.write_wav函数将截取的音频保存为名为example_cut.wav的wav文件。