非常实用的信号处理库pysptk(python)

pysptk库

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

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

sp2mc

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

将频谱包络转换为倒谱。

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)

输入参数:

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):

计算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):

频率变换。

输入参数
**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)

参数和上面类似。

输入:
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算法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值