Python常用信号处理函数之pysptk

Python常用信号处理函数之pysptk

A python wrapper for Speech Signal Processing Toolkit (SPTK).
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-倒谱)

你可能感兴趣的:(语音基础知识,信号处理,python,信号处理)