一、短时平均过零率的作用

1、对于连续语音信号,可以考查其时域波形通过时间轴的情况;
2、对于离散信号,实质上就是信号采样点符号变化的次数;
3、在一定程度上可以反映出频率的信息,比如正弦信号的平均过零率就是信号的频率除以两倍采样频率,而采样频率是固定的,所以根据短时平均过零率得出正弦信号的频率。

二、短时平均过零率的定义

1、过零率
  单位时间内信号通过零值的次数就称为过零率。
2、短时平均过零率
  短时平均过零率是语音信号时域分析中最简单的一种特征,一段短时间内的过零率称为短时平均过零率,这里的短时指的是一帧时间,一帧包含的采样点数为256点。(大家都这样取,我不知道为什么,若有大佬知道请告知一下)。
短时平均过零率的公式为:
  此公式来源:韩纪庆《语音信号处理》第3版
计算过程:
1、先对语音信号序列x(n)进行成对处理,检查是否有过零现象,若符号有变化,则表示有一次过零现象;
2、然后进行一阶差分计算,取绝对值;
3、最后进行低通滤波。

三、代码实现

以数字0-9的语音波形做例子:

import wave
import numpy as np
from matplotlib import pyplot as plt# path = "F:/Corpus/data/0.wav"
path = "F:/Corpus/some_numbers.wav"
f = wave.open(path, "rb")  # 打开需要处理的内容
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)
wave_data = np.frombuffer(str_data, dtype=np.short)
print(wave_data)
print("len of wave_data:", len(wave_data))
f.close()
time = np.arange(0, nframes) * (1.0 / framerate)
ax1 = plt.subplot(2, 1, 1)
my_x_ticks = np.arange(0, time[159999], 0.5)   # 修改x坐标的刻度为0.5
plt.xticks(my_x_ticks)
plt.plot(time, wave_data, "g-")
plt.xlabel('Time/s')
plt.ylabel('Ampltitude')
plt.title('waveform of voice')
# plt.show()def calZeroCrossingRate(wave_data):zeroCrossingRate = []   # 用于记录每帧的过零率sum = 0w0 = []     # 用于记录每个采样点的sgn值for i in range(len(wave_data)):sum += np.abs(np.sign(wave_data[i]) - np.sign(wave_data[i - 1]))if (i + 1) % 256 == 0:zeroCrossingRate.append(float(sum) / 255)sum = 0elif i == len(wave_data) - 1:zeroCrossingRate.append(float(sum) / 255)print('Zero Crossing Rate:\n', zeroCrossingRate)print("len of zero crossing rate: ", len(zeroCrossingRate))return zeroCrossingRatetime1 = np.arange(0, nframes/256) * (1.0 / framerate)*256
ax2 = plt.subplot(2, 1, 2)
my_x_ticks = np.arange(0, time[159999], 0.5)  # 159999
plt.xticks(my_x_ticks)
plt.plot(time1, calZeroCrossingRate(wave_data), "r-")  # r-代表红色
plt.xlabel('Time/s')
plt.ylabel('Ampltitude')
plt.title('Zero Crossing Rate')
plt.show()

运行结果:

[ 0  0 -1 ...  2  0  0]
len of wave_data: 160000
Zero Crossing Rate:[0.3607843137254902, 0.5019607843137255,……,0.16470588235294117, 0.21176470588235294]
len of zero crossing rate:  625

图:

为了对比一下,我放上数字0的短时平均过零率图:

  在下语音小白一枚,若有写错的地方,请多多指教。

语音信号的短时平均过零率相关推荐

  1. MATLAB计算信号短时平均过零率

    一.原理: 短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数 二.计算过零率代码 clear all; clc; close all; filedir=[]; % 设置路径 filename=' ...

  2. 音频信号 过零率 matlab,MATLAB计算信号短时平均过零率

    MATLAB计算信号短时平均过零率 MATLAB计算信号短时平均过零率 一.原理: 短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数 二.计算过零率代码 clear all; clc; clos ...

  3. 【数字语音处理】Part3 语音信号的短时时域分析:短时平均、短时自相关、语音端点检测、基音周期估值

    Part3 语音信号的短时时域分析 一.帧和加窗的概念 二.短时平均能量 三.短时平均幅度函数 四.短时平均过零率 五.短时自相关分析 六.基于能量和过零率的语音端点检测 七.基音周期估值 八.总结 ...

  4. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u013538664/article/details/26141939 3.7 基于能量和过零率 ...

  5. 数字语音信号处理学习笔记——语音信号的短时时域分析(2)

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u013538664/article/details/26068797 3.3 短时平均能量 由 ...

  6. 数字语音信号处理学习笔记——语音信号的短时时域分析(1)

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u013538664/article/details/25392889 3.1 概述 语音信号是 ...

  7. 语音信号的短时语音能量

    由于语音信号的能量随时间而变化,清音和浊音之间的能量差别相当显著,因此对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变换情况.定义n时刻某语音信号的短时平均能量E为: 式中,N为窗长,可见短 ...

  8. 数字语音信号处理学习笔记——语音信号的短时时域分析(3)

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u013538664/article/details/26138063 3.6 短时自相关分析 ...

  9. 语音信号的短时傅里叶分析

    语音信号的短时傅里叶分析 文章目录 语音信号的短时傅里叶分析 概述 短时傅里叶变换 短时傅里叶的取样率 时域取样率 频域取样率 总取样率 语音信号的短时综合 滤波器组求和法 快速傅里叶变换求和法 语谱 ...

  10. 连续语音信号的短时倒谱分析及其参数用途

    文章目录 前言 基本概念 倒谱和倒谱参数 1.倒谱 2.复倒谱 3.倒谱计算 (1).由声门激励信号提取基音周期 (2).由声道冲激响应估算共振峰 4.倒谱的频谱 5.倒谱距离 6.Mel频率倒谱系数 ...

最新文章

  1. OpenResty中的upstream healthcheck功能沉思录
  2. 图解负载均衡 LVS、Nginx及HAProxy--云平台技术栈14
  3. Workout Wednesday Redux (2017 Week 3)
  4. php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']
  5. 一键导出/备份「有道云笔记」工具
  6. CRM WebClient UI里word文档调用web service的问题
  7. JAVA面试——计算机网络
  8. C++中string::find()函数和string::npos函数的使用
  9. 51nod-1391:01串
  10. iOS 取消多余tableView的横线的写法
  11. 使用perforce+git处理连线离线工作的pipeline
  12. 自媒体采集平台免费,免费的自媒体采集平台
  13. Linux必学书籍!五本强烈推荐,你读过几本?
  14. Python爬取淘宝商品附加cookie修改
  15. 4.15 期货每日早盘操作建议
  16. 网上打印怎么那么便宜,网上打印平台哪家比较便宜
  17. [应用广播], 一览华夏文化,诗词三万首震撼上线
  18. Android 高级面试
  19. Linux(Debian)安装Geany教程
  20. ker矩阵是什么意思_矩阵分析(二):从特征值到奇异值

热门文章

  1. ruby与ruby on rails环境部署
  2. draft伦理——第七章
  3. 解决:RN和H5之间通信
  4. 深度学习二分类问题--IMDB数据集
  5. CV(1) : 光 颜色 颜色空间
  6. 给基于HEXO的博客添加gitter在线交流
  7. NB-IoT关键信令流程 Attach
  8. angular实现国密算法sm2、sm3和sm4的ts版,基于sm-crypto库实现,前后端实现
  9. 警惕Linux的传销投机属性,恢复建立契约商业化社会秩序。
  10. python 调用word打开doc文档报错,“word无法启动转换器mswrd632.wpc”