2024-05-16 08:55:44 发布
网友
我用matplotlib.specgram来制作口语录音的谱图。因为我不知道的原因,从下面的图像中可以看到光谱图中有奇怪的线条。在
matplotlib.specgram
我想知道是什么造成了这些线,我怎样才能消除它们?在
我认为“远北”是对的。在
当计算光谱图时,对于每个时间步(x轴),为给定的强度选择一定的灰度。假设灰度是全局设置的。如果突然在一个新的时间步中有更高的强度,灰度将饱和。在
这将是一个真正的问题,如果你是在实时工作,因为你可能开始非常安静的音频突然变大,但你必须选择一个灰度与强度的比率,在开始时根据过去的音频轨迹的知识。在
所以克规范'是独立缩放所有时间步长。因此,如果在一个时间步中发生突然的变化,事情看起来就无法与相邻的步骤相提并论,这是@farenorth指出的。在
下面是一个合成的例子。上面的情节只是一个啁啾的正弦波,下面的情节也是一样,加了一个突然的爆炸声。在
'''specgram(x, NFFT=256, Fs=2,detrend=mlab.detrend_none, window=mlab.window_hanning, noverlap=128, cmap=None, xextent=None, pad_to=None, sides='default', scale_by_freq=None, mode='default')''' import numpy as np import matplotlib.pyplot as p %matplotlib inline time= np.arange(1,5,0.0004) time=np.linspace(1,5,1024*16) f= 50+ time*50 #add a bang bang=np.ones(len(time)) bang[ len(time)/2:len(time)*3/4]=100 chirp1= np.sin(2*np.pi*f*time) chirp2= np.sin(2*np.pi*f*time) *bang p.figure(figsize=((20,8))) p.subplot(221) p.plot(chirp1) p.subplot(222) p.specgram(chirp1 ,noverlap=0,cmap=p.cm.gray) p.subplot(223) p.plot(chirp2) p.subplot(224) p.specgram(chirp2 ,noverlap=0,cmap=p.cm.gray) p.show()
你不能用specgram来消除它,因为没有全局缩放选项。但你可以很容易地滚动你自己的STFT或更好的,一个Gabor谱图(如果我理解正确的话,带高斯窗的STFT)。在
我认为“远北”是对的。在
当计算光谱图时,对于每个时间步(x轴),为给定的强度选择一定的灰度。假设灰度是全局设置的。如果突然在一个新的时间步中有更高的强度,灰度将饱和。在
这将是一个真正的问题,如果你是在实时工作,因为你可能开始非常安静的音频突然变大,但你必须选择一个灰度与强度的比率,在开始时根据过去的音频轨迹的知识。在
所以克规范'是独立缩放所有时间步长。因此,如果在一个时间步中发生突然的变化,事情看起来就无法与相邻的步骤相提并论,这是@farenorth指出的。在
下面是一个合成的例子。上面的情节只是一个啁啾的正弦波,下面的情节也是一样,加了一个突然的爆炸声。在
你不能用specgram来消除它,因为没有全局缩放选项。但你可以很容易地滚动你自己的STFT或更好的,一个Gabor谱图(如果我理解正确的话,带高斯窗的STFT)。在
相关问题 更多 >
编程相关推荐