数字信号处理实验操作教程:3-3 mp3音频编码实验(AD7606采集)

一、实验目的

学习AD7606采集音频数据的方法并掌握MP3音频编码的原理,并实现AD7606采集音频数据进行MP3编码并保存到SD卡。

二、实验原理

AD7606原理图

硬件原理图,找到AD采集,可查看相关控制引脚,同时可看到ADC输入的V1V8通道分别对应CON29CON36口。

image.png

image.png

A/D转换

A/D转换,即模数转换,是指将一个输入电压信号转换为一个输出的数字信号。一般分为四个步骤进行:取样、保持、量化和编码。前两个步骤在取样-保持电路中完成,后两步骤则在ADC中完成。

AD7606

TL6748-PlusTEB实验箱上的AD采集是基于 ADI AD7606 芯片进行设计的,具体特性如下:

八通道;

16bit采样;

支持串行和并行读取方式;

支持全部通道 200K 采样率并行采集和转换;

支持真正±10V 或±5V 的双极性信号输入。

模数转换工作过程

AD7606上8个通道的数据是同时采集,轮流转换的。

模数转换模块接到启动转换信号后,按照排序器的设置,开始转换第一个通道的数据;经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存;按顺序进行下一个通道的转换;如果为连续转换方式则从新开始转换过程;否则等待下一个启动信号。

image.png

音频编解码的主要对象是音乐和语音,音频的编解码格式可分为无压缩的格式、无损压缩格式、有损音乐压缩格式、有损语音压缩格式和合成算法。本实验中使用的MP3格式属于有损音乐压缩格式。音频编解码的目的是减少传输的信息量和减少储存的信息。

image.png

MP3音频格式

MP3是一个数据压缩格式,它丢弃掉脉冲编码调制(PCM)音频数据中对人类听觉不重要的数据(类似于JPEG是一个有损图像压缩),从而达到了小得多的文件大小。

MP3音频可以按照不同的位速进行压缩,提供了在数据大小和声音质量之间进行权衡的一个范围,MP3格式使用了混合的转换机制将时域信号转换成频域信号。

特点:

(1)音质还原较好,压缩比比较高:10:1~12:1。

(2)软硬件支持好,应用领域广泛:随声听、MP3。

(3)文件体积较小,有利网络传输:网络主流音频格式。

(4)多次编辑后,音质会急剧下降。

(5)实现片内存储器、片内外设以及外部存储器之间的数据传输。

MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。它被设计用来大幅度地降低音频数据量。利用 MPEG Audio Layer 3 的技术,将音乐以1:10 甚至 1:12 的压缩率,压缩成容量较小的文件,而对于大多数用户来说重放的音质与最初的不压缩音频相比没有明显的下降。

从信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余。音频信号在时域和频域上具有相关性,也即存在数据冗余。将音频作为一个信源,音频编码的实质是减少音频中的冗余。

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字信号。

PCM文件格式

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。最常见的方式是通过脉冲编码调制PCM(Pulse Code Modulation) 。

PCM脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。

MP3编码参数

(1)采样率(sampleRate):采样率越高声音的还原度越好。

(2)比特率(bitrate):每秒钟的数据量,越高音质越好。

(3)声道数(channels):声道的数量,通常只有单声道和双声道,双声道即所谓的立体声。

(4)比特率控制模式:

CBR:constant bitrate,固定比特率,压缩出来的体积会很大,音质最好。

VBR:Variable Bitrate,动态比特率,压缩时根据音频数据即时确定使用什么比特率,兼顾了音质和体积大小,以质量为前提兼顾文件大小。

ABR:Average Bitrate,平均比特率,是VBR的一种插值参数,做为 VBR和CBR的一种折衷选择。

libmp3lame库

MP3编码一般会使用libmp3lame库,这是一个开源的MP3编码库。适合嵌入式移植和开发。通过lame库实现MP3编码的流程是初始化编码参数、设置编码参数、初始化编码器、编码PCM数据、结束编码,最后销毁编码器。

image.png

编码参数设置接口

第一个是设置设置被输入编码器的原始数据的采样率

第二个是设置最终MP3编码输出的声音的采样率,如果不设置则和输入采样率一样

第三个是设置被输入编码器的原始数据的声道数

第四个是设置最终MP3编码输出的声道模式,如果不设置则和输入声道数一样。

image.png

第五个是设置比特率控制模式,默认是CBR,但是通常我们都会设置VBR

第六个是设置CBR的比特率,只有在CBR模式下才生效

第七个是设置VBR的比特率,只有在VBR模式下才生效

image.png

接着看一下初始化编码器的接口,根据设置好的参数建立编码器

image.png

然后调用接口将PCM数据送入编码器,获取编码出的MP3数据。本实验中的双声道数据是交错在一起输入的,所以使用lame_encode_buffer_interleaved接口。

image.png

编码结束前需要刷新编码器缓冲,获取残留在编码器缓冲里的数据。

最后,编码结束后要销毁编码器释放资源。

image.png

SYS/BIOS 操作系统

SYS/BIOS 是一个可扩展的实时的操作系统(可拓展的实时内核)。

(1)具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性。

(2)SYS/BIOS提供了抢占式多线程,硬件抽象,实时分析和配置工具。

(3)优化的内存分配和堆栈管理(尽量少的消耗和碎片)。

(4)SYS/BIOS的设计是为了最大限度地减少对内存和CPU的要求.

能够实现系统的模块化并可裁剪。

(5)用于实时调度和同步的应用程序或实时的设备。

TASK任务

TASK任务模块是操作系统中最基本的模块,每个任务是一个单独的线程,各个线程(任务)具有各自的优先级。SYS/BIOS任务对象是被任务模块管理的线程。

(1)任务模块动态调度和抢占任务是基于任务的优先级和任务当前执行的状态的。这确保了处理器总是给予最高优先级的线程准备运行。

(2)SYS/BIOS的系统组件可以动态及静态创建任务,可以通过调用Task_create()动态创建Task对象,也可以在配置中静态创建Task对象。

(3)动态和静态创建任务的主要区别是:动态创建的线程可以在运行时删除,而静态创建的任务占用更少的内存资源。

cfg Script脚本语言。

点击“app.cfg->Open With-> XDCscript Editor”,可修改配置。

var Task = xdc.useModule('ti.sysbios.knl.Task');

var task0Params = new Task.Params();

task0Params.instance.name = "task0";

Program.global.task0= Task.create("&taskMain", task0Params);

程序流程设计

程序流程设计中首先要进行外设使能,接着初始化AD7606,进行管脚复用配置,初始化EMIFA,然后配置AD7606,接着进行按键中断检测,当按键按下时开始采集音频信号,进行MP3编码并将数据保存到SD卡上,编码完成后指示灯亮起即可。

image.png

三、操作现象

实验设备

本实验使用的硬件接口为AD接口和SD卡座,所需硬件为实验板,音频线,SMA转音频母口线,手机或电脑,SD卡,读卡器,仿真器和电源。

image.png

硬件连接

(1)使用SMA转音频母口线连接ADC的V1通道和音频线的一头,音频线的另一头连接手机或电脑,并播放音乐,采集时建议音乐音量放到最大,如果音量太低采集后播放可能会听不到音乐。

(2)将SD卡插入实验板的SD卡槽。

(3)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

点击运行程序

运行程序后,LED此时是熄灭状态,按下USER0,开始采集音频数据,同时 LED2闪烁,标记正在采集数据和编码。

编码过程大约需要 1 分钟。编码结束后,LED2常亮。

image.png

实验箱断电后,取下 SD 卡。

通过读卡器将SD卡插入电脑可查看 SD 卡目录下的内容,可查看保存的 song.mp3 文件。

打开并播放 MP3 文件.

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

稀碎从零算法笔记Day37-LeetCode:所有可能的真二叉树

今天的每日一题,感觉理解的还不够深,有待加深理解 题型:树、分治、递归 链接:894. 所有可能的真二叉树 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个整数 n ,请你找出所有…

记Postman参数化

因为需要在WEB页面上处理部分数据,手动操作太慢,所以考虑使用接口方式处理,因急于使用,用Python Request的方式,写代码也来得慢,故采用Postman加外部文件参数化方式来实现。 接口请求是Post方式&#xff0c…

【pysurvival Python 安装失败】

这个错误与 sklearn 包的名称更改有关,导致 pysurvival 在构建元数据时失败。现在,你需要修改 pysurvival 的安装文件以使用正确的 scikit-learn 包名 编辑安装文件:找到 pysurvival 的安装文件,可能是 setup.py 或 pyproject.to…

C语言题目练习

目录 前言 1 小乐乐与欧几里得 1.1题目 描述 输入描述: 输出描述: 1.2 解题 2 空心正方形图案 2.1 描述 输入描述: 输出描述: 2.2 解题 4 结语 前言 纸上得来终觉浅,觉知此事要躬行。C语言的学习不仅要了解…

【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt 开发环境的搭建 | Qt 安装教程 文章编号:Qt 学习笔记 /…

搭建 Qt 开发环境

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、QT SDK 的下载和安装 1.QT SDK 的下载 二、QT SDK的安装 1、找到下载的文件并双击 2、双击之…

智慧公厕,为智慧城市建设注入了新的活力

随着智慧城市的快速发展,公共厕所不再是简单的功能设施,而是成为了提升城市形象、改善民生服务的重要一环。智慧公厕作为新形态的公共厕所,通过精准监测公厕内部的人体活动状态、人体存在状态、空气质量情况、环境变化情况、设施设备运行状态…

Somme Requiem 全AI制作的电影短片

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

论文笔记:基于多粒度信息融合的社交媒体多模态假新闻检测

整理了ICMR2023 Multi-modal Fake News Detection on Social Media via Multi-grained Information Fusion)论文的阅读笔记 背景模型实验 背景 在假新闻检测领域,目前的方法主要集中在文本和视觉特征的集成上,但不能有效地利用细粒度和粗粒度…

Git常用语句

设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…

第13届蓝桥杯省赛 ---- C/C++ C组

文章目录 1. 字母排列2. 特殊时间3. 纸张尺寸4. 求和5. 数位排序6. 选数异或7. 消除游戏8. 重新排序9. 技能升级10. 重复的数 第13届蓝桥杯省赛C/C组题解。 1. 字母排列 这道题直接排序输出就好了。 #include <bits/stdc.h> using namespace std;char s[30];int main(…

vue2+element-ui 实现OSS分片上传+取消上传

遇到问题&#xff1a;项目中需要上传500MB以上的视频。一开始使用上传组件el-upload&#xff0c;调用后台接口&#xff0c;但是出现了onprogress显示百分百后接口一直pending&#xff0c;过了很多秒后接口才通&#xff0c;如果遇到大文件的话&#xff0c;接口就会报超时。 解决…

Python实现【贪吃蛇大作战】+源码

文章目录 前言&#xff1a;一、游戏概述1.游戏玩法2.游戏特色 二、游戏规则三、工具选择四、主要技术pygame 库numpy 库cocos2d 五、源码分享六、项目地址 前言&#xff1a; 今天的GitHub小游戏分享&#xff0c;我们将聚焦于一个经典而又极富趣味性的游戏——贪吃蛇大作战。这…

小米汽车正式发布:开启智能电动新篇章

随着科技的不断进步&#xff0c;汽车产业正经历着前所未有的变革。智能电动汽车作为这一变革的重要方向&#xff0c;正吸引着越来越多的目光。在这个充满机遇和挑战的时代&#xff0c;小米汽车凭借其卓越的技术实力和深厚的市场底蕴&#xff0c;终于迈出了坚实的一步。今天&…

护眼台灯是圆的好还是长方形的好?明基、书客、柏曼PK对比

护眼台灯作为现代人学习、工作的必备良伴&#xff0c;其形状的选择一直备受关注。市面上比较常见的有圆的和长方形两种形状。一般圆形光源的特点主要是灯光比较集中&#xff0c;采用对称的配光方式。条形光源的照射范围更广&#xff0c;光线在空间内分布均匀&#xff0c;各有特…

权限问题(Windows-System)

方法&#xff1a;用命令来写一个注册表的脚本 &#xff1f;System是最高级用户&#xff0c;但不拥有最高级权限 编写两文档&#xff1a;system.reg 和 remove.reg,代码如下&#xff1a; system.reg&#xff1a; Windows Registry Editor Version 5.00[-HKEY_CLASSES_ROOT\*…

谈谈考研数学几个常见误区

25考研数学&#xff0c;一定一定要吃透基础&#xff0c;练好计算 我之所以要强调这个&#xff0c;是因为现在的考研数学&#xff0c;越来越重视基础和计算的考察&#xff0c;题海战术已经过时&#xff0c;如果想要有效的提升自己&#xff0c;要进行针对性的学习。我去年考研的…

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…

基于ssm旅游资源网站(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的旅游资源网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 旅游资源网站的主要使用者分为管理…

​做一个个人博客第一步该怎么做?零基础就找一个现成的模板学一学呗

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…