语音识别原理与应用:第三章 语音特征提取 3.2短时傅里叶变换

3.2短时傅里叶变换

语音的感知过程与人类听觉系统具有频谱分析功能紧密相关。因此,对语音信号进行频谱分析,是认识和处理语音信号的重要方法。

声音从频率上可以分为纯音复合音
纯音只含一种频率的声音(基音),而没有倍音。
复合音是除基音外,还包含多种倍音的声音。
大部分声音(包括语音)都是复合音,涉及多个频率段。
如何分离不同频率信号呢?
在这里插入图片描述
在这里插入图片描述
一帧
在这里插入图片描述

import librosa
from matplotlib.font_manager import FontProperties
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile

fonts = FontProperties(fname = "D:\Desktop\语音识别原理与应用\方正粗黑宋简体.ttf",size=14)
#分帧
def enframe(x, win, inc=None):
    nx = len(x)
    if isinstance(win, list) or isinstance(win, np.ndarray):
        nwin = len(win)
        nlen = nwin  # 帧长=窗长
    elif isinstance(win, int):
        nwin = 1
        nlen = win  # 设置为帧长
    if inc is None:
        inc = nlen
    nf = (nx - nlen + inc) // inc
    frameout = np.zeros((nf, nlen))
    indf = np.multiply(inc, np.array([i for i in range(nf)]))
    for i in range(nf):
        frameout[i, :] = x[indf[i]:indf[i] + nlen]
    if isinstance(win, list) or isinstance(win, np.ndarray):
        frameout = np.multiply(frameout, np.array(win))
    return frameout
#帧长
def FrameTimeC(frameNum, frameLen, inc, fs):
    ll = np.array([i for i in range(frameNum)])
    return ((ll - 1) * inc + frameLen / 2) / fs
#%%短时傅里叶变换
def STFFT(x, win, nfft, inc):
    xn = enframe(x, win, inc)
    xn = xn.T
    y = np.fft.fft(xn, nfft, axis=0)
    return y[:nfft // 2, 100]
data, fs = librosa.load('beijing.wav',sr=None)
#%%
wlen = 256
nfft = wlen
win = np.hamming(wlen)
inc = 128
y = STFFT(data, win, nfft, inc)
plt.subplot(211)
plt.plot(y)
plt.subplot(212)
N=len(y)
# 分辨率
df = fs/(N-1)
# 构建频率数组
f = [df*n for n in range(0,N)]
Y = np.fft.fft(y)*2/N  #*2/N 反映了FFT变换的结果与实际信号幅值之间的关系
absY = [np.abs(x) for x in Y]      #求傅里叶变换结果的模
plt.plot(f,absY)
plt.xlabel('(Hz)')
plt.title("fft")
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大桃子技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值