复倒频谱 - 基频估计

此示例说明如何使用复倒频谱估计说话者的基频。此示例同时使用过零方法估计基频,并比较两种方法所得的结果。

加载语音信号。录音内容是女声朗读的 "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计算图片基频,复倒频谱 - 基频估计相关推荐

  1. 信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)

    信号的频域分析方法多种多样,这里针对较为常见的(频谱.能量谱.功率谱.倒频谱.小波分析)集中进行说明.这些方法的MATLAB代码实现参见文章频域特征值提取的MATLAB代码实现(频谱.功率谱.倒频谱) ...

  2. Python在振动信号处理中的应用(十一):倒频谱(Cepstrum)计算

    文章目录 一.概述 二.算法原理 2.1 实倒谱 2.2 复倒谱 3 算法在python中实现 四.TIPS 一.概述   倒频谱(Cepstrum)也叫倒谱.二次谱和对数功率谱等.倒频谱的工程型定义 ...

  3. 【MATLAB编程实战】计算图片的信息熵

    欢迎关注,本专栏主要更新MATLAB仿真.界面.基础编程.画图.算法.矩阵处理等操作,拥有丰富的实例练习代码,欢迎订阅该专栏!(等该专栏建设成熟后将开始收费,快快上车吧~~) [MATLAB编程实战] ...

  4. matlab计算信号得频谱,用MATLAB分析离散信号的频谱与信号的采样

    <用MATLAB分析离散信号的频谱与信号的采样>由会员分享,可在线阅读,更多相关<用MATLAB分析离散信号的频谱与信号的采样(7页珍藏版)>请在人人文库网上搜索. 1.实验六 ...

  5. m基于matlab的雷达信号分选技术研究,包括时域瞬时自相关法,频域复倒频分析法,调制域过零检测法,时频小波变换法

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着现代信息对抗领域的发展,对雷达侦察系统的性能要求也越来越高,雷达信号分选技术在侦察系统中的应用也 ...

  6. 频谱、功率谱、倒频谱

    一.频谱: 时间作为参照来观察动态世界的方法我们称其为时域分析,如果另一种方法来观察世界的话,你会发现世界是永恒不变的,这个 静止的世界叫做频域(讲的很好!) 最直接的是求它的傅里叶变换 可参考: [ ...

  7. matlab 计算指北角,用MATLAB如何计算出矩形区域内的最大值?

    在MATLAB图像处理工具箱(Image Processing Toolbox)的GUI函数中,有一些用来在图像或坐标轴上选择矩形或椭圆区域的函数,使用示例如下: 第一行代码:显示matlab内置的一 ...

  8. MATLAB提取图片点击处的坐标代码(仅供参考)

    当初写这个小程序是为了提取图片点击处的坐标,每张照片自动循环进行标点,不用一张一张手动输入.我想提取手势图片的21个点的坐标. x=dir('D:\MATLAB\work\rename1.m*.jpg ...

  9. 使用MATLAB计算一幅图像的熵

    公式 熵的计算公式: H(x)=−∑i=1nP(ai)∗logP(ai)H(x)=-\sum_{i=1}^{n}P(a_i)*logP(a_i) H(x)=−i=1∑n​P(ai​)∗logP(ai​ ...

最新文章

  1. 使用 xcworkspace 管理 iOS 工程
  2. Py入门第二天 ,喜欢的老铁可以关注一波 ,没准儿哪天就不更了。。。
  3. C# Delegate(委托)与多线程
  4. WinRT开发语言的功能和效率
  5. Java写一个简单的扫雷游戏
  6. 瑞克·李特的追寻 正是我们所需要做的!中国
  7. 【转】深度解析 Qt 中动态链接库
  8. 轮胎的体积与面积计算
  9. ubuntu安装ElasticSearch-head插件
  10. zz JQuery 插件
  11. oracle mysql odbc驱动程序_用于 Oracle 的 ODBC 驱动程序
  12. Candence学习篇(4)allegro软件中class 和subclass的概念
  13. 为什么java1.8 hashMap的数据结构是红黑树?
  14. 微信小程序wx.getLocation接口审核不通过
  15. 【Week15作业 B】ZJM与生日礼物【字典树】
  16. android su文件,Android su开放root权限
  17. oracle同步数据adg_[adg数据库同步机制]三分钟读懂Oracle数据库容灾架之DataGuard
  18. Ubuntu16.04 安装 CUDA、CUDNN、OpenCV 并用 Anaconda 配置 Tensorflow 和 Caffe 详细过程
  19. 【操作教程】RTSP/GB28181/SDK/Ehome协议人脸识别/车牌识别视频智能分析系统EasyCVR如何获取播放地址和流地址?
  20. php dwg格式,无需AutoCAD,用C#生成DWG文件

热门文章

  1. 基于Java+Swing实现中国象棋游戏
  2. C++ 返回引用与返回值区别
  3. html5建议使用,[HTML5]label标签使用以及建议
  4. ForkJoinPool 大型图文现场
  5. PhotoShop画漫画的基本设置
  6. scrapy rule follow的理解和应用
  7. 个人成长的15种能力
  8. 关于IO流和String常见的一些面试题
  9. JSSE(Java SecuritySocket Extension,Java安全套接字扩展)
  10. 域控赛道/智驾国产化启动,中科创达不想只是吃「软饭」