librosa--学习笔记(1)

  1. 加载音频librosa.load(path, sr=22050, mono=True, offset=0.0, duration=None)   #可以是WAV、Mp3等:
    """
    
    参数:
        path :音频文件的路径。
        sr:采样率,是每秒传输的音频样本数,以Hz或kHz为单位。默认采样率为22050Hz(sr缺省或sr=None),高于该采样率的音频文件会被下采样,低于该采样率的文件会被上采样。
        以44.1KHz重新采样:librosa.load(audio_path, sr=44100)
        禁用重新采样(使用音频自身的采样率):librosa.load(audio_path, sr=None)
        mono :bool值,表示是否将信号转换为单声道。mono=True为单声道,mono=False为stereo立体声            
        offset :float,在此时间之后开始阅读(以秒为单位)
        duration:持续时间,float,仅加载这么多的音频(以秒为单位)
        dtype:返回的音频信号值的格式,似乎只有float和float32
        res_type:重采样的格式
    
    返回:
        y:音频时间序列,类型为numpy.ndarray
        sr:音频的采样率,如果参数没有设置返回的是原始采样率
    
    """
  2. 使用IPython.display.Audio 直接在jupyter笔记本中播放音频:

    import IPython.display as ipd
    ipd.Audio(path)
  3. 重采样:librosa.resample(y, sr, 16000, fix=True, scale=False):

    """
    参数:
        y:音频时间序列。可以是单声道或立体声。
        orig_sr:y的原始采样率
        target_sr:目标采样率
        fix:bool,调整重采样信号的长度。
        scale:bool,缩放重新采样的信号,以使y和y_hat具有大约相等的总能量。
    返回:
        y_hat :重采样之后的音频数组
    """
  4. 计算时间序列的的持续时间(以秒为单位):librosa.get_duration(y=y, sr=22050, S=None, n_fft=2048, hop_length=512, center=True, filename=None) :

    """
    参数:
        y:音频时间序列
        sr:y的音频采样率
        S:STFT矩阵或任何STFT衍生的矩阵(例如,色谱图或梅尔频谱图)。根据频谱图输入计算的持续时间仅在达到帧分辨率之前才是准确的。如果需要高精度,则最好直接使用音频时间序列。
        n_fft:S的FFT窗口大小
        hop_length :S列之间的音频样本数
        center :布尔值
            如果为True,则S [:, t]的中心为y [t* hop_length]
            如果为False,则S [:, t]从y[t * hop_length]开始
        filename:如果提供,则所有其他参数都将被忽略,并且持续时间是直接从音频文件中计算得出的。
    返回:d :持续时间(以秒为单位)
    """
  5. 过零率:描述声音的明亮程度,声音越明亮,过零率越高。因为声音信号是波形,所以过零率越高,表示频率越高。声音的频率高则其在单位时间内拥有更多波形周期,因此 单位时间内过零数会更多,那么过零率就更高。librosa.zero_crossings(y[n0:n1], pad=False):

    """
    参数:
        y:音频时间序列
        frame_length :帧长
        hop_length:帧移
        center:bool,如果为True,则通过填充y的边缘来使帧居中。
    返回:zcr:zcr[0,i]是第i帧中的过零率
    """
  6. 自相关(autocorrelation)也叫序列相关,可以描述一个信号与其沿时间轴位移后的版本之间的相似度:librosa.autocorrelate(y, max_size=int(k_high))  # int(k_high) = 801:
    """
    参数:
        y:信号值
        max_size:要求自相关的长度
        axis:沿着的维
    返回值:y关于max_size的自相关值
    """
  7. 展示波形:librosa.display.waveshow(y, sr=22050, x_axis='time', offset=0.0, ax=None):

    """
    参数:
        y:音频时间序列
        sr:y的采样率
        x_axis:str {‘time’,‘off’,‘none’}或None,如果为“时间”,则在x轴上给定时间刻度线。
        offset:水平偏移(以秒为单位)开始波形图
    音频信号每一位分别对应一个采样点,其位数等于“采样率*音频时长(以秒为单位)”,记录了每个样本上音频的振幅信息.
    """
  8. 数据标准化:sklearn.preprocessing.scale(mfccs, axis=1,with_mean=True, with_std=True)  

    """
    公式:(X-X_mean)/X_std 计算时对每个属性/每列分别进行。
    原理:得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1。
    参数:
        X:待处理的数组
        axis:表示处理哪个维度,0表示处理横向的数据(行), 1表示处理纵向的数据(列)
        with_mean:默认为true,表示使均值为0
        with_std:默认为true,表示使标准差为1
    """
  9. 抽取mfcc特征:librosa.feature.mfcc(y, sr):

    """
    参数:
        y:音频数据。np.ndarray [shape=(n,)] 或 None
        sr:y的采样率。number > 0 [scalar]
        S:对数功能梅尔谱图。np.ndarray [shape=(d, t)] or None
        n_mfcc:要返回的MFCC数量。 int > 0 [scalar]
        dct_type:离散余弦变换(DCT)类型。默认情况下,使用DCT类型2。None, or {1, 2, 3}
        norm: None or ‘ortho’ 规范。如果dct_type为2或3,则设置norm =’ortho’使用正交DCT基础。标准化不支持dct_type = 1。
        n_fft:返回的mfcc数据维数,默认为13维。#获得N_FFT的长度N_FFT=getNearestLen(0.25,sr);print(“N_FFT:” , N_FFT)
        hop_length:帧移
        lifter: 如果 lifter>0, 提升倒谱滤波。设置lifter >= 2 * n_mfcc强调高阶系数。随着lifter的增加,权重系数近似为线性。
        kwargs: 额外的关键参数。参数melspectrogram,如果按时间序列输入操作
    返回:M:np.ndarray [shape=(n_mfcc, t)] 。 MFCC序列
    """

猜你喜欢

转载自blog.csdn.net/weixin_45647721/article/details/127433709