嵌入式音频处理基础

版权所有权归卿萃科技,转载请注明出处
作者:卿萃科技ALIFPGA
原文地址:卿萃科技FPGA极客空间 微信公众号


声音是什么:

声音是一种通过空气或者其他介质传播的纵向波。声音具有两种属性:振幅和频率。

声波的振幅是指对压强变化的度量。以分贝(dB)为测量单位。人类能够听到的最小的声波振幅称为“听觉阈值”,用0dBSPL来表示,这里的SPL是Sound Pressure Level的缩写,指声波压强级别。在这个SPL尺度上,参考压强定义为20微帕斯卡(uPa)。假定压强的变化为x,则 dBSPL的一般表达式为:
dBSPL=20*log(xuPa/20uPa)
这里写图片描述
各种常见声音的分贝值

从上表可以看出,人类可以忍受并能够听到的声音范围是120dB。因此所有工程设计上的音频系统都可以使用120dB作为动态范围的上限。

声音的另一个重要特征是频率,单位是赫兹(Hz)。或者说是每秒钟的周期数 。人类可听到的声音,频率范围是20Hz-20000Hz。

实际上,人类最敏感的频率范围是2-4KHz。在有损音频压缩算法中利用了两种有用的现象,这就是时间屏蔽和频率屏蔽。

在实践屏蔽中,高的音调可以淹没几乎同时发生的低音调。当某一频率的高音调渲染一些无法听到的附近频率的声音时会发生频率屏蔽。


音频信号

为了产生一个表示声波的模拟信号,必须使用转换器将机械的压强能量转换为电能量。即,麦克风。

由于麦克风可以将声音转换为电压,所以需要使用一种新的分贝刻度来描述声波的振幅。这个刻度称为dBV。以1V作为基准参考点。描述电压x和dBV之间的关系等式如下:

dBV=20*log(xVOLTS/1.0VOLTS)

另一种模拟分贝刻度以0.775V作为参考电压,单位符号是dBu。


模拟与数字音频信号之间转换

将模拟信号数字化,可以通过模数转换器(ADC)来实现。将数字信号模拟话可以通过数模转化器(DAC)来实现。许多音频系统实际上是一种全双工媒体处理流程,所以在一个包中既有ADC和DAC,这个包称为“音频解码器”(audio codec)。

所有的A/D和D/A转换都应遵循香浓-奈奎斯特(Shannon-Nyquist)采样定律。简单的说。这个定律规定,对模拟信号的采样频率必须大于信号中最高频率成分的两倍,只有这样才能在后面的D/A转换中对信号进行恢复。
这里写图片描述
(a) 用40KHz的频率去采样20KHz的信号可以正确捕捉到原始信号。
(b) 用30KHz的频率去采样20KHz的信号会出现混淆信号。

一般重建音乐信号时采用的最低采样频率为44.1KHz。在许多高品质的系统中,采用的48KHz的采样频率。

这里写图片描述
常用的采样频率

音频应用中常用的数字表示方法为脉冲编码调制(Pulse-Code-Modulated,PCM)信号。在这种表示方法中,每个采样周期用一个数字电平对模拟信号的幅度进行编码。得到的数字波形是一组采样自输入模拟波形的近似值。由于所有A/D转换器的分辨率都是有限的,所以在数字音频系统中,A/D转换器带来的量化噪声是不可避免的。
这里写图片描述


举例:
这里写图片描述
音频ADC AD1871功能框图
这里写图片描述
多媒体处理器ADSP-BF533与AD1871之间的无粘合连接

IIS是一种简单的三线串行接口,可以用来传输立体声数据。包含一根时钟线、一根数据线和一根左右声道同步线,用来选择当前正在传输的数据帧是左声道还是右声道。

本质上讲,IIS总线是一种时分复用串行流,具有两个活动通道。时分复用是一种在一个无力链接上传输多个通道数据的方法。

详细使用方法不在介绍,SPI总线不再详细介绍。


PWM输出:

可以使用另一种类型的调制方法,称为脉冲宽度调制(Pulse-Width Modulation,PWM)。用这种方式驱动输出电路不需要任何DAC,这是一种降低成本的方案。

在PCM中,每个采样周期都要对幅值进行编码,而在PWM信号中,描述幅值的占空比。PWM信号可以用通用的I/O引脚来产生,或者也可以直接由专门的PWM定时器驱动。

为使PWM音频达到很好的质量,PWM载波的频率至少应该是信号带宽的12倍,定时器的精度应该是16位。随着高速处理器的快速发展,PWM传送更高的音频频谱也是有可能的。

PWM数据流必须经过低通滤波,以便移出高频载波。在驱动扬声器的放大电路中经常这么做。在低成本应用中,声音质量不是很重要,PWM数可以用来充当低通滤波器过滤调高频载波。
这里写图片描述
PWM信号


连接器:
这里写图片描述
各种音频连接器


音频系统动态范围和精度:

这里写图片描述
各种音频系统动态范围的比较

上述动态范围数字的意义:
这里写图片描述
音频系统中一些重要术语之间的关系

人耳的动态范围(也就是人耳能够听到的最大声音和最小声音之比)大约是120dB。在一些存在噪声的系统中,动态范围的定义是最大的信号电平与最小的噪声之比,即动态范围(dB)=信号峰值(dB)-噪声最低限度(dB)

SNR—信噪比(Signal-to-Noise Ratio,SNR)。在模拟系统中,这个术语是指名义信号与噪声最低限度之间的比值,线路电平(line level)是指名义 操作电平。在专业设备中,名义电平一般为1.228Vrms(电压有效值)。转换为分贝是+4dBu。动态余量(headroom)是指名义线路电平与峰值电平之间的差值,在峰值电平处开始发生信号的失真。在数字系统中,信噪比定义稍有不同,它直接定义为动态范围。

6dB规则:

这个规则对于动态范围与计算字宽之间的关系非常重要,公式如下:动态范围(dB)=6.02n+1.76=6n dB,这个公式的意义在于,数据位数每增加一位,动态范围增加6dB。注意的是,6dB规则并没有考虑音频系统中的模拟子系统,所以输入和输出端的转换器带来的影响必须进行单独考虑。

6dB规则表示,使用的数据位宽越大,则系统的品质越高,实际上,切实可行的选择并不多。绝大多数适合于嵌入式多媒体处理的设备主要使用3种字宽:16位、24位和32位。
这里写图片描述
各种定点体系结构下的动态范围


音频的数字格式:

用于音频处理的两类主要的处理器结构分别是定点型和浮点型。定点型处理器用来处理整数和小数算法,通常本地支持16位、24位和32位。浮点型处理器则具有更强的性能,本地支持32位和64位浮点数据类型。浮点型处理器通常在成本和功耗上比定点型处理器高,而绝大多数系统必须在品质与工程成本之间作一个平衡。
这里写图片描述
当忽略量化误差时,对于理想的16位96dB的SNR系统各种字宽额外比特的分配
这里写图片描述
当存在量化误差时,对于理想的16位96dB的SNR系统各种字宽额外比特的分配

运算方法:

定点运算

浮点运算

详细算法这里不做介绍。


音频处理方法:

数据输入到处理器内核:

一般而言,与音频编解码器相连的处理器通常使用DMA将数据从编解码器接口传输到处理器内部的存储器中。这样的数据传输在后台进行的,无需处理器干预。处理器唯一的开销是设置DMA序列,当数据缓存或者发送完数据后处理中断。

块处理与采样处理:

采样处理和块处理是两种处理数字音频数据的方法。在基于采样的方法中,处理器在数据可用时立即进行处理。这种情况下,每次采样期间都会有些处理开销。许多滤波器都是利用这种方法实现的,它们要求的延迟非常小。

另一种方法是块处理,利用一定深度的缓存先将数据存储起来,然后送到处理器进行处理。这种方法比采样处理更加有效。一方面,块处理极大的减少了每次采样时调用处理函数的开销,另一方面,许多嵌入式处理有多个ALU单元,可以并行计算 一个块的数据。

双缓存:

基于块处理系统中,一般利用DMA在处理器内核与设备之间传输数据,这时必须要有双缓存来分别处理DMA和处理器内核的数据。这样做是为了避免处理器内核与独立于处理器的DMA同时访问相同的数据,从而带来数据一致性问题。
这里写图片描述
数据流处理的双缓存方案
具体详细过程不再赘述。


滤波与算法:

有限脉冲响应滤波器

无线脉冲响应滤波器

快速傅里叶变换


音频压缩:

音频压缩技术指的是对原始数字音频信号流(PCM编码)运用适当的数字信号处理技术,在不损失有用信息量,或所引入损失可忽略的条件下,降低(压缩)其码率,也称为压缩编码。它必须具有相应的逆变换,称为解压缩或解码。音频信号在通过一个编解码系统后可能引入大量的噪声和一定的失真。

音频编解码器分为无损编解码器和有损编解码器。无损编解码器是指压缩后的数据可以被完全恢复,恢复后的数据与原始输入信号完全一致。无损编解码器计算量比较大,可以将音频信号的比特率降低大约一半。有损编解码器可以将音频信号压缩的更多,从有损音频流解码得到的音频信号非常接近于原始信号,但 有些信息在编码过程中就损失掉了。
这里写图片描述
各种音频编解码器

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

AAC(Advanced Audio Coding),中文名:高级音频编码,出现于1997年,基于MPEG-2的音频编码技术。由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。

AC-3是杜比公司开发的新一代家庭影院多声道数字音频系统。杜比定向逻辑系统是一个模拟系统。它的四个声道是从编码后的两个声道分解出来的,因此难免有分离度不佳、信噪比不高,对环绕声缺乏立体感,并且环绕声的频带窄等缺点。AC(Audio Coding)指的是数字音频编码,它抛弃了模拟技术,采用的是全新的数字技术。

WMA(Windows Media Audio),它是微软公司推出的与MP3格式齐名的一种新的音频格式。由于WMA在压缩比和音质方面都超过了MP3,更是远胜于RA(Real Audio),即使在较低的采样频率下也能产生较好的音质。一般使用Windows Media Audio编码格式的文件以WMA作为扩展名,一些使用Windows Media Audio编码格式编码其所有内容的纯音频ASF文件也使用WMA作为扩展名。

RealAudio(即时播音系统)是Progressive Networks公司所开发的软体系统。是一种新型流式音频 Streaming Audio文件格式。它包含在 RealMedia中,主要用于在低速的广域网上实时传输音频信息。有了RealAudio这套系统一般使用者只要自备多媒体个人电脑、14.4kbps数据机(它最低只占用14.4kbps的网路频宽)和PPP拨接帐号,就可以线上点播转播站或是聆听站台所提供的即时播音。

Ogg全称应该是OGG Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。OGG Vorbis有一个很出众的特点,就是支持多声道,随着它的流行,以后用随身听来听DTS编码的多声道作品将不会是梦想。

Vorbis 是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的多媒体系统。目前该计划只实现了OggVorbis这一部分。

FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3 及AAC,它不会破坏任何原有的音频资讯,所以可以还原音乐光盘音质。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持。

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 嵌入式Qt开发项目教程目录通常包括以下几个主要部分: 1. 嵌入式Qt开发入门:介绍嵌入式Qt开发的基础知识和环境准备,包括Qt的安装和配置,嵌入式开发板的选择和搭建等。 2. Qt编程基础:介绍Qt的基本编程概念和常用类库,包括信号与槽机制、界面设计、布局管理器、事件处理等内容。 3. Qt多媒体应用开发:介绍如何使用Qt开发多媒体应用,包括音频播放、视频播放、图像处理等相关内容。 4. Qt网络应用开发:介绍如何使用Qt进行网络通信,包括TCP/IP通信、UDP通信、HTTP通信等相关内容。 5. Qt数据存储和数据库:介绍如何使用Qt进行数据存储和数据库操作,包括文件读写、XML处理、SQLite数据库等相关内容。 6. 嵌入式Qt界面开发:介绍如何使用Qt进行界面开发,包括窗口管理、界面布局、控件使用、多语言支持等相关内容。 7. Qt图形应用开发:介绍如何使用Qt进行图形应用开发,包括图形绘制、图像处理、动画效果等相关内容。 8. 嵌入式Qt性能优化:介绍如何对嵌入式Qt应用进行性能优化,包括代码优化、内存管理、资源优化等相关内容。 9. 嵌入式Qt应用部署:介绍如何将嵌入式Qt应用部署到目标设备上,包括交叉编译、打包发布、调试技巧等相关内容。 总的来说,嵌入式Qt开发项目教程目录应该涵盖了从入门到实践的全面内容,帮助读者掌握嵌入式Qt开发的基本知识和技能,并能够独立完成嵌入式Qt应用的开发和部署。 ### 回答2: 嵌入式Qt开发项目教程目录如下: 第一章:嵌入式Qt开发介绍 - 介绍嵌入式Qt开发的概念和应用场景。 - 介绍Qt平台及其特点。 第二章:环境搭建 - 介绍嵌入式开发平台,如Linux或RTOS。 - 介绍Qt开发环境的安装和配置。 - 介绍交叉编译工具链的搭建。 第三章:Qt基础知识 - 介绍Qt的基本概念,如信号和槽机制、对象树等。 - 介绍Qt常用的核心类,如QWidget、QLabel、QPushButton等。 - 讲解Qt的布局管理器和UI设计工具。 第四章:嵌入式Qt应用开发 - 介绍Qt的事件处理和多线程编程。 - 讲解Qt的网络通信和数据库访问。 - 介绍Qt图形和动画的应用。 第五章:嵌入式Qt与硬件交互 - 介绍如何使用Qt与硬件进行交互,如GPIO、串口、I2C等。 - 讲解Qt的音频和视频处理能力。 第六章:嵌入式Qt应用优化和调试 - 介绍Qt应用的性能优化技巧。 - 讲解如何使用Qt Creator进行调试和单元测试。 - 介绍Qt的错误处理和日志记录。 第七章:嵌入式Qt应用部署与发布 - 介绍Qt应用的打包和部署策略。 - 讲解如何进行Qt应用的远程调试和更新。 第八章:案例分析与实践 - 通过实际的嵌入式Qt开发案例,加深对前述知识点的理解。 - 讨论如何解决实际项目中遇到的问题。 此目录提供了一条完整的嵌入式Qt开发学习路径,从环境搭建到高级应用优化,逐步引导读者了解嵌入式Qt开发的各个方面,并附带示例代码和实践案例,帮助读者更好地理解和掌握该领域的知识与技能。 ### 回答3: 嵌入式Qt开发项目教程目录可以大致分为以下几个部分: 1. Qt简介: - Qt介绍 - Qt的优点和特点 - Qt的应用领域 - Qt的版本和许可 2. 嵌入式Qt开发环境设置: - 操作系统的选择和配置 - Qt SDK的安装 - Qt Creator的配置 - SDK的交叉编译配置 - Qt交叉编译工具链的配置 3. 基本Qt开发知识: - Qt的核心概念和类库 - Qt的信号与槽机制 - Qt的事件处理 - Qt的界面设计和布局 4. 嵌入式应用程序架构设计: - 嵌入式应用程序的特点和要求 - 设计模式在嵌入式Qt开发中的应用 - MVC模式和Qt的数据模型 - 多线程编程 5. 嵌入式Qt开发工具的使用: - Qt Creator的使用技巧 - 调试嵌入式Qt应用程序 - 嵌入式Qt应用程序的性能优化 - Qt的国际化和本地化支持 6. 嵌入式Qt常用模块的使用: - Qt网络编程 - Qt数据库编程 - Qt图形编程 - Qt多媒体编程 - Qt传感器编程 - Qt系统操作和硬件控制 7. Qt在嵌入式系统中的应用案例: - 嵌入式Qt应用的开发流程 - 嵌入式Qt应用的实际项目案例 - Qt在物联网和智能家居中的应用 通过以上这些章节和具体内容,可以帮助初学者系统地了解嵌入式Qt开发的基本知识和技能,并能够应用于实际项目中。当然,根据实际情况,可以根据项目需求进行适当的调整和补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值