嵌入式音频知识点记录

音频培训

音频软件

音频存储

PCM
  • PCM是英文“Pulse Code Modulation”的缩写,中文意为“脉冲编码调制”。它是一种数字信号处理技术,用于将模拟信号转换为数字信号,常用于音频编码和传输
音频参数
采样率
  • 采样率:是指每秒电信号采集数据的频率,常见的音频采样率有8000HZ,16000HZ,44100HZ,48000HZ,96000HZ等。
  • 采样率越大,音频细节越丰富,,越细腻。如果音频的变化最小单位是441000hz,我们为了存储大小或者单片机输出性能降低了采样,以8000hz表示一个波形,那波形的一些细节就会丢失,比如说一些小尖峰就没有被8000hz采样到,造成细节的丢失。
采样位深
  • 采样位深:表示每个电信号用多少位来存储,例如8位的采样位深能够划为的等级位256份,人耳的可识别声音频率为20-20000hz,那么每个位的误差就达到了80HZ,这对音频的还原度大幅降低,但是它的大小相应的也减小了,更有利于音频传输。早期的电话就使用的比较低的采样率来达到更稳定的通话质量。如果16位位深就能精准采样每一HZ。对于采样位深其实也并没有简单的8位/16位/32位这么简单,对于计算机来讲16位既可以用short表示也可以用16位int表示,32位既可以用32位int表示也可以用32位float表示,除此之外还有有符号和无符号之分,所有对于在编解码的时候对于这个我们也需要注意。
  • 位深越大,音质也是越细腻。从程序理解,即一个音频点 电压是123.45mv adc采样回来是123mv,dac的位深表达只能100 110 120 130,所以这里dac的还原只能还原成120mv输出回去,这就造成一定的失真。
采样通道
  • 采样通道:常见的有单通道还是双通道,双通道能帮我们区分左右耳的声音,单通道的话两只耳朵都是一样的声音。通常我们追求立体感会使用双通道,所以双通道采集的声音也叫立体声。
  • 音频PCM估算例子:那么我们生成一段时长为10S,采样率44100hz,采样位数为16位,通道数为两位的PCM文件所要占的磁盘大小(单位bit)为:44100162*10。
WAV
  • WAV只解决了PCM数据没有存储录制格式的问题,解决办法也相当简单粗暴,直接在PCM的头部加上录制格式的信息,这些信息占用固定的44字节。所以WAV占用空间上非但没有比PCM数据小,反而大出44个字节,以下解析44字节。
    在这里插入图片描述
  • 其他压缩存储格式后续补充

软件播放

  • 软件音频播放方式有多种,i2s、dac。
i2s
  • i2s是一个传输音频的有线通讯制式,mcu通过i2s将pcm发给dsp ic 进行高质量的音频dac还原。
    在这里插入图片描述
dac

例程文章
在这里插入图片描述

  • dac就是以pcm确定的频率、位深,去还原音频。
  • 将麦克风adc采集的数字信号,以同样的频率同样的位深,dac输出回去
  • 举例:时长为10S,采样率44100hz,采样位数为16位。定义一个定时器频率44100hz,定义一个位深16位的dac,定时器按频率刷新dac的输出值,即可还原音频。
音频波形介绍
  • 音调
    • 波形图的多少即波形的疏密程度(相同时间内振动的快慢)指音调;
  • 响度
    • 波形图的高低即波形图的最高点和最低点的垂直距离(振幅大小)指响度;
  • 音色
    • 波形图的形状即波形图上细小的波形差距指音色。
  • 以下例子辅助理解

在这里插入图片描述

dac软件开发技巧
  • 软件调音量
  • 根据上述对音量的理解,我们知道一个采样点22mv,如果变22mv * 2,代表这个点的响度*2,如果将一段波形的额所有采样点同时 * 2,即代表着音量的放大。
  • 音频播放器程序设计时dac的输出可以预留一句gain的乘法运算,可用作音频调大调小。
  • 小位深dac表达大位深音源
  • 如果一个单片机的外设dac位深只支持12位,但有一个16位深的目标音频输出,如何处理。如下:0b 1111 2222 3333 44444,这是音频的输出位深16位的数据采样点,我们可以做右移变成 0b 1111 2222 3333 做dac 12位输出,这会让采样细节丢失,但是是一个快速的音频音量大小的调整方法,也是一个直白的16位采样转12位采样的方法。
  • 疑问:16bit转12bit为以下做法:
            p[i] = p[i] + 0x8000;                         // 16bit dac 数据为补码形式的,需要进行处理+0x8000
            p[i] = p[i] >> (4 + driverPlayerInfo.volume); // num 一般为4 右移4位剩下12bit dac数据
音频播放器设计
  • 设计要点
    1. 音频搬运到缓存
    2. 缓存输出dac
  • 设计前提:搬运的速度一定要比音频输出速度要快,不然一切设计不成立。
  • 设计细节:
    • 初始化
      1. 初始化AB区缓冲。
      2. 初始化频率硬件定时器做dac输出
      3. 搬运方式的确定,spi直接搬运或者定义dma搬运
    • 播放逻辑:
      1. 触发播放时,先到flash做文件校验和长度确定
      2. 先搬运A区B区,开始触发定时器输出。
      3. 每次一个区域dac输出完成,会切换下个区域进行dac切换,且当前的区域启动覆盖读取。
音源制作
  • 使用adble audition 2020 软件
转格方法

在这里插入图片描述
在这里插入图片描述

降噪

在这里插入图片描述

音频硬件

在这里插入图片描述

PA

  • 功率放大器,简称功放。

参考文章

调试

  • 喇叭两端可以接音频低通滤波板,还原出音源波形,观察输出情况是否削顶。

音频结构

喇叭

原理
内置音腔
外置音腔

音频调试经验

音量

  • 音量调大的途径有四,音源,软件,硬件,结构。
音源
  • 以下音源调大音量的方式:
    在这里插入图片描述
软件
  • dac左移放大
硬件
  • PA放大倍数增大
结构
  • 内置音腔换外置音箱,扩大音腔
  • 更换喇叭位置,放置需要开孔的箱体,或直接暴露在外。

噪声

  • 底噪
    1. 音源因采样过分调低,导致引入底噪。(8000hz容易引起)。
    • 判断方式:直接电脑播转格后的音源,有底噪就是音源出问题,要处理。
    1. 软件。跳过硬件直接抓输出波形。看是否是过分放大导致削顶。
    2. 硬件PA引入。音频滤波板还原。看是否是过分放大导致削顶。
  • 削顶是指波形经过各级放大,前端输出范围已经不满足,所以有些波形会被削去顶部。
    在这里插入图片描述
  • 找问题,直接用1k正弦波音频找,简化波形看问题。
  • 硬件PA如果无法把底噪去的特别好,软件可以做的优化操作是,播放前使能PA,播完失能。
  • 爆破声/咔声
    • 一般是软件引入,看是否读取出错,获取播了空区。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值