matlab lpc求共振峰频率,在Python中使用LPC估计共振峰
我是信号处理的新手(而且是numpy,scipy和matlab).我正在尝试通过调整这个matlab代码来估计
Python中使用LPC的元音共振峰:
到目前为止,这是我的代码:
#!/usr/bin/env python
import sys
import numpy
import wave
import math
from scipy.signal import lfilter, hamming
from scikits.talkbox import lpc
"""
Estimate formants using LPC.
"""
def get_formants(file_path):
# Read from file.
spf = wave.open(file_path, 'r') # http://www.linguistics.ucla.edu/people/hayes/103/Charts/VChart/ae.wav
# Get file as numpy array.
x = spf.readframes(-1)
x = numpy.fromstring(x, 'Int16')
# Get Hamming window.
N = len(x)
w = numpy.hamming(N)
# Apply window and high pass filter.
x1 = x * w
x1 = lfilter([1., -0.63], 1, x1)
# Get LPC.
A, e, k = lpc(x1, 8)
# Get roots.
rts = numpy.roots(A)
rts = [r for r in rts if numpy.imag(r) >= 0]
# Get angles.
angz = numpy.arctan2(numpy.imag(rts), numpy.real(rts))
# Get frequencies.
Fs = spf.getframerate()
frqs = sorted(angz * (Fs / (2 * math.pi)))
return frqs
print get_formants(sys.argv[1])
使用this file作为输入,我的脚本返回以下列表:
[682.18960189917243, 1886.3054773107765, 3518.8326108511073, 6524.8112723782951]
我甚至没有达到他们按带宽过滤频率的最后步骤,因为列表中的频率不正确.根据Praat的说法,我应该得到这样的东西(这是元音中间的共振峰列表):
Time_s F1_Hz F2_Hz F3_Hz F4_Hz
0.164969 731.914588 1737.980346 2115.510104 3191.775838
我究竟做错了什么?
非常感谢
更新:
我换了这个
x1 = lfilter([1., – 0.63],1,x1)
至
x1 = lfilter([1],[1.,0.63],x1)
按照Warren Weckesser的建议,我现在正在接受
[631.44354635609318,1815.8629524985781,3421.8288991389031,6667.5030877036006]
我觉得我错过了一些东西,因为F3非常关闭.
更新2:
我意识到由于采样频率的不同,传递给scikits.talkbox.lpc的订单已经关闭.将其更改为:
Fs = spf.getframerate()
ncoeff = 2 + Fs / 1000
A, e, k = lpc(x1, ncoeff)
现在我得到:
[257.86573127888488,774.59006835496086,1769.4624576002402,2386.7093679399809,3282.387975973973,4413.0428174593926,6060.8150432549655,6503.3090645887842,7266.5069407315023]
更接近Praat的估计!
matlab lpc求共振峰频率,在Python中使用LPC估计共振峰相关推荐
- matlab lpc求共振峰频率,用Python中的LPC估计共振峰
我对信号处理还不太熟悉(关于这一点,numpy.scipy和matlab).我试着用Python中的LPC来估计元音共振峰,方法是修改下面的matlab代码: 这是我目前的代码:#!/usr/bin/ ...
- matlab求最小范数解,python中计算最小范数解或伪逆解最精确的方法是什么?
我的目标是解决:Kc=y 对于伪逆(即最小范数解): ^{pr2}$ 这样模型(希望)是高次多项式模型f(x) = sum_i c_i x^i.我特别感兴趣的是我们有更多的多项式特征比数据(少方程太多 ...
- linux中python如何调用matlab的数据_?如何在Python中加入多个数据帧?
全文共2235字,预计学习时长7分钟 来源:Pexels 初学Python编程的人,面临的是各种未知的挑战. 下面是一个几乎让所有更有抱负的数据科学家都感到意外的场景: 你正在处理一个从多个源收集数据 ...
- matlab 判断是否是nan,关于Python中Inf与Nan的判断问题详解
python中运行错误,关于聚类算法出现的nan值问题处理的数据有10个属性,使用kmeans聚类算法出现了nan值的错误,请问怎么说明你的样本数据中有nan值,通常是因为原始数据中包含空字符串或No ...
- python编程求导数_在python中如何计算导数?
这个问题的答案很简单.当然,在另一个答案中给出的subs选项可用于计算某个数的导数,但如果要绘制导数,则不起作用.有一种方法可以解决这个问题:lambdify,如下所述. 使用lambdify将所有s ...
- matlab 创建彩色图像,用matlabd在Python中创建彩色图像
我正在尝试用Python创建彩色图像.数据来自Matlab文件. 这是我的密码.实际上我只能创建灰度图像,但我需要彩色图像. 你能帮帮我吗?在 Matlab文件的数据是512x512x200双数组.在 ...
- python 多项式求系数_在Python中用于计算“多项式系数”的numpy / scipy函数
是否有任何 python函数(可能来自numpy或scipy)计算扩展中x ** r的系数(1 xx ** 2 x ** 3 - x **(k-1))** n ,其中k> = 1,n> = ...
- python求雅可比矩阵_在Python中计算神经网络的雅可比矩阵
通常,神经网络是一个多变量,矢量值函数,如下所示: 函数f有一些参数θ(神经网络的权重),它将一个N维向量x(即猫图片的N像素)映射到一个m维矢量(例如,x属于M个不同类别中的每个类别的概率): 在训 ...
- matlab的gccphat转C语言,Python中的GCCPHAT互相关
我试图用python实现GCC-PHAT.在 该方法类似于以下两个环节: link1和link2 GCC-PHAT和使用FFT的正常互相关之间的唯一区别似乎是除以幅度.在 这是我的代码:import ...
最新文章
- 震惊!这样终止线程,竟然会导致服务宕机?
- linux命令——pwd
- Javascript中的对象和原型(一)(转载)
- 方立勋_30天掌握JavaWeb_使用httpUrlConnection模似ie
- “5G+AI”到底有啥用?这篇漫画告诉你答案…
- recv和send函数
- 芜湖市计算机应用能力考试,安徽省芜湖市2021年3月计算机等级考试时间
- F - Wormholes(判断是否存在负环)
- word修订模式怎么彻底关闭_标书制作靠它准没错!那些你不知道的Word技巧大全...
- python snap7 plc db_python 用Snap7读写西门子PLC中DB块
- 未来教育计算机二级答案,未来教育计算机二级操作题答案.docx
- 详解基于深度学习的伪装目标检测
- 荷尔蒙飘香的套套市场,谁才是王者?
- python绘制三重积分图像_三重积分-图解高等数学13 | 文艺数学君
- 跑步戴哪种耳机好,最适合运动跑步的蓝牙耳机
- 我的微信公众平台*1*
- 【ospf的网络类型】BMA、P2P、P2MP、NBMA、Vlink
- PrimoCache2.2.0汉化程序与2.0.0的交叉使用
- 一个HR人给应届生的面试建议【推荐】
- FUTURES模型 | 4. Demand 需求子模块
热门文章
- python怎么筛选excel数据_懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(上)-excel筛选...
- unity3d 九宫格切割以及如何获取切割完的图片
- 半身证件照如何制作?手把手教你制作办法
- 软件宝宝系列——SQL注入篇
- Vue项目构建开发入门
- 细粒度分类:Diversified Visual Attention Networks
- java 健康助手项目_2019年 CZ JAVA健康项目视频教程(代码、讲义、资源、视频)...
- c++ eos智能合约开发_EOS智能合约开发点滴记录-第二篇智能合约编写
- 应急制冷精密空调 数据中心应急制冷系统
- 露营热持续升温,火星玩家首创“电核露营”切入千亿赛道