语音共振峰的获取python

2 共振峰的获取

2.1 倒谱法求共振峰

流程如下:

预处理
FFT
对数幅值谱
IFFT
窗函数
FFT

具体步骤:

倒谱法共振峰估计的算法过程为:

  • 对语音信号 x x x进行预加重,并进行加窗,FFT处理
    X ( k ) = ∑ n = 1 N x ( n ) e − 2 π k n j N (2-1) X(k)=\sum_{n=1}^Nx(n)e^{-\frac{2\pi kn j}{N}} \tag{2-1} X(k)=n=1Nx(n)eN2πknj(2-1)
    窗函数为汉明窗,长度为320。声音采样频率为8000Hz,FFT长度默认为65536。

  • X ( k ) X(k) X(k)的倒谱:
    x ^ ( n ) = 1 N ∑ k = 1 N lg ⁡ ∣ X ( k ) ∣ e − 2 π k n j N (2-2) \hat x(n)=\frac{1}{N}\sum_{k=1}^N\lg|X(k)|e^{-\frac{2\pi kn j}{N}} \tag{2-2} x^(n)=N1k=1NlgX(k)eN2πknj(2-2)

  • 给倒谱信号加窗得: h ( n ) = x ^ ( n ) × h ( n ) h(n)=\hat x(n)\times h(n) h(n)=x^(n)×h(n),这里的窗函数和倒谱的分辨率有关(和采样率和FFT长度有关):
    h ( n ) = { 1 n ⩽ n 0 − 1 & n ⩾ N − n 0 + 1 0 n 0 − 1 < n < N − n 0 + 1 , n ∈ [ 0 , N − 1 ] (2-3) h(n)=\left \{\begin{array}{lc} 1&n\leqslant n_0-1 \&n\geqslant N-n_0+1\\ 0& n_0-1<n<N-n_0+1 \end{array}\right.,n\in[0,N-1] \tag{2-3} h(n)={10nn01&nNn0+1n01<n<Nn0+1,n[0,N1](2-3)
    式中 n 0 n_0 n0是窗函数的宽度

  • 求包络线

  • 在包络线上寻找极大值,获得相应共振峰参数。

实现代码为:

def Formant_Cepst(u, cepstL):"""倒谱法共振峰估计函数:param u:输入信号:param cepstL:🔪频率上窗函数的宽度:return: val共振峰幅值 :return: loc共振峰位置 :return: spec包络线"""wlen2 = len(u) // 2u_fft=np.fft.fft(u)                         #按式(2-1)计算U = np.log(np.abs( u_fft[:wlen2]))Cepst = np.fft.ifft(U)                      #按式(2-2)计算cepst = np.zeros(wlen2, dtype=np.complex)cepst[:cepstL] = Cepst[:cepstL]             #按式(2-3)计算cepst[-cepstL + 1:] = Cepst[-cepstL + 1:]	#取第二个式子的相反 spec = np.real(np.fft.fft(cepst))val, loc = local_maxium(spec)               #在包络线上寻找极大值return val, loc, spec

2.2 测试结果

低通窗函数 n 0 = 7 n_0=7 n0=7。测试男性a1画出波形如图所示:
在这里插入图片描述

五元音的前两共振峰的测试结果如下:

元音第一共振峰第二共振峰
a1/a21021/10442428/2404
o1/o2596/5221583/1673
e1/e2469/408996/1018
i1/i2372/3751149/1031
u1/u2508/5141543/3494

2.3 实现程序

CepstrumFormant.py

from 共振峰估计函数 import *
from scipy.signal import lfilter
import librosa
import numpy as np
import matplotlib.pyplot as pltplt.figure(figsize=(14, 12))
path="F:\\python\\VowelStuday\\SingleVowel\\aoeiu元音音频\\原始元音男性\\a1.wav"
#path="C4_3_y.wav"
#data, fs = soundBase('C4_3_y.wav').audioread()
data, fs = librosa.load(path, sr=None, mono=False)#sr=None声音保持原采样频率, mono=False声音保持原通道数
# 预处理-预加重
u = lfilter([1, -0.99], [1], data)cepstL = 7
wlen = len(u)
wlen2 = wlen // 2
print("帧长={}".format(wlen))
print("帧移={}".format(wlen2))
# wlen = 256
# wlen2 = 256//2
# 预处理-加窗
u2 = np.multiply(u, np.hamming(wlen))
# 预处理-FFT,取对数 获得频域图像 取一半
U_abs = np.log(np.abs(np.fft.fft(u2))[:wlen2])
# 4.3.1
freq = [i * fs / wlen for i in range(wlen2)]
#print(freq)
#val共振峰幅值 loc共振峰位置 spec包络线
val, loc, spec = Formant_Cepst(u, cepstL)
plt.subplot(2, 1, 1)
plt.plot(freq, U_abs, 'k')
plt.xlabel('频率/Hz')           #设置x,y轴的标签
plt.ylabel('幅值')
plt.title('男性a的发音频谱')
plt.subplot(2, 1, 2)
plt.plot(freq, spec, 'k')
plt.xlabel('频率/Hz')           #设置x,y轴的标签
plt.ylabel('幅值')
plt.title('倒谱法共振峰估计')
for i in range(len(loc)):plt.subplot(2, 1, 2)plt.plot([freq[loc[i]], freq[loc[i]]], [np.min(spec), spec[loc[i]]], '-.k')plt.text(freq[loc[i]], spec[loc[i]], 'Freq={}'.format(int(freq[loc[i]])))plt.savefig('images/共振峰估计.png')
plt.show()
plt.close()

2.3 共振峰位置坐标

以元音的第一共振峰频率为x轴,第二共振峰频率为y轴,将五个元音的前两个共振峰画在一个二维空间中。五个元音是同一个人的发音。
在这里插入图片描述

2.4 多种情况下的共振峰测试

对于同一个元音,不同性别的发声人在第1共振峰频率和第2共振峰频率的两共振峰的测试结果如下:

元音第一共振峰第二共振峰
男性a发音10212428
女性a发音11452364
男性e发音469996
女性e发音5001118
男性i发音3721149
女性i发音3791106
男性o发音5961583
女性o发音6171663
男性u发音5081543
女性u发音4372426

对于同一个元音,不同性别的发声人在第1共振峰频率和第2共振峰频率的差值如下:

元音第一共振峰第二共振峰
a发音男女的差值12464
e发音男女的差值31122
i发音男女的差值743
o发音男女的差值2180
u发音男女的差值71883

从上表可以看出,对于同一个元音,不同性别的发声人在第1共振峰频率的差值控制在200Hz以内,而第1共振峰频率的差值变换幅度较大。

对于同一个元音,不同的发声人(同一性别)在第1共振峰频率和第2共振峰频率的两共振峰的测试结果如下:

元音第一共振峰第二共振峰
01号发声人a发音10212428
02号发声人a发音10632947
03号发声人a发音10981849

从上表对于同一个元音,不同的发声人(同一性别)在第1共振峰频率的差距不上特别明显,相差大约在40Hz左右,而在第2共振峰频率上的差距就很明显。

完整的源代码放于我的github:https://github.com/taw19960426/-Speech-signal-processing-experiment-tutorial-_python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24467.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

震源机制(Focal Mechanism)之沙滩球(Beach Ball)

震源机制系列文章&#xff1a; 震源机制(Focal Mechanism)之断层基本知识 震源机制沙滩球(focal mechanism beach ball)绘制之傻瓜式教程 沙滩球包含如下信息&#xff1a; a - 判断断层类型&#xff0c;可根据球的颜色快速判断 b - 判断断层的走向(strike)&#xff0c;倾角…

核磁共振、顺磁共振、磁共振成像......你想要的都在这里

磁共振指的是自旋磁共振(spin magnetic resonance)现象&#xff0c;包含核磁共振(nuclear magnetic resonance, NMR)、电子顺磁共振(electron paramagnetic resonance, EPR)或称电子自旋共振(electron spin resonance, ESR)。人们日常生活中常说的磁共振成像(Magnetic Resonanc…

磁共振成像(MRI)影像心脏组织分割

前言 记录一下最近课设做的心脏组织分割的工作。 一、数据集 数据是分为三类&#xff08;HCM) (DCM) (NOR) 的心脏MRI图像。每类十五组&#xff0c;一组8~10张图片。前两类是患有心脏疾病的&#xff0c;后一类是正常人的心脏。&#xff08;其实在对心脏分割完后还有一个在分割…

ADNI静息态功能核磁共振成像数据预处理总流程

ADNI静息态功能核磁共振成像数据预处理总流程共如下八步 目录 1. 下载DICOM格式数据 2. DICOM -> NIFTI格式 输出s开头文件 3. 时间层校正Slice Timing 输出as开头文件 4. 头动校正Realignment 输出ras开头文件 5. 归一化Normalize 输出w开头文件 6. 平滑Smooth 输出…

fMRI功能磁共振数据预处理流程图示

功能磁共振数据预处理流程&#xff0c;包括数据格式转换&#xff08;dicom to nifti&#xff09;、去除不稳定时间点&#xff08;remove timepoints&#xff09;、时间层校正&#xff08;slice timing&#xff09;、头动校正&#xff08;realign/head motion correction&#x…

共振与共振峰

共振出现在结构或材料在一特定频率下发生大幅度自然振动时。这个特定的频率被称为结构的共振频率&#xff0c;通常一个结构有很多个共振频率。 系统受到外界激励产生的响应表现为大幅度的振动&#xff0c;此时外界激励频率与系统的固有振动频率相同或者非常接近。 当结构的阻尼…

事件相关功能磁共振波谱技术(fMRS)

导读 质子磁共振波谱(MRS)是一种非侵入性脑成像技术&#xff0c;用于测量不同神经化学物质的浓度。“单体素”MRS数据通常在几分钟内采集&#xff0c;然后对单个瞬态进行平均&#xff0c;从而测量神经化学物质浓度。然而&#xff0c;这种方法对更快速的神经化学物质的时间动态…

生化实验技术——Fret荧光共振能量转移

Fret荧光共振能量转移 - 蛋白互作-德泰生物http://www.detaibio.com/topics/fret-overview.html 目录 Fret荧光共振能量转移 作用原理 技术难点 应用要求 优缺点 应用 实验流程简述 Fret荧光共振能量转移 对于分子生物学来讲&#xff0c;生物分析手段的发展&#xff0c…

语音信号处理共振峰

窄带语谱图和宽带语谱图 首先&#xff0c;什么是语谱图。最通常的&#xff0c;就是语音短时傅里叶变换的幅度画出的2D图。之所以是通常的&#xff0c;是因为可以不是傅里叶变换。“窄带”&#xff0c;顾名思义&#xff0c;带宽小&#xff0c;则时宽大&#xff0c;则短时窗长&am…

程序员表白网页特效

共五个特效 访问博客免费下载访问博客 全部代码下载 代码下载 第一个特效 第二个特效 第三个特效 第四个特效&#xff0c;可以点击愿意不愿意&#xff0c;然后后面还有多个页面 第五个特效

CSS常用特效

本文是笔者写CSS时常用的套路。不论效果再怎么华丽&#xff0c;万变不离其宗。 1、交错动画 有时候&#xff0c;我们需要给多个元素添加同一个动画&#xff0c;播放后&#xff0c;不难发现它们会一起运动&#xff0c;一起结束&#xff0c;这样就会显得很平淡无奇。那么如何将动…

Unity的一些特效和粒子特效插件

Unity的插件 Kitchen Cooking FX 厨房烹饪效果和声音Ultimate VFX 终极粒子特效资源包Advanced Dissolve高级溶解插件Translucent Image 半透明高斯模糊Teleport Effect 传送光圈特效AraTrail 拖尾SVG Importer矢量图导入插件FX Magic Circle 魔法圈特效Highlight Plus 外发光 …

html鼠标爱心特效代码,鼠标点击爱心特效代码分享

鼠标点击爱心特效代码分享 !function(e, t, a) { function r() { for (var e 0; e < s.length; e) s[e].alpha < 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale .004, s[e].alpha - .013, s[e].el.style.cssText "left:" s…

两行Python代码实现视频负片特效

☞ ░ 老猿Python博文目录&#xff1a;https://blog.csdn.net/LaoYuanPython ░ 一、引言 最近看到好几篇类似“n行Python代码…”的博文&#xff0c;看起来还挺不错&#xff0c;简洁、实用&#xff0c;传播了知识、带来了阅读量&#xff0c;撩动了老猿的心&#xff0c;决定跟…

再聊聊财务自由

前段时间有人在我星球讨论财务自由&#xff0c;说自由的本质是选择权&#xff0c;有读者觉得大受启发&#xff0c;我就翻了一下旧文&#xff0c;我2017年就说过了啊&#xff0c;谈谈财务自由 。 但时过境迁&#xff0c;其实我想改变一下之前的说法&#xff0c;所谓财务自由&…

《周易》乾卦爻辞

1. 初九.潜龙勿用 初九&#xff0c;潜龙勿用。 下爻为初。九&#xff0c;阳数之盛&#xff0c;故以名阳爻。理无形也&#xff0c;故假象以显义。乾以龙为象。龙之为物&#xff0c;灵变不测&#xff0c;故以象乾道变化&#xff0c;阳气消息&#xff0c;圣人进退。初九在一卦之下…

《光剑教教义:五信 九训 十诫 九罪》

五信 1.没有神、上帝、救世主&#xff0c;每个人就是自己的神、上帝、救世主&#xff1b;天助自助者。一个人能够在想象中创造的事情&#xff0c;没有什么是不能实现的。我们所需要的&#xff0c;只是把蕴含在我们自身的所有潜在力量激发出来。 2.神不过是世界上的一般能源&a…

德鲁克《管理的实践》笔记

谈管理时必须将三个方面都纳入考虑&#xff1a;第一是成果和绩效&#xff0c;因为这是企业存在的目的&#xff1b;第二必须考虑在企业内部共同工作的人所形成的组织&#xff1b;第三则要考虑外在的社会&#xff0c;也就是社会影响和社会责任。 第1章 管理层的角色 在每个企业中…

C++多态性分析和与Linux内核中的多态性实现的共性和差异比较

Linux内核是用C语言开发的&#xff0c;而C是面向结构&#xff0c;面向过程的语言&#xff0c;这种语言的特点是数据结构和数据操作是分离的两个部分&#xff0c;但是这并不代表面向过程的语言无法实现面向对象语言的一些机制&#xff0c;比如多态性&#xff0c;多态的本质在于其…

为什么有些 985、211 的本科学生即使在大学里混得很水,在找工作时学历却那么管用?...

学术分享&#xff0c;侵删 知乎&#xff1a;https://www.zhihu.com/question/354234322 编辑&#xff1a;AI有道 最近网上有个话题比较有争议&#xff1a;【为什么有些 985、211 的本科学生即使在大学里混得很水&#xff0c;在找工作时学历却那么管用&#xff1f;】笔者认为&am…