matlab计算图片基频,复倒频谱 - 基频估计
复倒频谱 - 基频估计
此示例说明如何使用复倒频谱估计说话者的基频。此示例同时使用过零方法估计基频,并比较两种方法所得的结果。
加载语音信号。录音内容是女声朗读的 "MATLAB"。采样频率为 7418 Hz。以下代码将语音波形 mtlb 和采样频率 Fs 加载到 MATLAB® 工作区中。
load mtlb
使用频谱图识别一个浊音段进行分析。
segmentlen = 100;
noverlap = 90;
NFFT = 128;
spectrogram(mtlb,segmentlen,noverlap,NFFT,Fs,'yaxis')
提取从 0.1 到 0.25 秒的段进行分析。提取的段大致对应于 "MATLAB" 中的第一个元音 /ae/。
dt = 1/Fs;
I0 = round(0.1/dt);
Iend = round(0.25/dt);
x = mtlb(I0:Iend);
获得复倒频谱。
c = cceps(x);
选择 2 到 10 ms 的时间范围,对应的频率范围大约为 100 到 500 Hz。确定所选范围内倒频谱的最高峰值。找到对应于该峰值的频率。使用该峰值作为基频的估计值。
t = 0:dt:length(x)*dt-dt;
trng = t(t>=2e-3 & t<=10e-3);
crng = c(t>=2e-3 & t<=10e-3);
[~,I] = max(crng);
fprintf('Complex cepstrum F0 estimate is %3.2f Hz.\n',1/trng(I))
Complex cepstrum F0 estimate is 239.29 Hz.
绘制选定时间范围内的倒频谱,并叠加绘制峰值。
plot(trng*1e3,crng)
xlabel('ms')
hold on
plot(trng(I)*1e3,crng(I),'o')
hold off
对经过低通滤波和形式调整的元音使用过零检测器来估计基频。
[b0,a0] = butter(2,325/(Fs/2));
xin = abs(x);
xin = filter(b0,a0,xin);
xin = xin-mean(xin);
x2 = zeros(length(xin),1);
x2(1:length(x)-1) = xin(2:length(x));
zc = length(find((xin>0 & x2<0) | (xin<0 & x2>0)));
F0 = 0.5*Fs*zc/length(x);
fprintf('Zero-crossing F0 estimate is %3.2f Hz.\n',F0)
Zero-crossing F0 estimate is 233.27 Hz.
使用复倒频谱获得的基频估计值为 239.29 Hz,使用过零检测器获得的估计值为 233.27 Hz。
另请参阅
matlab计算图片基频,复倒频谱 - 基频估计相关推荐
- 信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)
信号的频域分析方法多种多样,这里针对较为常见的(频谱.能量谱.功率谱.倒频谱.小波分析)集中进行说明.这些方法的MATLAB代码实现参见文章频域特征值提取的MATLAB代码实现(频谱.功率谱.倒频谱) ...
- Python在振动信号处理中的应用(十一):倒频谱(Cepstrum)计算
文章目录 一.概述 二.算法原理 2.1 实倒谱 2.2 复倒谱 3 算法在python中实现 四.TIPS 一.概述 倒频谱(Cepstrum)也叫倒谱.二次谱和对数功率谱等.倒频谱的工程型定义 ...
- 【MATLAB编程实战】计算图片的信息熵
欢迎关注,本专栏主要更新MATLAB仿真.界面.基础编程.画图.算法.矩阵处理等操作,拥有丰富的实例练习代码,欢迎订阅该专栏!(等该专栏建设成熟后将开始收费,快快上车吧~~) [MATLAB编程实战] ...
- matlab计算信号得频谱,用MATLAB分析离散信号的频谱与信号的采样
<用MATLAB分析离散信号的频谱与信号的采样>由会员分享,可在线阅读,更多相关<用MATLAB分析离散信号的频谱与信号的采样(7页珍藏版)>请在人人文库网上搜索. 1.实验六 ...
- m基于matlab的雷达信号分选技术研究,包括时域瞬时自相关法,频域复倒频分析法,调制域过零检测法,时频小波变换法
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着现代信息对抗领域的发展,对雷达侦察系统的性能要求也越来越高,雷达信号分选技术在侦察系统中的应用也 ...
- 频谱、功率谱、倒频谱
一.频谱: 时间作为参照来观察动态世界的方法我们称其为时域分析,如果另一种方法来观察世界的话,你会发现世界是永恒不变的,这个 静止的世界叫做频域(讲的很好!) 最直接的是求它的傅里叶变换 可参考: [ ...
- matlab 计算指北角,用MATLAB如何计算出矩形区域内的最大值?
在MATLAB图像处理工具箱(Image Processing Toolbox)的GUI函数中,有一些用来在图像或坐标轴上选择矩形或椭圆区域的函数,使用示例如下: 第一行代码:显示matlab内置的一 ...
- MATLAB提取图片点击处的坐标代码(仅供参考)
当初写这个小程序是为了提取图片点击处的坐标,每张照片自动循环进行标点,不用一张一张手动输入.我想提取手势图片的21个点的坐标. x=dir('D:\MATLAB\work\rename1.m*.jpg ...
- 使用MATLAB计算一幅图像的熵
公式 熵的计算公式: H(x)=−∑i=1nP(ai)∗logP(ai)H(x)=-\sum_{i=1}^{n}P(a_i)*logP(a_i) H(x)=−i=1∑nP(ai)∗logP(ai ...
最新文章
- 使用 xcworkspace 管理 iOS 工程
- Py入门第二天 ,喜欢的老铁可以关注一波 ,没准儿哪天就不更了。。。
- C# Delegate(委托)与多线程
- WinRT开发语言的功能和效率
- Java写一个简单的扫雷游戏
- 瑞克·李特的追寻 正是我们所需要做的!中国
- 【转】深度解析 Qt 中动态链接库
- 轮胎的体积与面积计算
- ubuntu安装ElasticSearch-head插件
- zz JQuery 插件
- oracle mysql odbc驱动程序_用于 Oracle 的 ODBC 驱动程序
- Candence学习篇(4)allegro软件中class 和subclass的概念
- 为什么java1.8 hashMap的数据结构是红黑树?
- 微信小程序wx.getLocation接口审核不通过
- 【Week15作业 B】ZJM与生日礼物【字典树】
- android su文件,Android su开放root权限
- oracle同步数据adg_[adg数据库同步机制]三分钟读懂Oracle数据库容灾架之DataGuard
- Ubuntu16.04 安装 CUDA、CUDNN、OpenCV 并用 Anaconda 配置 Tensorflow 和 Caffe 详细过程
- 【操作教程】RTSP/GB28181/SDK/Ehome协议人脸识别/车牌识别视频智能分析系统EasyCVR如何获取播放地址和流地址?
- php dwg格式,无需AutoCAD,用C#生成DWG文件