• Python常用信号处理函数之pysptk


    pysptk库

    A python wrapper for Speech Signal Processing Toolkit (SPTK).
    pysptk是一款语音信号处理工具包。

    源码地址:pysptk源码及安装等
    文档:pysptk文档

    sp2mc

    mcep = pysptk.sp2mc(spc, config["dim_mcep"], config["alpha"])
    
    • 1

    频谱包络转换为倒谱。

    def sp2mc(powerspec, order, alpha):
        # |X(ω)|² -> log(|X(ω)²|)
        logperiodogram = np.log(powerspec)
    
        # transform log-periodogram to real cepstrum
        # log(|X(ω)|²) -> c(m)
        c = np.fft.irfft(logperiodogram)
        c[0] /= 2.0
    
        # c(m) -> cₐ(m)
        return freqt(c, order, alpha)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输入参数:

    powerspec: array
    功率谱

    order:int
    想要的mcep维数

    alpha:float
    全通的常数。

    输出返回:

    mc : array, shape(order+1)
    mel-cepstrum

    其中,又用到np.fft.irfft:

    def irfft(a, n=None, axis=-1, norm=None):
    
    • 1

    计算n点DFT的逆。

    输入参数
    a: array_like
    输入数组。

    n: int,可选输出转换轴的长度。对于’ n ‘输出点,’ n//2+1 ’ ‘输入点是必要的。如果输入长度大于此值,则进行裁剪。如果它比这个短,就用0填充。如果没有给出’ n ‘,则被认为是’ ’ 2*(m-1) ’ ‘,其中’ ’ m ’ ‘是输入沿’ axis '指定的轴的长度。

    axis: int,
    可选的计算FFT逆的轴。如果没有给出,则使用最后一个轴。

    norm: {None, “ortho”},可选。
    1.10.0规范化模式(参见’ numpy.fft ')。默认值为None。

    输出返回
    out: ndarray
    被截断或补零的输入,沿’ axis ‘指示的轴转换,如果’ axis ‘未指定则按最后一个轴转换。转换轴的长度是’ n ‘,或者,如果’ n ‘没有给出,’ ’ 2*(m-1) ’ ‘,其中’ ’ m ’ ‘是输入的转换后轴的长度。要获得奇数个输出点,必须指定’ n '。

    注意,普通的ifft的输入的最后一项是第二项的复共轭,而输出的虚部处处为零。当调用’ irfft '时,不指定负频率,输出数组为纯实数。

    还用到一个函数frert:

    def freqt(ceps, order=25, alpha=0.0):
    
    • 1

    频率变换。

    输入参数
    **ceps:**数组倒谱。

    order:int,
    可选转换倒谱的期望顺序。默认值是25。

    alpha:float
    可选全通常数。默认值是0.0。

    返回输出:
    dst_ceps: array, shape(’ ’ order + 1 ’ ')
    频率转换的倒谱(通常为mel-倒谱)

    mfcc

    求梅尔频率倒谱系数。

    mfcc = pysptk.sptk.mfcc(x, order=14, fs=16000, alpha=0.97, eps=1.0, window_len=None, frame_len=None, num_filterbanks=20, cepslift=22, use_dft=False, use_hamming=False, czero=False, power=False)
    
    • 1

    参数和上面类似。

    输入:
    order:MFCC的维数。默认值是14。取前14维。
    alpha:预加重系数。默认0.97
    eps:在滤波器组分析中计算log(x)的flooring value值。默认为1.0。

    cepslist:同态滤波系数。默认为22。
    czero:如果为True,则mfcc也返回第0个系数。默认为False。
    power:如果为True,则mfcc也返回功率系数。默认为False。

    输出:
    MFCC向量,顺序为:mfcc [0], mfcc [1], mfcc[2],…mfcc [1], c0,power。
    注意,c0和Power是可选的。
    如果c0或power设置为True,则order + 1。
    如果c0和power都设置为True,则order + 2。

    广义mel倒谱分析

    在这里插入图片描述

    F0分析

    包括swipe算法和RAPT算法
    在这里插入图片描述

  • 相关阅读:
    对企业数字化转型有哪些建议?
    SpringBoot集成Thymeleaf——关闭页面缓存——设置热部署
    SEO与 SMO 的区别
    MyBioSource 小鼠 Pim-2 癌基因 ELISA 试剂盒说明书
    LeetCode 0174. 地下城游戏
    web开发
    OSG第三方库编译之三十四:Expat编译(Windows、Linux、Macos环境下编译)
    2023-简单点-IOU计算
    Cocos Creator3.8 实战问题(二)cocos creator编辑器中绑定事件引发的bug
    【Linux】之shell入门
  • 原文地址:https://blog.csdn.net/qq_36002089/article/details/127802225