【语音编码】基于matlab ADPCM编解码(Matlab代码实现)

news2024/10/7 14:34:07

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码+语音

🎉4 参考文献


💥1 概述

图1显示了ADPCM编码过程的框图。将线性输入样本X(n)与该输入X(n-l)的先前估计进行比较。差值d(n)以及当前步长ss(n)被提供给编码器逻辑。如下所述,该逻辑产生ADPCM输出样本。该输出样本还用于更新步长计算ss(n+l),并提供给解码器以计算输入样本的线性估计。

编码器接受来自比较器的差值d(n)和步长,并计算4位ADPCM码。

📚2 运行结果

🌈3 Matlab代码+语音

部分代码:

%Quantizer Adaptation variable Declarations
rlt1=0;
al1=0;
rlt2=0;
al2=0;
detl =32;
dec_detl = 32;   
deth = 8;
dec_deth = 8;
nbl = 0;
plt1 =0;
plt2 =0;
deth=0;
nbh =0;
ah1 =0;
ah2 =0;
ph1 =0;
ph2 =0;
rh1 =0;
rh2 = 0;

%Lo and Hi Band Decoder Variable Declarations 
dec_nbl = 0;
dec_al1 =0;
dec_al2 =0;
dec_plt1 =0;
dec_plt2 =0;
dec_rlt1 =0;
dec_rlt2 = 0;
dec_nbh =0;
dec_ah1 =0;
dec_ah2 =0;
dec_ph1 =0;
dec_ph2 =0;
dec_rh1 =0;
dec_rh2 = 0;
% signal input to the quantizer and predi
xl=0;
sl=0;
el=0;

prev_sample=0;

%samples to be encoded and decoded
NumOfSamples=1022;
%the pcm code this is a uniform pcm code 16 bits
m=pcm('dantaleabrr.wav',NumOfSamples);

% the first 
m=floor((m(23:end)));


 

 for i=1:length(m)
     t2=m(i);
     t1=floor(0.5*(t2+prev_sample));
     prev_sample=t2;
   [il,ih,tqmf,rlt1,rlt2,al1,al2,ah1,ah2,plt1,plt2,ph1,ph2,rh1,rh2,nbh,nbl,deth,detl,delay_bpl, delay_dltx,delay_bph,delay_dhx,el,sl,xl]=encode(t1,t2,tqmf,delay_bpl,delay_dltx,delay_bph,delay_dhx,rlt1,rlt2,rh1,rh2,al1,al2,ah1,ah2,plt1,plt2,ph1,ph2,nbh,nbl,detl,deth);
 encode_var(1,i)=il;
 encode_var(2,i)=ih;
 
%Here there arrays are for debuging

xls(1,i)=xl;
els(1,i)=el;
sls(1,i)=sl;
%%%%
 end;
 for i=1:length(m)
     il=encode_var(1,i);
     ih=encode_var(2,i);
 [xout1,xout2,accumc,accumd,dec_del_dltx,dec_del_bpl,dec_del_dhx,dec_del_bph,dec_al1,dec_al2,dec_ah1,dec_ah2,dec_plt1,dec_plt2,dec_ph1,dec_ph2,dec_rlt1,dec_rlt2,dec_detl,dec_nbl,dec_nbh,dec_deth]=decode(il,ih,accumc,accumd,dec_del_bpl,dec_del_dltx,dec_del_bph,dec_del_dhx,dec_rh1,dec_rh2,dec_rlt1,dec_rlt2,dec_al1,dec_al2,dec_ah1,dec_ah2,dec_plt1,dec_plt2,dec_ph1,dec_ph2,dec_detl,dec_nbl,dec_nbh,dec_deth);
 outputcode(i)=0.5*(xout1+xout2);
 end;
%%get figures
subplot(2,1,1); plot(m);
subplot(2,1,2); plot(outputcode);
 

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

 [1]周江,杨清学,梁桃华,孟奕峰.基于EPG3231的ADPCM解码算法实现[J].电子设计工程,2017,25(12):175-177+181.DOI:10.14022/j.cnki.dzsjgc.2017.12.041.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

修改nginx返回的默认的server信息

文章目录1、修改请求响应头中的server信息2、修改nginx返回的默认页面中的server信息通过修改nginx源码来修改nginx返回的默认的server信息。 1、修改请求响应头中的server信息 修改前的代码和响应头中的server信息: 代码文件路径:nginx-1.21.4\src\htt…

APS排程软件与某一知名APS软件整体对比

APS排程软件作为高级计划与排程系统。主要是解决小批量、多品种的复杂生产要求。客户的要求交期越来越准。由于成本不断攀升,所以高产出和低成本也是重要的考量因素。 下面我们就安达发APS软件与某一知名APS做一下整体对比: 1.功能实用性 安达发APS排程…

5G无线技术基础自学系列 | MIMO原理

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 对于5G TDD系统, MIMO大幅提…

新手入门:Web安全测试大盘点

随着互联网时代的蓬勃发展,基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。 目前,很多企业的业务发展都依赖于互联网,比如,网上银行、网络购物、网络游戏等。但,由于很多恶意攻击者想通过截获他人信息去…

经典文献阅读之--PON

0. 简介 作为Transformer在机器视觉领域的爆火,在自动驾驶领域目前很多工作都集中在前视转鸟瞰图的方法中,这里我们来讲2020年一篇经典的论文《Predicting Semantic Map Representations from Images using Pyramid Occupancy Networks》,其…

手把手教你写嵌入式Linux中的Makefile(一)

一、Makefile的引入及规则 使用keil, mdk,avr等工具开发程序时点击鼠标就可以编译了,它的内部机制是什么?它怎么组织管理程序?怎么决定编译哪一个文件? 答:实际上windows工具管理程序的内部机制,也是Make…

【c++基础】第一章 C到C++过度阶段

第一章 C到C过度阶段第一个C程序:使用namespace名字using关键字bool类型string字符串结构体struct结构体成员函数指针的获取方式const关键字:内联函数函数缺省值:函数重载:引用(quote)开辟空间第一个C程序:…

UDP-A-D-乙酰氨基葡萄二钠盐;UDP-ALPHA-D-N-ACETYLGLUCOSAMINE, DISODIUM SALT

产品名称:UDP-A-D-乙酰氨基葡萄二钠盐 英文名称:UDP-ALPHA-D-N-ACETYLGLUCOSAMINE, DISODIUM SALT CAS No.:91183-98-1 分子式:C₁₇H₂₅N₃Na₂O₁₇P₂ 分子量:651.32 产地:西安 规格:…

如何在几百万qps的网关服务中实现灵活调度策略

作者 | 加纳斯 导读 说起百度的BFE可能不少人都听说过,但是其实在百度内部还有一个几百万qps的通用网关服务:Janus。截止当前,Janus服务不仅覆盖了百度内部FEED、评论、点赞、关注、直播等十多个中台服务的内网流量,而且为百度app…

【Java】JavaFx桌面编程整理

JavaFX是用于构建富Internet应用程序的Java库。 使用此库编写的应用程序可以跨多个平台一致地运行。 使用JavaFX开发的应用程序可以在各种设备上运行,例如台式计算机,移动电话,电视,平板电脑等。 为了开发具有丰富功能的Client Si…

运动爱好者的专属耳机,轻巧时尚又好用,哈氪无界上手

很多朋友在户外健身的时候喜欢戴上耳机,在音乐的节奏中去运动,现在市面上的运动耳机选择也特别丰富,为了在户外运动更安全,有些朋友会选择骨传导这种不入耳的耳机,上周我看到哈氪出了一款发带耳机,将运动发…

rac/rac one node扩容

某现场部署的cDAS RAC Onde Node超融合架构,2个计算/存储节点,1台仲裁节点 现网架构: 随着业务量增加,准备把仲裁节点加以利用,添加到融合节点的计算存储集群当中,与另外两个融合节点组成三节点的计算存储集群 改造后的架构: 一、配置仲裁节点(第三个计算/存储节点)…

windocs连接麒麟桌面---vnc软件

目录 一、下载vnc 二、麒麟服务器安装VNC远程 三、客户端连接 一、下载vnc客户端 Download VNC Viewer 6.22.826 - free - latest version

Nodejs -- 一文学会如何在Express中使用JWT(json web token)

文章目录在Express中使用JWT1 安装JWT相关的包2 导入JWT相关的包3 定义secret密钥4 在登录成功后生成JWT字符串5 将JWT字符串还原为JSON对象6 使用req.user获取用户信息7 捕获解析JWT失败后产生的错误8 完整代码示例在Express中使用JWT 1 安装JWT相关的包 运行如下命令&#…

Java基础概念-03-字面量

在有些资料中,会把字面量叫做,常量,或字面值常量,但最正确的叫法还是,字面量 小数在 Java 中也称为浮点数 下面是课本中的介绍: 常量是指在程序运行过程中,其值不能被修改的量,Java…

C# 移动飞机

一 实现一个飞机游戏,可以使用键盘控制飞机的移动。 二 游戏的显示 GameView:负责游戏的显示; 使用自定义绘制的技术,将飞机场地绘制出来; cells:3x3的单元格; OnSizeChanged:计算单元格的位置和大小&…

用VS软件开发“中国象棋“游戏<笔记摘录>

整体架构如上 1.很直观地去看这个中国象棋的界面,数一下它有多少行和多少列. 10行,9列:要注意这里数的是安放象棋的位置,有10行9列 这里我们首先想到的必然是二维数组,每一个行列交叉的点都设置成二维数组a[i][j]这样的格式,以此来确定棋盘上面每一个棋子的位置和走向. 我们…

01 导论【计量经济学及stata应用】

配套教材:《计量经济学及stata应用.陈强.2015.高等教育出版社》 官方课程链接:http://www.econometrics-stata.com/ 官方公众微信号:econometrics-stata 写博客的初衷就是为了督促自己把所学的知识进行整理和完善,我将于接下来的时…

性能测试-CPU性能分析,用户态us高,初步定位到代码行

监控工具安装 Grafana:安装请看我上一篇文章性能测试-JMeter influxdb grafana性能测试监控平台-食用指南_Tommy.IT的博客-CSDN博客JMeter测试脚本跑起来,在influxdb服务看看数据里面的数据,原来influxdb的jmeter库里面没有表,当JMeter脚本运…

PyCharm+PyQT5之三界面与逻辑的分离

之二的例程已经实现了界面与逻辑的分离,所建立的 Dialog Mainwindow 或者 widgets 等,界面改变其主调程序(暂且这样叫)更改,或者不需要大规模更改, 主调函数的程序是这样的 import sys import FistUI from PyQt5.QtWidgets import QApplication, QMainWindow,QDialog if __nam…