我有大约5000个音频样本,并已使每个频谱图,并保存为图像。我已经知道如何用librosa制作光谱图,显示它并保存在正确的图像中。但每次在保存图像之前,它都会降低成本。用所有5000个样本制作这个不是一个好主意。是否可以在不显示图像的情况下保存图像?
import numpy as np
import librosa
import librosa.display
import matplotlib.pyplot as plt
f_name = # path to current file
path = # path where to save result
X, s_rate = libr
我有一个二维数字阵列的音频谱图,我想把它保存为图像。
我用库来获取光谱。我也可以用librosa.display.specshow()函数绘制它。如下所示,有许多不同的缩放类型。
import PIL
import librosa
import librosa.display
def display_spectrogram(spectrum, sampling_rate):
"""
Frequency types:
‘linear’, ‘fft’, ‘hz’ : frequency range is determined by the FFT
我有一个包含多个wav文件的文件夹(目前是4个)。我想在一行中绘制wav,它的mfcc和mel频谱图,所以最后是一个有12个图形的图形(每行有3个图形,因此是4行)。我无法绘制图表,只能提取特征。有人可以帮助这个for循环吗?我的意思是如何使用subplot命令以及如何在循环中存储每个图形。 问候 path=glob.glob('the path having four wav files/*.wav')
for p in path:
y, sr = librosa.load(p, sr=16000)
mfcc=librosa.feature.mfcc(y)
我从一个音频文件中分解了频谱图,如下所示:
import librosa
y, sr = librosa.load('my audio file.wav')
S = np.abs(librosa.stft(y))
W, H = librosa.decompose.decompose(S, n_components=32)
现在如何将分解后的谱图重新组合成实际的谱图。
我想要的是这种类型的功能:
S=recompose(W,H)
我正在阅读使用卷积神经网络进行环境噪声识别的本论文,并希望复制它们的结果。他们将WAV文件转换成日志大小的mel光谱图。你是怎么做到的?我能够将WAV文件转换成mel谱图
y, sr = librosa.load('audio/100263-2-0-117.wav',duration=3)
ps = librosa.feature.melspectrogram(y=y, sr=sr)
librosa.display.specshow(ps, y_axis='mel', x_axis='time')
📷
我还可以将它显示为一个日志缩放的光谱图:
l
我的源代码如下所示。 它显示的错误如下 librosa.util.exceptions.ParameterError: Audio data must be floating-point 我还不清楚如何设置librosa.feature.melspectrogram参数。 我应该怎么改变?? sample_wave = './data/mywave.wav'
wav=wave.open(sample_wave)
data=wav.readframes(wav.getnframes())
data = np.frombuffer(data,dtype=np.int16)
f,
当音频与paInt16一起录音时,它给了我16位整数,表示为两个字节。经过一番研究,我得出结论,一定是在-32768到32767之间。
我将音频保存为wav文件,并将其加载回librosa.core.load。我确实检索了浮点值* 32767,并查看它是否生成原始的16位整数,但它根本不匹配。
我的问题是
这种错配是从哪里来的?
原始16位整数数据是否代表频率?
librosa声明load函数返回floating point time series。如何从原始16位整数计算此值?