当前位置: 首页 > news >正文

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

 

 

 

 

 

2.算法运行软件版本

matlab2022a

3.部分核心程序

...........................................................g0=zeros(1,lenH);
g1=zeros(1,lenH);
for n=1:lenHg0(n)=2*h0(n);g1(n)=-2*((-1)^(n-1))*h0(n);
end[x00,r1] = DPCM_function(x0);              %DPCM编码2
[x11,r2] = DPCM_function(x1);              %DPCM编码2%DPCM编码具体过程for i=1:396222
x0_tmp(i)=x0(i);
end
compd=(compand(x0_tmp,87.6,1,'A/compressor'))';
k=2^1;
codebook=(linspace(-1,1,k))';
pre=([0 1])';
partition=(linspace(-1,1,k-1))';
c0=dpcmenco(compd,codebook,partition,pre)
%============================================================
for i=1:396222
x1_tmp(i)=x1(i);
end
compd=(compand(x1_tmp,87.6,1,'A/compressor'))';
k=2^1;
codebook=(linspace(-1,1,k))';
pre=([0 1])';
partition=(linspace(-1,1,k-1))';
c1=dpcmenco(compd,codebook,partition,pre)
% %DPCM编码具体过程
% figure(6); plotspec(c0,Ts);title('第一路信号DPCM编码后的时域和频域波形')
% figure(7); plotspec(c1,Ts);title('第二路信号DPCM编码后的时域和频域波形')figure(8); plotspec(x00,Ts);       title('第一路信号DPCM编码后的时域和频域波形')
figure(9); plotspec(x11,Ts);       title('第二路信号DPCM编码后的时域和频域波形')
y0=filter(g0,1,x00);
y1=filter(g1,1,x11);
figure(10); plotspec(y0,Ts);           title('第一路滤波信号的时域和频域波形')
figure(11); plotspec(y1,Ts);           title('第二路滤波信号的时域和频域波形')X=y0+y1;
figure(12); plotspec(X,Ts);           title('最后处理后的时域和频域波形')
sound(X, fs);			              %播放此音频
pause(15)%=====================求编码速率=============================================
r1
r2
03_001m

4.算法理论概述

       在语音信号处理中,一种常见的编解码技术是差分脉冲编码调制(DPCM)。DPCM是一种无损或有损压缩技术,通过利用信号中的冗余性来减少数据传输或存储所需的比特数。在DPCM编解码中,滤波器是关键组件之一,用于对原始语音信号进行预处理和恢复。

1.差分脉冲编码调制(DPCM):
       DPCM是一种用于无损或有损压缩的数据编码技术。它利用信号中的差异和冗余信息来减少传输或存储所需的数据量。DPCM编码的一般原理是在编码端对输入信号进行预测,然后将预测误差进行编码传输,接收端根据已知的预测值和预测误差进行解码和恢复原始信号。

2.正交滤波器组:
       正交滤波器组是指一组具有正交性质的滤波器,其中每个滤波器的频率响应与其他滤波器互相正交。正交滤波器组在信号处理中有广泛应用,特别是在子带滤波器设计和信号压缩方面。它们可以将输入信号分解成不同的频率子带,从而提取信号的频域特征。

3.实现过程:
       基于正交滤波器组的语音DPCM编解码主要分为以下步骤:预处理、正交滤波器组的构建、DPCM编码和解码。下面将详细介绍每个步骤:
       预处理阶段是对原始语音信号进行必要的处理,以提高编码的效率和解码的准确性。常见的预处理步骤包括:信号归一化(使信号范围在[-1, 1]之间)、降噪(可选)、分帧(将信号分成较短的时间段)、加窗(对每帧信号加窗以减少频谱泄漏)等。
       构建正交滤波器组通常采用多频带滤波器组设计方法,如基于小波变换的滤波器组。小波变换是一种基于正交滤波器组的信号分解方法,它将信号分解成不同频率的子带。最常见的小波变换是离散小波变换(DWT)。

       在DWT中,信号经过一系列低通和高通滤波器的卷积和下采样,得到低频子带和高频子带。这个过程可以通过滤波器组的频率响应来描述,其中低频滤波器H0(z)和高频滤波器H1(z)构成正交滤波器组。

低频滤波器:H0(z) = h0(0) + h0(1)z^(-1) + h0(2)z^(-2) + ... + h0(N-1)z^(-(N-1))
高频滤波器:H1(z) = h1(0) + h1(1)z^(-1) + h1(2)z^(-2) + ... + h1(N-1)z^(-(N-1))

        其中,N是滤波器的长度,h0和h1是滤波器的系数。为了实现正交性,这两个滤波器需要满足一定的条件,例如:

h0和h1的长度为N,且满足h0(n) = (-1)^(N-1)h1(N-1-n),其中n = 0, 1, ..., N-1。
h0和h1之间的点积为0,即∑(h0(i)*h1(i)) = 0。
DPCM编码:
       DPCM编码的关键是对信号进行预测和计算预测误差。在基于正交滤波器组的DPCM编码中,我们将每个子带信号看作一个独立的信号进行处理。首先,输入信号通过DWT分解为多个子带信号。
假设x(n)是原始语音信号,x_i(n)表示第i个子带信号。预测器对每个子带信号进行预测,得到预测值x_hat_i(n)。预测误差e_i(n)定义为实际值与预测值之间的差异:
e_i(n) = x_i(n) - x_hat_i(n)

可以使用不同的预测器,例如前向预测、线性预测等,具体选择取决于应用场景和性能要求。

DPCM解码:
在接收端,接收到预测误差e_i(n)后,可以利用预测误差和预测值x_hat_i(n)来恢复原始信号x_i(n):
x_i(n) = e_i(n) + x_hat_i(n)
对所有子带信号进行解码,然后通过反向DWT合成得到重建的原始语音信号。

4、应用领域:
       基于正交滤波器组的语音DPCM编解码在语音信号处理和通信领域具有广泛的应用。其中一些典型的应用包括:

       语音通信系统:在语音通信中,为了降低带宽和传输延迟,通常需要对语音信号进行压缩和编码。基于正交滤波器组的DPCM编解码技术可以有效地压缩语音信号,实现高质量的语音通信。

       语音存储:在语音存储和语音文件传输中,基于正交滤波器组的DPCM编解码可以将语音信号压缩为更小的数据量,节省存储空间和传输带宽。

       语音识别:在语音识别系统中,为了提取语音信号的特征并降低计算复杂性,常常使用正交滤波器组进行预处理。DPCM编解码可以在语音识别前后对信号进行压缩和解压缩。

       语音加密:基于正交滤波器组的DPCM编解码可以用于语音加密,通过对预测误差进行加密来保护语音隐私和安全。

5.算法完整程序工程

OOOOO

OOO

O

相关文章:

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…...

VS2022和QT混合编程打包发布程序

1.在开始菜单输入 CMD 找到 Qt5.15.2(MSVC 64-bit) 2.输入windeployqt exe所在路径 3.运行完毕后,双击打开exe文件,可能会报错,缺少相关的dll,找到缺少的dll拷贝到运行文件夹下即可。...

Filebeat学习笔记

Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器,内置有多种模块(auditd、Apache、Nginx、System、MySQL等),针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点&#…...

【实战】 九、深入React 状态管理与Redux机制(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十六)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

第九十五回 如何使用dio的转换器

文章目录 概念介绍使用方法使用默认的转换器自定义转换器 示例代码经验分享 我们在上一章回中介绍了"如何打造一个网络框架"相关的内容,本章回中将介绍 如何使用dio的转换器.闲话休提,让我们一起Talk Flutter吧。 概念介绍 转换器主要用来转…...

Python深度学习“四大名著”之一【赠书活动|第二期《Python机器学习:基于PyTorch和Scikit-Learn》】

近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来,机器学习和深度学习迅猛发展,取…...

RAID相关知识

简介 RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑磁盘,从而提高硬盘的读写性能和数据安全性。 数据组织形式 分块&#x…...

DataStructure--Basic

程序设计数据结构算法 只谈数据结构不谈算法就跟去话剧院看梁山伯与祝英台结果只有梁山伯在演,祝英台生病了没来一样。 本文的所有内容都出自《大话数据结构》这本书中的代码实现部分,建议看书,书中比我本文写的全。 数据结构,直…...

Intellij IDEA 双击启动报错ClassNotFoundException: com.licel.b.z@

项目场景: 新从官网下载了ideaIU-2023.2.win.zip ,安装后双击启动报错, 无法运行idea, 提示信息如下 问题描述 Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.lang.ExceptionInInitializerErrorat java…...

使用 Logstash 及 enrich processor 实现数据丰富自动化

在我之前的文章: Elasticsearch:enrich processor (7.5发行版新功能) Elasticsearch:使用 Elasticsearch ingest pipeline 丰富数据 通过上面的两篇文章的介绍,我们应该充分掌握了如何使用 enrich proce…...

Django模板语法和请求

1、在django关于模板文件加载顺序 创建的django项目下会有一个seeetings.py的文件 如果在seeetings.py 中加了 os.path.join(BASE_DIR,‘templates’),如果是pycharm创建的django项目会加上,就会默认先去根目录找templates目录下的html文件&#xff0c…...

Android跨进程传大图思考及实现——附上原理分析

1.抛一个问题 这一天,法海想锻炼小青的定力,由于Bitmap也是一个Parcelable类型的数据,法海想通过Intent给小青传个特别大的图片 intent.putExtra("myBitmap",fhBitmap)如果“法海”(Activity)使用Intent去传递一个大的Bitmap给“…...

【动态规划part13】| 300.最长递增子序列、674.最长连续递增序列、718.最长重复数组

目录 🎈LeetCode 300.最长递增子序列 🎈LeetCode 674. 最长连续递增序列 🎈LeetCode 718. 最长重复子数组 🎈LeetCode 300.最长递增子序列 链接:300.最长递增子序列 给你一个整数数组 nums ,找到其…...

QMainWindow

文章目录 QMainWindow基本元素QMainWindow函数介绍简单的示例效果图 QMainWindow QMainWindow是一个为用户提供主窗口程序 的类,包含一个菜单栏(menu bar)、多个工具栏 (tool bars)、多个锚接部件(dock widgets)、―个 状态栏(status bar )及一个中心部件(central …...

PV操作解决经典进程同步问题

一.经典同步问题 在学习《操作系统》时,会接触到进程的概念,其中不可避免的接触到进程同步问题,今天我们用熟悉的PV操作解决一些经典的进程同步问题。 二.生产者-消费者问题 1.问题描述 问题描述:一组生产者进程和一组消费者进…...

一文3000字从0到1使用Selenium进行自动化测试

对于很多刚入门的测试新手来说,大家都将自动化测试作为自己职业发展的一个主要阶段。可是,在成为一名合格的自动化测试工程师之前,我们不仅要掌握相应的理论知识,还要进行大量的实践,积累足够的经验,以便快…...

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&am…...

交叉编译----宿主机x86 ubuntu 64位-目标机ARMv8 aarch64

1.交叉编译是什么,为什么要交叉编译 编译:在一个平台上生成在该平台上的可执行代码交叉编译:在一个平台上生成在另一个平台上的可执行代码交叉编译的例子:如51单片机的可执行代码(hex文件)是在集成环境kei…...

安防监控视频汇聚平台EasyCVR修改录像计划等待时间较长是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…...

深度学习调参指南

1. 选择合适的模型架构 模型的结构(层数和宽度),参数配置,尽量用已经有效的模型 2. 选择优化器 针对具体的问题,从选择常用的优化器开始,进行比较 3. 选择BatchSize 1). Batch Size决定训练速度,但是不影响验证集…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...