1 .语音信号的三个参数

语音信号有三个重要的参数:声道数、取样频率和量化位数。

  1. 声道数:单声道或者双声道

  2. 采样频率:一秒钟对声音采样的次数,例如10000HZ代表一秒钟将信号分解为10000份,当采样数量非常高的时候,我们人眼看起来就是连续的。(实际是离散的)。采样频率越高声音的还原就越真实越自然。在当今的主流采集卡上,采样频率一般共分为22.05KHz、44.1KHz、48KHz三个等级,22.05KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加精确一些。

  3. 量化位数:用多少bit表达一次采样所采集的数据,通常有8bit、16bit、24bit和32bit等几种。
    例如CD中所储存的声音信号是双声道、44.1kHz、16bit。

  4. 过零率(Zero Crossing Rate)
    概念:过零率(Zero Crossing Rate,ZCR)是指在每帧中,语音信号通过零点(从正变为负或从负变为正)的次数。 这个特征已在语音识别和音乐信息检索领域得到广泛使用,是对敲击的声音的分类的关键特征。

ZCR的数学形式化定义为:
其中 是采样点的值, 为帧长,函数 在A为真是值为1,否则为0.
特性:
(1).一般而言,清音(unvoiced sound)和环境噪音的ZCR都大于浊音(voiced sound);
(2).由于清音和环境噪音的ZCR大小相近,因而不能够通过ZCR来区分它们;
(3).在实际当中,过零率经常与短时能量特性相结合来进行端点检测,尤其是ZCR用来检测清音的起止点;
(4).有时也可以用ZCR来进行粗略的基频估算,但这是非常不可靠的,除非有后续的修正(refine)处理过程。

2. 信号的分帧

给定一个音频文件, 通过 Load 加载进来得打signal, shape 为(M ), 比如 sr = 22050, t = 10.62s;

通过分帧后, 将一维的 M 转化为 二维的分帧矩阵:
矩阵的行数 = 单帧的 帧长度
矩阵的列数 = 分帧的帧数 nfnfnf:

2.1 样本总点数;

M=sr∗time=采样率×时间M = sr * time = 采样率 × 时间M=sr∗time=采样率×时间

2.2 单帧内的重叠点数;

      重叠个数 = 帧长 -  帧移动长度:

overlap=wlen−incoverlap = wlen - incoverlap=wlen−inc

2.3 分帧后的 帧数;

nf=(信号点数−重叠个数)/帧移长度nf= (信号点数 - 重叠个数) / 帧移长度nf=(信号点数−重叠个数)/帧移长度:
nf=M−overlapincnf = \frac{M - overlap}{ inc} nf=incM−overlap​

比如 帧长=2048; 帧移 = 512;
overlap = 2048 -512 = 1536;

举个例子,假设一个音频向量为:
[0,1,2,3,4,5][0, 1, 2, 3, 4, 5][0,1,2,3,4,5],
点数 m = 6
若帧长为4,帧移为2,overlap = 4 -2 = 2;
则分帧后得到的帧数为:
nf = ( 6 - 2) /2 = 2 , 得到 2 帧;

[02132435]\begin{bmatrix} 0& 2 \\ 1&3 \\ 2 &4 \\ 3 &5 \\ \end{bmatrix} ⎣⎢⎢⎡​0123​2345​⎦⎥⎥⎤​
每一帧都有4个基本元素。

3. 信号的加窗

3.1 FFT 变换的条件

FFT变换时,总是从离散数据中选取一部分处理,将其称为一帧数据。
并且FFT是在一定假设下完成的,即认为被处理的信号是周期信号。

因此,FFT之前会对这一帧数据进行周期扩展(加窗, 使得这帧数据 近似 周期信号)。

如果选取的这一帧数据不是信号周期的整数倍,则在周期扩展时会存在样点的不连续性,这将导致FFT之后得到的频谱失真,主要体现在频率成分上。理论上,频谱中只包含待测信号的频率,但实际上此时的频谱包含众多的频率分量。通常将这种现象称为频谱泄露效应。

3.2 加窗的原因

为了解决上述频谱泄露现象, 故对帧信号进行 加窗, 使得加窗后的信号, 左右两端 连起来时, 更具有周期性;

3.3 加窗的效果

而通常一小段音频数据没有明显的周期性,加上汉明窗后,数据形状就有点周期的感觉了。(也就是说窗的左端和右端应该大致能连在一起);

对汉明窗中的数据进行FFT 时,它假设一个窗内的信号是代表一个周期的信号。

因为加上汉明窗,只有中间的数据体现出来了,两边的数据信息丢失了,所以等会移窗的时候,只会移1/3或1/2窗,这样被前一帧或二帧丢失的数据又重新得到了体现。

4.STFT:

4.2 平稳信号的 FFT

即傅里叶变换适用于分析频率特征 稳定的平稳信号。
对于非平稳信号, 傅里叶变换只能表示出 信号中有哪些频率成分,而各个频率成分出现的时间却无法体现;

短时傅里叶变换, 是为了克服傅里叶变换针对 非平稳信号的不足之处;

当想知道信号频率随时间变化的情况,以及各个时刻的瞬时频率及其幅值,

这便是时频分析, 即考虑频率特征,也考虑时间序列变化, 以及他们对应的幅度值;
常用方法:STFT, wavelet;

4.2 帧信号的 FFT

对加窗后的信号,会逐帧进行快速傅里叶变换(fast Fourier transform,FFT)。
逐帧进行快速傅里叶变换的过程被称为短时傅里叶变换(short-time Fourier transform 或 short-term Fourier transform,STFT)

信号处理(二)音频信号的分帧, 加窗相关推荐

  1. matlab语音分帧加窗,语音信号的加窗处理

    平稳的随机过程是研究语音信号的主要手段,但是语音信号本身并不是平衡的. 一,语音信号不平稳 语音信号在产生过程中与环境和发声器官的联系很紧密,与各种运动都是相关的,信号本身是不平移的信号.主要是由于发 ...

  2. 语音信号的分帧加窗的matlab实现

    [x,fs,nbits]=wavread('5_1.wav'); x1=enframe(x,200,100);%分帧 x2=enframe(x,hamming(200),100);%加窗 figure ...

  3. 声纹技术(二):音频信号处理基础【模拟信号(连续)--采样-->数字信号(离散)--量化-->振幅简化为整数--编码-->二进制序列】【WAV音频格式】【SoX】【分帧-加窗-】

    2.1 欲懂声纹,先学音频 从学科分类上讲,声纹技术是语音信号处理的一个分支,而语音信号处理则属于音频信号处理这个大类. 语音信号和音频信号,这二者的区别在于: 语音信号专指人类说话时所发出的具有社会 ...

  4. Unity 分帧加载和分块加载

    #分帧加载和分块加载 在我们实际做项目的时候,往往会遇见需要创建大量数据的时候,这时如果在一帧里面大量创建数据,那我们的游戏就会发生卡顿从而降低了用户的体验. 为了解决这种情况,可以使用使用分帧加载使 ...

  5. 语音信号处理中怎么理解分帧?

    那么一帧有多长呢?帧长要满足两个条件: 从宏观上看,它必须足够短来保证帧内信号是平稳的. 前面说过,口型的变化是导致信号不平稳的原因,所以在一帧的期间内口型不能有明显变化,即一帧的长度应当小于一个音素 ...

  6. 语音信号处理基础(五)——语音分帧与加窗

    文章目录 原理 1.加窗 2.分帧 一般而言语音处理的目的有两种: 一种是对语音信号进行分析,提取特征参数,用于后续处理: 提取的特征参数主要有语音的短时能量和平均幅度.短时平均过零率.短时自相关函数 ...

  7. python对语音信号读取、分帧、加窗

    python对语音信号读取.分帧.加窗 一.读入音频信号 语音信号有三个重要的参数:声道数.取样频率和量化位数. 声道数:单声道或者双声道 采样频率:一秒钟对声音采样的次数,例如10000HZ代表一秒 ...

  8. 语音处理的分帧,帧移,加窗,滤波,降噪,合成

    一.分帧 语音数据和视频数据不同,本没有帧的概念,但是为了传输与存储,我们采集的音频数据都是一段一段 的.为了程序能够进行批量处理,会根据指定的长度(时间段或者采样数)进行分段,结构化为我们编程 的数 ...

  9. 语音信号的分帧、加窗处理

    分帧 语音信号是一个准稳态的信号,若把它分成较短的帧,每帧中可将其看做稳态信号,可用处理稳态信号的方法来处理.为了使一帧与另一帧之间的参数能够平稳过渡,应在相邻两帧之间互相有部分重叠.一般情况下,帧长 ...

最新文章

  1. hadoop问题小结
  2. VTK:Texture之TexturedSphere
  3. 使用HttpMessageConverter实现HTTP的序列化和反序列化
  4. 正则表达式及其在python上的应用
  5. gmat阅读.html,GMAT阅读长难句50句+参考译文.pdf
  6. python 人气高的项目_给大家推荐:五个Python小项目,Github上的人气很高的!
  7. android包结构规范,【Android】Android产品-开发规范
  8. 和为k的连续区间(51Nod-1094)
  9. Delphi IOS (二)
  10. 撰写oracle-sql-hint的注意事项
  11. springmvc和mybatis整合
  12. 编程开发之--java多线程学习总结(4)
  13. linux检测扩容卡,TF内存卡是不是扩容卡准确质量检测
  14. Day4-STM32的中断与通信——百问网7天物联网智能家居
  15. 机器学习——决策树(ID3)的实现
  16. GPS北斗卫星时钟同步系统的原理和技术
  17. Django推导Django内部模块:wsgiref与jinja2
  18. SSH远程操作——一台电脑的的NAS之旅
  19. 远程桌面时,如何登录没有设置密码的系统
  20. 【人脸识别】基于PCA和SVM的人脸识别关键技术研究与实现附matlab代码

热门文章

  1. JS截取//后面或前面的字符串
  2. 32单片机移植FreeRTOS时Keil5引入.h头文件及部分可能的坑
  3. html中显示内部服务器错误问题(已解决)
  4. 手把手教你定制一款专属的微信夸夸机器人
  5. Fastjson首字母大小写问题
  6. Two nodes of a BST are swapped, correct the BST(恢复两个节点被交换的BST)
  7. Win10系统固态硬盘开机慢的解决教程
  8. firfox 浏览器在新标签中打开收藏网址设置
  9. pythonset遍历_python如何遍历set
  10. 博图V17弹窗源程序 釆用SCL自定义功能块,自定义数据类型