matlab lpc求共振峰频率,用Python中的LPC估计共振峰

2023-10-27

我对信号处理还不太熟悉(关于这一点,numpy、scipy和matlab)。我试着用Python中的LPC来估计元音共振峰,方法是修改下面的matlab代码:

这是我目前的代码:#!/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)

按照沃伦·韦克瑟的建议,现在

[631.44354635609318, 1815.8629524985781, 3421.8288991389031, 6667.5030877036006]

我觉得我好像丢了什么东西,因为F3非常不好。

更新2:

我意识到传递给order的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]

更接近普拉特的估计!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab lpc求共振峰频率,用Python中的LPC估计共振峰 的相关文章

  • 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性 非本地图片 确定图片资源存在 copy 图片url再浏览器打开 确定图片资源存在且能正常访问 本地图片 确定相对路径或者绝对路径正确 微信小程序图片路径 不可以存在中文 使用英文做路径和文
  • DataX同步Hive数据丢失,源码修复

    文章目录 DataX简介 DataX 商业版本 DataX的特点 DataX同步Hive数据丢失 DataX的Hive数据源HdfsReader插件 DataX简介 DataX 是阿里云 DataWorks数据集成 的开源版本 在阿里巴巴集
  • 推荐几款好用的压缩软件

    前言 压缩工具作为电脑装机必备软件我们在日常生活中都会经常用到 但是诸如好压 2345 WinRAR等一些常见的压缩软件都会有各种广告弹窗的现象 烦人至极 以下推荐几款免费无广告的强大压缩工具 7 Zip 仅有1M左右的安装包将轻巧便捷阐述
  • [从零开始学习FPGA编程-26]:进阶篇 - 基本组合电路-数据选择器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 数据选择器 1 1 数据选择器概述与原理
  • 能力和结果之间的关系

    大家好 这里是大话硬件 今天这篇文章想和大家分享前段时间的一点工作体会 关于个人能力和工作结果之间的关系 其实这些感悟是在上周三晚上下班 走在回家的路上 脑海中突然出现这样的体会 回到家里立马写了下来 因为是即时的灵感 完全是因为工作状态触
  • Python有限体积流体开尔文-亥姆霍兹不稳定性

    本文 我们将使用有限体积方法模拟开尔文 亥姆霍兹不稳定性 我们将考虑一种可压缩流体 它具有向背景相反方向移动的高密度流 速度切变引起了著名的不稳定性 有时在云层和木星的大红斑中也可以看到这种不稳定性 有限体积法 我们将描述有限体积法来模拟理
  • 【Web自动化】Python3+Selenium 框架⑸——登录页面类方法

    前言 Selenium是一个用于Web应用程序自动化测试工具 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 支持的浏览器包括IE 7 8 9 10 11 Mozilla Firefox Safari Google Chr
  • mybatisplus多表关联查询_神奇的SQL:探索多表连接查询的执行细节

    作者 jb hz 来源 https blog csdn net qq 27529917 先构建本篇博客的案列演示表 1 驱动表如何选择 驱动表的概念是指多表关联查询时 第一个被处理的表 使用此表的记录去关联其他表 驱动表的确定很关键 会直接
  • @Cacheable key的使用

    key属性是用来指定Spring缓存方法的返回结果时对应的key的 该属性支持SpringEL表达式 当我们没有指定该属性时 Spring将使用默认策略生成key 我们这里先来看看自定义策略 至于默认策略会在后文单独介绍 自定义策略是指我们
  • 【VTK】VTK9.1+QT6+VS2019编译

    VTK9 1 QT6 2 3 VS2019编译 环境准备 vtk9 1编译 QtCreator工程引入VTK 环境准备 QT安装时选上msvc 环境变量添加QT下bin 下载qt vs tools 不必要 https download qt
  • 一张脑图解析 ConcurrentHashMap 的重点知识点

    欢迎在评论区交流 一起学习 一起进步
  • Spring boot Banner和icon

    文章目录 Spring boot Banner和icon 上一节 源码 Spring boot banner 自定义banner 关闭banner 使用图片充当banner 源码分析 Spring boot icon 源码分析 下一节 Sp
  • 华为实习笔试复盘(1)配送站和客户问题

    写在前面 自己玩了很多项目 但是最近准备秋招的过程中 发现自己对于算法和编程语言的基本功夫实在是太欠缺了 投递了华为的实习岗位 4 26参加机考 一做题就发现了自己很多地方都不会 这里写下笔试后的复盘以警醒自己 题目 按照记忆来回顾题目 仅
  • 计算机毕业设计PHP基于微信小程序在线抽签系统(源码+程序+uni+lw+部署)

    该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 欢迎交流 项目运行 环境配置 phpStudy Vscode Mysql5 7 HBuilderX Navicat11 Vue Express 项目技术 原生PHP Vue 等
  • UE4用蓝图画出数学柱状图(第一更)

    UE4用蓝图画出数学柱状图 第一更 利用ue4画出数学柱状图主要用的蓝图节点 新建一个widget 在UI蓝图里面直接用上面四个节点是不行的 需要重写一个UI的函数 所有的绘画都要在这个函数里完成 这个引用在C 里写为了只读 且这个函数也不
  • 55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)

    55 Pandas DataFrame 转换为 JSON 字符串 文件并保存 to json 使用pandas DataFrame的方法to json 可以将pandas DataFrame转为JSON格式字符串 str类型 或者输出 保存
  • 闲谈:如何在js中定义枚举类

    定义枚举的意义和场景 今天遇到了一个场景 页面中有一个下拉框 里面两个选项 国有企业 民营企业 代码结构是这样的 text 国有企业 value 1 text 民营企业 value 2 value是用来存储 text是用来展示 数据回显的时
  • QT错误::-1: error: No rule to make target ‘res.qrc‘, needed by ‘debug/qrc_res.cpp‘. Stop.

    问题分析 出现这种错误是因为选中的资源文件的图片路径中含有中文 解决办法 先删除原有图片路径中含有中文的图片 将图片的路径中含有中文的部分修改后再进行添加 然后再重新执行即可
  • 【Vue】一文让你进入Vue的大门

    Vue简介 官网 英文官网 中文官网 介绍与描述 Vue历史 Vue 是一套用来动态构建用户界面的渐进式JS框架 构建用户界面 把数据通过某种办法变成用户界面 渐进式 Vue可以自底向上逐层的应用 简单应用只需要一个轻量小巧的核心库 复杂应

随机推荐

  • iOS 多线程知识体系构建(二):Pthreads、NSThread篇

    本篇首先来学习 iOS 多线程技术中的 Pthreads 和 NSThread Pthreads 可移植操作系统接口 英语 Portable Operating System Interface 缩写为POSIX 是 IEEE 电气和电子工
  • 解决anaconda无法创建虚拟环境问题

    报错信息 base C Users Administrator gt conda create name pytorch Solving environment done gt gt gt gt gt gt gt gt gt gt gt g
  • SpringBoot 通过 Feign 调用Django 接口

    注意 本教程实现的是SpringBoot 调用 Django 中的http接口 调用Django 的接口是为了更好的模拟项目流程 如果只想要理解调用过程 使用springBoot 调用springBoot 会更好 主要使用feign web
  • [Linux]使用CentOS镜像与rpm来安装虚拟机软件

    目录 一 前言 二 步骤 一 连接镜像文件 二 将需要的RPM文件移动到虚拟机上 三 安装rpm软件包 一 前言 本文使用的是CentOS的VM ware虚拟机 二 步骤 一 连接镜像文件 双击虚拟机右下角 打开虚拟机配置菜单 选中蓝圈中选
  • cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4051

    报错信息 cv2 error OpenCV 4 5 4 D a opencv python opencv python opencv modules imgproc src resize cpp 4051 error 215 Asserti
  • sqlserver 时间加减精确到分钟_SQL Server中sp_spaceused统计数据使用的空间总量不正确的原因...

    很多时候 我们经常使用sp spaceused来查看表的空间使用情况 上个月群里有个网友说他使用DELETE删除了数据后 使用sp spaceused查看 发现该表的分配的空间总量 reserved 与数据使用的空间总量 data 没有变化
  • 卸载地平线5所有文件。本人亲测。

    首先你要了解的是 你下载的游戏文件都会保存在windowsapps文件里面 但是删除这个文件我们需要获得权限 下面是讲如何删除这个文件 1 win r 输入 C Program Files WindowsApps 2 在 WindowsAp
  • MATLAB机器人工具箱使用

    MATLAB机器人工具箱 一 前言 在开始做机器人仿真之前 我了解了一系列机器人仿真软件 包括Matlab Webots Gazebo V rep Adams Simbad Morse等 的适用场景 使用方法等资料 决定从最经典的Matla
  • 程序设计之C语言判断满足条件的三位数

    6 6 判断满足条件的三位数 15 分 本题要求实现一个函数 统计给定区间内的三位数中有两位数字相同的完全平方数 如144 676 的个数 函数接口定义 int search int n 其中传入的参数int n是一个三位数的正整数 最高位
  • 超实用的自动化测试平台推荐

    什么是平台 平台就是一种用来实现某种功能的体系 包括各种不同的元素 架构 流程 标准 机制和工具等 而软件测试平台是为客户打造的集高效率 低成本等特性于一身的软件工作空间 它不仅可以大幅缩短软件产品的测试周期 还可以提升产品品质 同时还能充
  • Centos7安装Mysql

    1 添加Mysql Yum Repository rpm Uvh https dev mysql com get mysql80 community release el7 3 noarch rpm 然后查看Mysql包 yum list
  • 如何在 Java 中将 InputStream 读取/转换为字符串?

    问题描述 如果您有一个 java io InputStream 对象 您应该如何处理该对象并生成一个 String 假设我有一个包含文本数据的 InputStream 并且我想将其转换为 String 例如 我可以将其写入日志文件 获取 I
  • 线上排查问题大全

    CPU 一般来讲我们首先会排查cpu方面的问题 cpu异常往往还是比较好定位的 原因包括业务逻辑问题 死循环 频繁gc以及上下文切换过多 而最常见的往往是业务逻辑 或者框架逻辑 导致的 可以使用jstack来分析对应的堆栈情况 使用jsta
  • Vue 3 状态管理进阶:使用 Pinia 构建可扩展的应用程序

    Vue 3 状态管理进阶 使用 Pinia 构建可扩展的应用程序 前言 1 Pinia 简介 2 安装和配置 Pinia 3 创建和使用 Pinia Store 4 在组件中使用 Pinia Store 5 在模板中使用 Pinia Sto
  • JavaWeb通过前端向Mysql数据库中插入数据问题

    作为入门小白 记录下因为基础不扎实而踩得坑 在写注册界面时 需要利用web界面输入数据 idea操作向数据库插入数据 首先确定了数据库正常 tomcat正常运行 sql语句正常 在idea中测试业务层也能正常向数据库中插入数据 但是在web
  • 构造器注入导致的循环依赖问题及解决方案

    构造器注入导致的循环依赖问题及解决方案 目录 概述 实现思路分析 循环依赖 问题 解决方案 方式二 相关工具如下 分析 小结 参考资料和推荐阅读 LD is tigger forever CG are not brothers foreve
  • [疯狂Java]NIO.2:walkFileTree、FileVisitor(遍历文件/目录)

    1 遍历文件和目录 FileVisitor 1 在旧版本中遍历文件系统只能通过递归的方法来实现 但是这种方法不仅消耗资源大而且效率低 2 NIO 2的Files工具类提供了一个静态工具方法walkFileTree来高效并优雅地遍历文件系统
  • 七十五.二分查找的递归实现 —— JAVA

    编写递归代码是最重要的有以下三点 递归总有一个最简单的情况 方法的第一条语句总是一个包含 return的条件语句 递归调用总是尝试解决一个规模更小的子问题 这样递归才能收敛到最简单的情况 递归调用的父问题和尝试解决的子问题之间不应该有交集
  • 伪代码书写规范

    伪代码 Pseudocode 是一种算法描述语言 使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言 Pascal C Java etc 实现 因此 伪代码必须结构清晰 代码简单 可读性好 并且类似自然语言 介于自然语言与编程
  • matlab lpc求共振峰频率,用Python中的LPC估计共振峰

    我对信号处理还不太熟悉 关于这一点 numpy scipy和matlab 我试着用Python中的LPC来估计元音共振峰 方法是修改下面的matlab代码 这是我目前的代码 usr bin env python import sys imp