librosa--学习笔记(2)(频谱特性 Spectral representations)

  1. 短时傅里叶变换:X = librosa.stft(x)
    """
    参数:
        y:音频时间序列
        n_fft:FFT窗口大小,n_fft=hop_length+overlapping
        hop_length:帧移。
            spectrum = np.abs(librosa.stft(frame, n_fft=self.nfft)),未指定hop_length时,则默认win_length / 4
            spectrum = np.abs(librosa.stft(frame, n_fft=self.nfft, hop_length=len(frame)))时,如果帧移长度小于傅里叶变换点数,librosa.stft输出为hop_length+1
            spectrum = np.abs(librosa.stft(frame, n_fft=self.nfft, hop_length=self.nfft))时,无论win_length设置为帧长还是nfft,librosa.stft输出都只有一帧。
            最后得出结论librosa.stft的输出帧数为speech_length // hop_length + 1
        win_length:每一帧音频都由window()加窗。窗长win_length,然后用零填充以匹配n_fft。
            默认win_length=n_fft。
        window:字符串,元组,数字,函数 shape =(n_fft, )
            窗口(字符串,元组或数字)
            窗函数,例如scipy.signal.hanning
            长度为n_fft的向量或数组
        center:bool
            如果为True,则填充信号y,以使帧 D [:, t]以y [t * hop_length]为中心
            如果为False,则D [:, t]从y [t * hop_length]开始
        dtype:D的复数值类型。默认值为64-bit complex复数
        pad_mode:如果center = True,则在信号的边缘使用填充模式。默认情况下,STFT使用reflection padding
    返回:一个复数矩阵使得D(f,t) STFT矩阵 shape =(1 + nfft/2,t)其中:
        n_fft/2是因为实数FFT信号具有对称性,我们只需要去一般的数据分析即可,全部返回有数据冗余。                
        n_frames: n_frames = (speech_len) // hop_len + 1。具体可以画图,信号处理之前首先需要padding, padding之后分帧,画图可以看到,真正与帧数有关系的,是hop_len。
    """
  2. 逆傅里叶变换 Y = librosa.istft(result):
    """
    参数:
        stft_matrix:经过STFT之后的矩阵
        hop_length:帧移,默认为winlength4
        win_length:窗长,默认为n_fft
        window:字符串,元组,数字,函数或shape = (n_fft, )
        窗口(字符串,元组或数字)
        窗函数,例如scipy.signal.hanning
        长度为n_fft的向量或数组
        center:bool
            如果为True,则假定D具有居中的帧
            如果False,则假定D具有左对齐的帧
        length:如果提供,则输出y为零填充或剪裁为精确长度音频
    返回:y:时域信号
    """
  3. 获取瞬时频率 frequencies, D = librosa.ifgram(y, sr=sr)
    """
    参数为:
        norm:STFT归一化
        ref_power:最小化阈值估计瞬时频率
    返回值:
        if_gram:瞬时频率
        D:短时傅里叶变化
    """
  4. 音乐中常用的CQT算法 CQT  =  librosa.amplitude_to_db(librosa.cqt(y, sr = 16000 ), ref = np. max )
    """
    参数为:
        fmin:最小频率  
        n_bins:从最小频率开始,频率窗的数
        bins_per_octave:每倍频程的bin数量
        tuning:调整bin
    """
  5. 快速梅林变化:odf_ac_scale = librosa.fmt(librosa.util.normalize(odf_ac), n_fmt=512)
    """
    参数:
        y: np.ndarray, real-valued。输入信号,可以是多维的。目标轴必须至少包含3个样本。
        t_min: float > 0
            最小时间间隔(以样本为单位)。
            该值通常应小于1,以尽可能多地保留信息。
        n_fmt: int > 2 or None
             要使用的缩放变换bin数。
              如果为None, 则n_bins = over_sample * ceil(n * log((n-1)/t_min)) 其中 n = y.shape[axis]
        kind: str
            重新采样输入时要使用的插值类型。
            看scipy.interpolate.interp1d或许可选值
            请注意,默认值是使用high-precision(立方)插值。这在实践中可能很慢;如果速度优先于精度,那么考虑使用kind='linear'。
        beta: float
            梅林参数。beta=0.5提供了尺度变换。
        over_sample: float >= 1
            指数重采样的过采样因子。
        axis: int
            沿其变换y的轴
    返回:
        x_scale : np.ndarray [dtype=complex]
            y沿轴尺寸的缩放变换。
    """

你可能感兴趣的:(speech,学习,python,开发语言)