本系列文章由 @YhL_Leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/50311869


尽管大多数人认为手机是传统有线电话服务的延伸,事实上,手机技术是极其复杂而且堪称神奇的技术。很少有人意识到这些小型设备为了维持一个电话谈话需要每秒执行数百万次的计算,如果我们细看将语音电子信号转换为比特序列的模块,就会发现每20毫秒的输入语音就会被计算出一组语音参数然后传输到接收端,之后接收端再将这组参数转换为语音。本文将介绍手机语音传输中的核心——线性预测分析合成技术 (linear predictive (LP) analysis-synthesis)。


世界首款商用移动手机 Motorola DynaTAC 8000x

1 语音的线性预测处理背景

语音是由我们喉咙产生的一种激励信号,通过声带、鼻、咽部等共振调整出每个人所具有的不同的形式。这种激励信号,可以通过我们周期性地开启和关闭声带产生(例如语音中的元音),也可以仅仅是一些肺部推动的连续气流(例如语音中末尾的语气音),或者是两种结合在一起的方式等。


图 1 一段30毫秒的声音信号

如图 1所示,一段30毫秒的声音信号(底部)和它对应的波谱(这里显示的是其FFT的大小)。其中F0F_0是基频,我们可以称之为音高(Pitch)(严格来讲,音高是指感知到的基频)。谐波或者谐频(Harmonics)是指像H1,H2,H3H_1, H_2, H_3等峰值处对应的频率声波。共振峰(Formants)是指像F1,F2,F3F_1,F_2,F_3等出现在频谱包络宽峰处。

1.1 语音的线性预测处理模型

早在1960年,Fant就提出一种语音的线性处理模型,称之为source-filter模型。它基于这样的假设:声门和声道是完全分离的。这个模型最终由Rabiner and Shafer(1978)发展成为有名的线性预测模型(linear predictive,LP)或者称为自我回归模型(autoregressive,AR),后来又被逐渐被广泛应用在语音编码中,所以也被称为语音线性预测编码模型(linear predictive coding,LPC):

S~(z)=E~(z)1∑pi=0aiz−i=E~(z)1Ap(z)    (a0=1)(1)

\tilde{S}(z) = \tilde{E}(z)\frac{1}{\sum_{i=0}^p a_i z^{-i}} = \tilde{E}(z)\frac{1}{A_{p}(z)} \ \ \ \ (a_0 = 1) \tag{1}

其中,S~(z)\tilde{S}(z) 和 E~(z)\tilde{E}(z)是Z-变换后的语音信号和激励信号(Z-变换,将时域信号(即:离散时间序列)变换为在复频域的表达式),pp是prediction order。整个过程如图 2所示:


图 2 语音生成的LP模型

在这一模型中,LP模型的激励被认为是一串定期间隔的脉冲(其周期T0T_0和振幅σ\sigma都是可调的)和高斯白噪声(方差σ2\sigma^2可调)中的一种,因此图中V/UV装置的含义就是决策信号是有声(voiced)或无声(unvoiced),滤波函数1Ap(z)\frac{1}{A_p(z)}是合成滤波器(synthesis filter)而Ap(z)A_p(z)称之为逆滤波器(inverse filter)。

公式(1)(1)隐式地引入了语音线性预测的概念,即每个语音采样信号都可以被表示为其之前的pp个采样信号的加权之和加上一些激励项:

S~(n)=e~(n)−∑i=1paiS~(n−i)(2)

\tilde{S}(n) = \tilde{e}(n) - \sum_{i=1}^{p} a_i \tilde{S}(n-i) \tag{2}

1.2 LP估值算法

给定一个固定的短暂语音信号,实际处理中的常常遇到的问题是如何获得一组最佳的预测系数,使得模型的误差最小化,即使原始信号和经过图 2过程处理后的信号之间可以听出的差异最小化。因此,需要估算的LP模型参数:Pitch周期T0T_0,增益σ\sigma,V/UV决策和预测系数{ai}\{ a_i\}。

Pitch和V/UV决策是比较难的问题,虽然语音虽然看起来像是周期性的,但是真实的情况绝不是这样的。声门的周期振幅在不同周期间具有差异性,而周期内也不是常数。而且显示出的语音波形仅仅是经过过滤的声门脉冲(如采样)而不是原始脉冲本身,这就使得实际测量T0T_0变得非常复杂。除此以外,语音很少有完全是有声的,这就增加了噪声分量,从而使确定Pitch变得困难。

值得庆幸的是,估算σ\sigma和预测系数{ai}\{ a_i \}与估算T0T_0是相互独立的,给定一个语音信号s(n)s(n),利用预测系数{ai}\{ a_i \}可以计算出预测信号与原始信号的残差值:

e(n)=s(n)+∑i=1pais(n−i)(3)

e(n) = s(n) + \sum_{i=1}^{p} a_i s(n-i) \tag{3}

由此,我们可以得到公式(2)(2)和图 2所示的语音处理的逆滤波过程,如图 3所示。


图 2 语音逆滤波过程

而LP估值算法的核心思想就是,选择一组最优的{a1,a2,…ap}\{ a_1,a_2,\dots a_p \},使得期望值E(e2(n))E(e^2(n))的值最小(称之为最小均方误差准则):

{ai}opt=argminai(E(e2(n)))(4)

\{ a_i\}^{opt} = \mathop{\arg\min}_{a_i} \left(E(e^2(n))\right) \tag{4}

事实上,一组固定的语音信号s(n)s(n),由LP模型合成的语音s~(n)\tilde{s}(n),见公式(2)(2),具有与原始信号s(n)s(n)相同的频谱包络。因此,LP模型中的激励信号(如脉冲或者白噪声)具有较平的频谱包络,相应的合成语音将会与原始信号具有近似匹配的频谱包络,同时LP残差也具有近似较平的频谱包络。

根据公式(4)(4)的最小均方误差准则,可以推导出 p  Yule-Walkerp \ \ \text{Yule-Walker}线性方程:

⎡⎣⎢⎢⎢⎢ϕxx(0)ϕxx(1)…ϕxx(p−1)ϕxx(1)ϕxx(0)…ϕxx(p−2)…………ϕxx(p−1)ϕxx(p−2)…ϕxx(0)⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢a1a2…ap⎤⎦⎥⎥⎥⎥=−⎡⎣⎢⎢⎢⎢ϕxx(1)ϕxx(2)…ϕxx(p)⎤⎦⎥⎥⎥⎥(5)

\left[ \begin{matrix}\phi_{xx}(0) & \phi_{xx}(1) & \dots & \phi_{xx}(p-1) \\\phi_{xx}(1) & \phi_{xx}(0) & \dots & \phi_{xx}(p-2) \\\dots & \dots & \dots & \dots \\\phi_{xx}(p-1) & \phi_{xx}(p-2) & \dots & \phi_{xx}(0) \end{matrix}\right] \left[ \begin{matrix}a_1 \\a_2 \\\dots \\a_p \end{matrix} \right] = - \left[ \begin{matrix}\phi_{xx}(1) \\\phi_{xx}(2) \\\dots \\\phi_{xx}(p) \end{matrix} \right] \tag{5}

在上述方程中,ϕxx(k),(k=0,1,…,p)\phi_{xx}(k), (k=0,1,\dots,p)是语音信号s(n)s(n)的p+1p+1个一阶自相关系数,解决这一线性方程后,振幅σ\sigma的值可以通过公式(6)(6)计算:

σ2=∑i−0paiϕxx(i)(6)

\sigma^2 = \sum_{i-0}^{p} a_i\phi_{xx}(i) \tag{6}

需要注意的是,可以看出公式(5)(5)只是基于信号s(n)s(n)的自相关函数,LP模型的本意只是获得原语音信号的频谱包络特征,而不是最大程度模仿整个语音波型。

1.3 LP处理的实际应用

如果语音是非固定的(比如一系列连续的对话,对整体直接分析,基本不可能),LP模型一般被依次作用在每个语音帧上(类似于视频的图像帧,这里由于语音信号是离散的数字序列,一般的做法是每次取出30毫秒的语音作为一个信号帧,帧和帧之间有20毫秒的重叠,很像图像处理中的滑动窗口,见图 3),由于时间间隔很短,假设发音的肌肉具有惯性,相邻语音帧之间是相互关联的,而且每个语音帧都可以适用1.2小节中所假设的固定语音信号的处理方法。


图 3 语音帧和采样示意图

语音采样通常使用加权窗(典型的方法如30毫秒长的Hamming 窗,见图 4)。这样可以抑制每个语音帧的前13\frac{1}{3}部分的信号按照公式(4)(4)计算时,因为权值过大从而导致e2(n)e^2(n)的值较大。


图 4 Hamming 窗及其DTFT变换

至于自相关系数ϕxx(k)(k=0,…,p)\phi_{xx}(k)(k=0,\dots,p),是通过有限数量的信号采样(通常对于30毫秒的语音,等间隔产生240个采样值,也就是说采样的频率是8kHzkHz = 240/(30∗10−3)Hz240/(30*10^{-3})Hz)。pp取值选择主要基于合成滤波器能够具有足够的自由度,可以较好的复制原始输入语音信号的频谱包络。在手机应用中,通常采样频率定为8kHzkHz,p=10p=10。

关于方程(5)(5)的解法,经典的矩阵求逆方法就可以求解,但是Levinson-Durbin 方法求解更为快速和有效,Matlab中已有封装好的可执行函数levinson,详情可见Levinson-Durbin recursion。根据上面的解算,对于每一语音帧,都可以解算出其对应的预测系数{ai}\{ a_i \}。

因此,完整的LPC语音分析-合成算法系统,可以表示为图 5:


图 5 LPC语音分析-合成示意图

手机对话中的语音处理(一)相关推荐

  1. js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题

    之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填. 前提 1.弹出的对话框用display:fixed定位的 2.对话框大小固定 解决办法 ...

  2. php拍照从手机相册中选择,微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例...

    本文实例讲述了微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法.分享给大家供大家参考,具体如下: 目前中js-sdk 1.0版本中,预览图片提供了2个接口,接口的定义参考官方文档 1.预览 ...

  3. 一文详解启发式对话中的知识管理 | 公开课笔记

    来源 | AI科技大本营在线公开课 分享嘉宾 | 葛付江(思必驰 NLP 部门负责人) 整理 | Jane [导读]自然语言对话系统正在覆盖越来越多的生活和服务场景,同时,自然语言对话的理解能力和对精 ...

  4. 在MATLAB中添加语音处理工具箱(voicebox)

    1. voicebox介绍   voicebox是一个MATLAB中的语音处理工具箱,支持MATLAB6.5以上的版本.其中包含了对语音的分帧处理,滤波,加窗,参数提取等等函数,是语音识别几乎不可缺少 ...

  5. 在手机网页中使用USEMAP

    因为手机网页中图片大多数使用百分比显示 所以USEMAP的坐标错位 http://files.cnblogs.com/files/jweb/jquery.rwdImageMaps.min.js < ...

  6. 破译手势在对话中的意义

    编者按:在人与人的交谈中,除了语言上的你来我往,我们还会有意无意地用到我们的双手,做出各种手势.行为科学家对手势之于对话的意义感到好奇,而Kinect for Windows传感器则让这项研究变得容易 ...

  7. 对话中情绪识别,研究挑战、数据集和前沿方法

    对话中情绪识别,研究挑战.数据集和前沿方法: https://zhuanlan.zhihu.com/p/86777515

  8. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  9. 安卓手机怎么root_怎么在腾讯手机管家中一键获取Root权限

    今天来说一下关于怎么在腾讯手机管家中一键获取Root权限这方面的一些讯息,不少朋友对于怎么在腾讯手机管家中一键获取Root权限这方面的信息颇感兴趣的.小编今天就为此整理一些相关的讯息,希望对有需要的朋 ...

最新文章

  1. MongoDb连接表的查询
  2. 拦截地址栏参数_selenium操作chrome时的配置参数
  3. 微信小程序怎么在wxml中插入多个图片_闲聊微信小程序开发框架(二)
  4. SharedObject实例.
  5. MapReduce学习要点
  6. base64减少图片请求
  7. 他们每天都在为梦想排除万难,那你呢?
  8. sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
  9. Detours Hook初探
  10. CentOS通过DNSpod实现DDNS动态域名,在家也可以搭建主机服务器了
  11. Landsat卫星数据标识
  12. 秒杀活动(应对大并发:如何利用缓存+异步 )
  13. 第二篇:mig IP的创建
  14. FFMPEG中的两输入Filter实现(一)
  15. 大学linux考试题,大学考试的LINUX试题参考答案(8)
  16. Android WebView与JS的交互方式
  17. 查询域名 在线批量查询域名dns
  18. 前端进击的巨人(1):执行上下文与执行栈,变量对象
  19. 阿里云ACP大数据分析师 | 笔记纪要
  20. 深度学习-目标检测评估指标P-R曲线、AP、mAP

热门文章

  1. 动手实践丨手把手教你用STM32做一个智能鱼缸
  2. 微信小程序git提交
  3. trello清单(二)
  4. 华为交换机路由器Console忘记密码该怎么办?
  5. LNMP架构搭建实操
  6. 什么骨传导耳机比较好,好用的骨传导蓝牙耳机推荐
  7. NE555的使用与理解
  8. 什么是组态软件(转)
  9. 计算机画大熊猫教学设计,大班美术画大熊猫的教学设计
  10. docker安装portainer中文版