一种基于卡尔曼滤波的语音增强方法

2023-05-16

一种基于卡尔曼滤波的语音增强方法

摘要

本文考虑了只有损坏的语音信号可供处理时的语音增强问题。为此,研究了卡尔曼滤波方法,并与维纳滤波方法进行了比较。卡尔曼滤波方法性能明显优于维纳滤波方法提出了一种延迟卡尔曼滤波方法,进一步提高了卡尔曼滤波的语音增强性能。

1 介绍

在许多实际情况下,语音信号被白噪声的加入所破坏。噪音的存在会影响语音的可理解性。一个例子是飞行员和空中交通管制塔之间的通信,其中语音通常由于发动机噪声的增加而降低。在这种情况下,最好是提高语音的质量和可理解性。在自动语音和说话人识别系统中,如果在预处理阶段加入语音增强方案,识别将变得更简单、更可靠。语音增强在语音编码应用中也起着重要的作用。

本文所解决的问题是在只有损坏的语音信号可供处理时增强语音。文献报道了大量语音增强的方法。平稳维纳滤波方法是一种重要的语音增强方法之一。

由于语音在本质上是非平稳的,平稳维纳滤波器不能很好地处理。因此,提出了基于短时功率谱的方法。最近,帕利瓦尔[2]提出了一种非平稳的语音增强维纳推理方法,其中维纳滤波器由使用最小二乘法的每个短时间语音段(持续时间=20-30毫秒)设计的。

虽然非平稳维纳滤波器在最小二乘误差意义上对给定段是最优的,但它没有利用语音产生过程的知识。在本文中,我们提出了允许语音非平稳性的卡尔曼滤波方法同时利用了语音产生模型。我们还表明,同一过滤器的延迟版本提供了进一步的改进,尽管计算的复杂度保持相同。

2 卡尔曼滤波器的语音增强功能

  1. 数学公式

语音可以用一个自回归(AR)过程来表示,它本质上是一个由白噪声序列驱动的全极点线性系统的重要输出。因此,第k个时刻的语音信号s (k)由

对方程(1)的一点观察表明,它可以用状态空间模型来表示,如下图所示。

其中,X (k)G分别为状态向量状态转换矩阵输入矩阵。其定义如下:

 

 当只有噪声损坏的信号y (k)存在时,观测过程可以写入以下形式:

这个方程可以写成以下矩阵形式

其中X (k)为方程(4)定义的状态向量,H为给出的观测矩阵

噪声序列{u(k)}和噪声序列{n(k)}是零均值白噪声过程,且不相关。观测噪声n (k)也与状态向量不相关。对于所有的k和l,我们可以写下:

它也假设X最初的估计是并且是无偏的,即

误差协方差矩阵Po的初始估计,是已知的从以下相对论

 状态方程(3)观测方程(8)清楚地表明,卡尔曼滤波器可以很容易地应用于状态向量X (k)的估计。可以很容易地证明,对和对分别是可控的和可观测的。因此,基于该模型的卡尔曼滤波器将是“稳定的”或“鲁棒”的,因为初始误差和f轮和其他计算误差的影响将渐近消失。

 卡尔曼滤波器给出了基于观测值{y(1),y(2),…,y(k)}的X (k)的最小均方误差估计,这个估计用表示。相应的误差协方差矩阵为类似地,X (k)的下一步预测估计为,相关的误差协方差矩阵为。使用这些符号,卡尔曼滤波算法可以通过以下递归关系给出: 

卡尔曼滤波对语音增强的应用包括两个独立的步骤:

  1. 估计AR系数和噪声方差Q和R。很多文献中已经提出了不同的方法来估计这些参数。
  2. 利用估计的参数值应用卡尔曼滤波算法。状态向量的最后一个分量,即给出了语音信号s (k)的卡尔曼滤波估计。

  1. 延迟卡尔曼滤波器

进一步的观察表明,状态向量的第一个分量s(k-p+1) 将更好地提供第(k-p+1)时刻的语音信号估计,因为这个估计使用了(p-1)额外观测数据{y(k-p+2),....,y(k)}形式的额外信息。这一现象反映在对角线元素,,误差协方差矩阵按升序排列。

实际上,是s(k-p+1) 的固定滞后平滑估计,它是滞后(lag)=p-1。这种方法将的计算延迟到1(k+p-1)。因此,我们将这个估计称为延迟卡尔曼滤波估计。

4 增值计算复杂度

卡尔曼滤波方法的计算方法无疑比较复杂。每次迭代都需要进行矩阵向量乘法,从而产生一个的操作数。但是,使用快速卡尔曼算法[7],它依赖于一些移位不变的特性,将每次迭代的计算复杂度降低到O (p)操作。另一个有趣的一点是,对于每个段,误差协方差和卡尔曼增益矩阵经过几步后达到一个稳态值。在此之后,稳态增益值可以用于该段的其余部分。因此,可以实现大量的计算机-狮子节省。

5 结论

本文提出了一种提高语音能力的卡尔曼滤波方法,并将其与平稳和正态平稳维纳滤波方法的性能进行了比较。由于卡尔曼滤波利用了语音产生模型,人们发现它比维纳滤波方法具有更好的性能(在信噪比和SEGSNR方面)。并提出了一种延迟卡尔曼滤波器,由于其固有的固定滞后平滑操作,进一步提高了卡尔曼滤波器的语音增强性能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一种基于卡尔曼滤波的语音增强方法 的相关文章

  • C语言 gets()和scanf()函数的区别

    scanf 函数和gets 函数都可用于输入字符串 xff0c 但在功能上有区别 若想从键盘上输入字符串 34 hi hello 34 xff0c 则应该使用gets 函数 gets可以接收空格 xff1b 而scanf遇到空格 回车和Ta
  • vector删除元素之pop_back(),erase(),remove()

    向量容器vector的成员函数pop back 可以删除最后一个元素 而函数erase 可以删除由一个iterator指出的元素 xff0c 也可以删除一个指定范围的元素 还可以采用通用算法 remove 来删除vector容器中的元素 x
  • setw()使用方法

    1 setw xff08 int n xff09 只是对直接跟在 lt lt 后的输出数据起作用 xff0c 而在之后的 lt lt 需要在之前再一次使用setw xff1b xff08 Sets the number of charact
  • 主存到Cache直接映射、全相联映射和组相联映射

    Cache的容量很小 xff0c 它保存的内容只是主存 xff08 内存 xff09 内容的一个子集 xff0c 且Cache与主存的数据交换是以块 xff08 cache line xff09 为单位的 为了把信息放到Cache中 xff
  • 图的存储结构-十字链表和邻接多重表

    1 十字链表 对于有向图来说 xff0c 邻接表是有缺陷的 关心了出度问题 xff0c 想了解入度就必须要遍历整个图才能知道 反之 xff0c 逆邻接表 解决了入度 却不了解出度的情况 有没有可能把邻接表和逆邻接表结合起来呢 xff1f 答
  • U3D开发的逆天级大型游戏有哪些

    1 World of Diving 潜水世界 一款潜水游戏 潜水世界 xff1a http dx60 downyouxi com qianshuishijie zip 氛围不错 xff0c 不过细看建模好像不是特别精细的样子 2 The F
  • 中断屏蔽技术

    1 中断屏蔽技术 xff1a 主要用于多重中断 多重中断 xff1a xff08 中断嵌套 xff09 当CPU 正在执行某个中断服务程序时 xff0c 另一个中断源又提出了新的中断请求 xff0c 而CPU 又响应了这个新的请求 xff0
  • 互斥锁Mutex和信号量

    Mutex是一把钥匙 xff0c 一个人拿了就可进入一个房间 xff0c 出来的时候把钥匙交给队列的第一个 一般的用法是用于串行化对critical section代码的访问 xff0c 保证这段代码不会被并行的运行 Is a key to
  • TCP/UDP的Socket编程接口详解

    socket概述 xff1a socket是在应用层和传输层之间的一个抽象层 xff0c 它把TCP IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信 socket起源于UNIX xff0c 在Unix一切皆文件哲学的
  • release版本程序调用libvlc接口出现异常

    release版本程序调用libvlc接口出现异常 super raymond lu at gmail dot com 转载请注明出处http blog csdn net raymond lu rl article details 7515
  • 对基于深度神经网络的Auto Encoder用于异常检测的一些思考

    一 前言 现实中 xff0c 大部分数据都是无标签的 xff0c 人和动物多数情况下都是通过无监督学习获取概念 xff0c 故而无监督学习拥有广阔的业务场景 举几个场景 xff1a 网络流量是正常流量还是攻击流量 视频中的人的行为是否正常
  • 阿里巴巴五轮面试经验分享

    拿到阿里实习offer xff0c 经历了5次面试 xff0c 其中4轮技术面 xff0c 1轮HR面试 在这里分享一下自己的面试经验和学习心得 希望能够帮助更多的小伙伴 我本科毕业于中南大学信管专业 xff0c 真正开始学习Java是在大
  • FishC笔记—20 讲 函数:内嵌函数和闭包

    本期内容详解 xff1a 1 内嵌函数 xff1a 函数内部新创建另一个函数 2 闭包 xff1a 函数式编程的重要语法 xff0c 如果在一个内部函数里 xff0c 对外部作用域 xff08 但不是在全局作用域的变量 xff09 进行引用
  • bash: setup.bash: No such file or directory和.bashrc文件的问题

    前段时间linux中打开终端时 xff0c 总是出现bash opt ros indig setup bash No such file or directory的问题 此问题跟每次终端打开时要加载的bash有关 xff0c 于是查bash
  • STL 容器、迭代器、算法归纳整理

    注 xff1a 文章由博主同步发布于 xff1a STL 容器 迭代器 算法小结 标准模板库 内容主要源自C 43 43 Standard Library 与 C 43 43 Primer STL是C 43 43 标准库的核心 xff0c
  • 对‘pthread_create’未定义的引用

    注 xff1a 本文由博主同步发布于 xff1a 对 pthread create 未定义的引用 问题 xff1a 使用CLion xff0c 在Linux下编写C 43 43 多线程程序 xff08 使用future和async xff0
  • 无人机4G数传一站多机模式

    随着4G的普及和5G技术的发展以及传统无人机数传距离的限制 xff0c 无人机联网的需求慢慢体现出来 xff0c 乐朴智能推出的无人机4G数传专为无人机应设计 xff0c 仅重49克方便无人机挂载 并且可以支持一站多机和多机互联的方式组网
  • 滑模原理框图

    这几天又重新复习了滑模控制原理 xff0c 借助相图来进行理解 xff0c 有了更深刻的认识 采用滑模控制要求系统是匹配条件下的 xff0c 更重要的是系统的扰动上界需要是已知的 xff0c 否则无法设置相应的切换增益用以抵抗干扰 xff0
  • 前端面试刷题网站汇总

    灵题库 http www lingtiku com 收集一线大厂面试真题 xff0c 还有专项训练 xff08 Promise 作用域 数据类型 React Vue 等等 xff09 以针对性提升 xff0c 每个题目有对应知识点的详细介绍

随机推荐

  • 大数据的感想

    1 大数据即全数据 xff08 即n 61 All xff0c 这里n为数据的大小 xff09 xff0c 其旨在收集和分析与某事物相关的 全部 数据 xff0c 而非仅分析 部分 数据 2 N 61 All xff08 所有 xff09
  • 完全搞懂shell脚本第一行:#!/bin/bash的含义

    shell脚本的第一行一般会写有以下字样 xff1a bin bash 或者 bin sh 或者 bin awk 比较常见的说法是 xff1a 第一行的内容指定了shell脚本解释器的路径 xff0c 而且这个指定路径只能放在文件的第一行
  • Python3 超好用的音频播放模块 playsound

    Python3 超好用的音频播放模块 playsound 前言playsound模块介绍一 模块安装二 使用三 使用中遇到大坑 xff1a 文件无法解除占用 xff01 前言 python2有个很好用的音频播放模块MP3player xff
  • ros中rviz查看激光雷达数据 hokuyo

    一开始没加tf会报错如下 WARN 1531227099 238940419 MessageFilter target 61 map Dropped 100 00 of messages so far 解决如下 启动传感器驱动 xff0c
  • ubuntu vscode 学习

    扩展 visual studio keymap 快捷键 Open the Command Palette View gt Command Palette Ctrl 43 Shift 43 P See an overview of the u
  • repo sync出现错误的解决方法

    1 xff1a 多次出现 fatal The remote end hung up unexpectedly fatal early EOF fatal index pack failed 网络不好 xff0c 挂VPN或使用其他的镜像源
  • python函数参数改不改变的问题

    python函数参数改不改变的问题 结论 xff1a python有可变对象和不可变对象之分 如果传入的参数是不可变对象 xff0c 则在函数体内对形参的修改不会导致实参被修改 xff0c 而如果传入的是可变对象 xff0c 实参有可能会变
  • Google 开源项目风格指南 (中文版)

    Google 开源项目风格指南 中文版 在线文档托管在 ReadTheDocs 在线阅读最新版本中文风格指南 GitHub 托管地址 xff1a zh google styleguide Note 声明 本项目并非 Google 官方项目
  • 富斯,迈克,天地飞4合1接收机说明书

    xff08 上图 xff0c 飞机用的接收机 xff09 xff08 上图 xff0c 车用的接收机 xff09 目录 1 如何和遥控器对码 xff1f 富斯FLLYSKY xff0c 天地飞 MC6C MC7C 2 如何切换对码另一个摇控
  • matlab: Unsupported shape type PolyLineZ

    参考 xff1a https gis stackexchange com questions 40613 importing shapefile in matlab Matlab使用shaperead读取shp文件时 xff0c 出现错误
  • 解决:mount: unknown filesystem type ‘ntfs’ 问题

    使用 mount dev sdb1 mnt usb 挂载U盘报错 mount unknown filesystem type ntfs 上网查询说是系统不支持ntfs文件 解决方法 xff1a 使用 ntfs 3g 来解决 打开ntfs 3
  • Centos7 进入单用户模式

    Centos7 进入单用户模式 当我们设置用户密码时 xff0c 有可能会忘记 xff0c 这时如何登陆呢 xff0c 单用户模式就可以 首先我们进入开机界面 xff0c 按e进行选择 会进入以下界面 xff0c 然后找到图中红线标注的该行
  • centos关机、重启、图形界面与命令行界面切换命令

    1 关机 xff1a init0 poweroff halt shutdown 2 重启 xff1a init1 reboot 3 图形界面切换到命令行界面 xff1a init3 或者 xff0c 修改配置文件 xff1a vi etc
  • CentOS连接Wifi及无法连接问题

    1 查看是否需要安装固件 大多无线网卡还需要固件 内核一般会自动探测并加载两者 xff0c 如果您得到类似 SIOCSIFFLAGS No such file or directory 的输出 xff0c 意味着您得手动加载固件 若不确定
  • Linux挂载windows网盘

    Linux挂载windows网盘 sudo mount t cifs o username 61 yourusername password 61 yourpsw 172 8 8 8 subpath mnt mountpath 安装问题解决
  • Linux命令行curl访问有登陆页面的网络

    curl d 34 username 61 yourusrname amp password 61 yourpsw amp pwd 61 yourpsw amp secret 61 true 34 X POST http 192 8 8 8
  • Windows下搜索指定类型文件,并写入txt中

    使用方式 xff0c dir会搜索包含子目录下的文件 dir path file type b s gt list txt 例如 xff1a 搜索wav文件夹下所以的wav文件 xff0c 包括子目录下的wav文件 xff0c 将结果写入w
  • MRT(MODIS Reprojection Tool)安装、影像批量拼接、重投影和格式转换

    一 安装MRT MODIS Reprojection Tool 安装准备 xff1a 检查是否安装java exe Java版本至少为Java 2 Runtime Environment version 1 5或者是Java 2 SDK v
  • arcpy.da.SearchCursor RuntimeError: cannot open '.shp'

    arcpy在使用arcpy da SearchCursor读取shp时报错RuntimeError cannot open 39 shp 39 xff0c 代码如下 xff1a coding utf8 import arcpy path 6
  • 一种基于卡尔曼滤波的语音增强方法

    一种基于卡尔曼滤波的语音增强方法 摘要 本文考虑了只有损坏的语音信号可供处理时 的语音增强问题 为此 xff0c 研究了卡尔曼滤波方法 xff0c 并与维纳滤波方法进行了比较 卡尔曼滤波方法 的 性能明显优于维纳滤波方法 提出了一种延迟卡尔