音频培训
音频软件
音频存储
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数据
音频播放器设计
- 设计要点
- 音频搬运到缓存
- 缓存输出dac
- 设计前提:搬运的速度一定要比音频输出速度要快,不然一切设计不成立。
- 设计细节:
- 初始化
- 初始化AB区缓冲。
- 初始化频率硬件定时器做dac输出
- 搬运方式的确定,spi直接搬运或者定义dma搬运
- 播放逻辑:
- 触发播放时,先到flash做文件校验和长度确定
- 先搬运A区B区,开始触发定时器输出。
- 每次一个区域dac输出完成,会切换下个区域进行dac切换,且当前的区域启动覆盖读取。
- 初始化
音源制作
- 使用adble audition 2020 软件
转格方法
降噪
音频硬件
文章来源:https://www.toymoban.com/news/detail-845722.html
PA
- 功率放大器,简称功放。
参考文章文章来源地址https://www.toymoban.com/news/detail-845722.html
调试
- 喇叭两端可以接音频低通滤波板,还原出音源波形,观察输出情况是否削顶。
音频结构
喇叭
原理
内置音腔
外置音腔
音频调试经验
音量
- 音量调大的途径有四,音源,软件,硬件,结构。
音源
- 以下音源调大音量的方式:
软件
- dac左移放大
硬件
- PA放大倍数增大
结构
- 内置音腔换外置音箱,扩大音腔
- 更换喇叭位置,放置需要开孔的箱体,或直接暴露在外。
噪声
- 底噪
- 音源因采样过分调低,导致引入底噪。(8000hz容易引起)。
- 判断方式:直接电脑播转格后的音源,有底噪就是音源出问题,要处理。
- 软件。跳过硬件直接抓输出波形。看是否是过分放大导致削顶。
- 硬件PA引入。音频滤波板还原。看是否是过分放大导致削顶。
- 削顶是指波形经过各级放大,前端输出范围已经不满足,所以有些波形会被削去顶部。
- 找问题,直接用1k正弦波音频找,简化波形看问题。
- 硬件PA如果无法把底噪去的特别好,软件可以做的优化操作是,播放前使能PA,播完失能。
- 爆破声/咔声
- 一般是软件引入,看是否读取出错,获取播了空区。
到了这里,关于嵌入式音频知识点记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!