语音信号的短时平均过零率
一、短时平均过零率的作用
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的短时平均过零率图:
在下语音小白一枚,若有写错的地方,请多多指教。
语音信号的短时平均过零率相关推荐
- MATLAB计算信号短时平均过零率
一.原理: 短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数 二.计算过零率代码 clear all; clc; close all; filedir=[]; % 设置路径 filename=' ...
- 音频信号 过零率 matlab,MATLAB计算信号短时平均过零率
MATLAB计算信号短时平均过零率 MATLAB计算信号短时平均过零率 一.原理: 短时平均过零率表示一帧语音中语音信号波形穿过横轴的次数 二.计算过零率代码 clear all; clc; clos ...
- 【数字语音处理】Part3 语音信号的短时时域分析:短时平均、短时自相关、语音端点检测、基音周期估值
Part3 语音信号的短时时域分析 一.帧和加窗的概念 二.短时平均能量 三.短时平均幅度函数 四.短时平均过零率 五.短时自相关分析 六.基于能量和过零率的语音端点检测 七.基音周期估值 八.总结 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/26141939 3.7 基于能量和过零率 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(2)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/26068797 3.3 短时平均能量 由 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(1)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/25392889 3.1 概述 语音信号是 ...
- 语音信号的短时语音能量
由于语音信号的能量随时间而变化,清音和浊音之间的能量差别相当显著,因此对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变换情况.定义n时刻某语音信号的短时平均能量E为: 式中,N为窗长,可见短 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(3)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/26138063 3.6 短时自相关分析 ...
- 语音信号的短时傅里叶分析
语音信号的短时傅里叶分析 文章目录 语音信号的短时傅里叶分析 概述 短时傅里叶变换 短时傅里叶的取样率 时域取样率 频域取样率 总取样率 语音信号的短时综合 滤波器组求和法 快速傅里叶变换求和法 语谱 ...
- 连续语音信号的短时倒谱分析及其参数用途
文章目录 前言 基本概念 倒谱和倒谱参数 1.倒谱 2.复倒谱 3.倒谱计算 (1).由声门激励信号提取基音周期 (2).由声道冲激响应估算共振峰 4.倒谱的频谱 5.倒谱距离 6.Mel频率倒谱系数 ...
最新文章
- OpenResty中的upstream healthcheck功能沉思录
- 图解负载均衡 LVS、Nginx及HAProxy--云平台技术栈14
- Workout Wednesday Redux (2017 Week 3)
- php files上传错误,php-PHP上传文件的问题$_FILES['file']['error']
- 一键导出/备份「有道云笔记」工具
- CRM WebClient UI里word文档调用web service的问题
- JAVA面试——计算机网络
- C++中string::find()函数和string::npos函数的使用
- 51nod-1391:01串
- iOS 取消多余tableView的横线的写法
- 使用perforce+git处理连线离线工作的pipeline
- 自媒体采集平台免费,免费的自媒体采集平台
- Linux必学书籍!五本强烈推荐,你读过几本?
- Python爬取淘宝商品附加cookie修改
- 4.15 期货每日早盘操作建议
- 网上打印怎么那么便宜,网上打印平台哪家比较便宜
- [应用广播], 一览华夏文化,诗词三万首震撼上线
- Android 高级面试
- Linux(Debian)安装Geany教程
- ker矩阵是什么意思_矩阵分析(二):从特征值到奇异值
热门文章
- ruby与ruby on rails环境部署
- draft伦理——第七章
- 解决:RN和H5之间通信
- 深度学习二分类问题--IMDB数据集
- CV(1) : 光 颜色 颜色空间
- 给基于HEXO的博客添加gitter在线交流
- NB-IoT关键信令流程 Attach
- angular实现国密算法sm2、sm3和sm4的ts版,基于sm-crypto库实现,前后端实现
- 警惕Linux的传销投机属性,恢复建立契约商业化社会秩序。
- python 调用word打开doc文档报错,“word无法启动转换器mswrd632.wpc”