音频信号处理

声压 声压级

在这里插入图片描述
基准声压为 0.00002Pa
基准声压的作用是,希望对数单位为0,因为lg1=0
在这里插入图片描述
分贝和贝尔的差别:
分贝 是 十分之一 贝尔
在这里插入图片描述
分贝又称作:功率增益

一切开始由ADC采集模拟信号的离散状态开始,用离散信号还原原本的信号

dB值一般以ADC采的最大值作为0dB,举例:
比如表示 -6dB(图中应该是 -3dB,dB的计算方式应该是 10 lg(V1/V2),比如 10 lg(2)= 3.01 ≈ 3)
在这里插入图片描述

PCM

抽样,量化,编码
抽样:涉及到采样率
量化:把无限多的值变成有限的值,
比如0到3之间有无限个数字,但我们人为把0到3分为,1,2,3
编码
在这里插入图片描述

采样率

比如 44.1kHz,每秒采集数据 44.1k次
在这里插入图片描述

48kHz用在影碟
96或者192用在DVD的音频

采样位数(比特率)

在这里插入图片描述
量化失真:量化级差(间隔)越小,精度越高,量化噪声越小
12bit,16bit, 24bit
和动态范围有关,一般简单乘以 6.02。比如

声道

比特率

在这里插入图片描述

6 dB规则

在这里插入图片描述

动态范围(dB) = 6.02n + 1.76 ≈ 6n (dB)
n是数据的采样位数(16bit 24bit 32bit)
在这里插入图片描述
比如一个24bit的转换器,实际上的范围不是144dB,而是105dB

定点数,浮点数

在这里插入图片描述

DFT的原理

求卷积的过程是,把原信号和cosx相乘,比如原信号是一个sinx,那么当测试信号cosx移动90度时,两者相乘后的函数,
在周期内的积分不为0,且达到最大值,这个最大值就是测试信号对原信号的贡献,该角度就是测试信号的相位

同时,一个相位不为0的余弦信号,又等于两个不同幅度的相位为0的正弦和余弦信号相加

在这里插入图片描述
这个积分得到sin(2πft) 和 cos(2πft)和原信号相乘的卷积,从而可以得出测试信号cosx的相位和比例
相位:sin积分除以cos的积分
对原信号的贡献:两者的平方根
原式等于 a + ib,a为原信号和cos的积分,b为原信号和sin的积分

量化误差

滤波器

所有滤波器实现的原理,无非是延时加权求和

传输BUFFER

在这里插入图片描述
当收到DMA HALF TRANSMITTED COMPLETE INT时,就可以对 0,1,2,3,的数据进行处理
当收到DMA TRANSMITTED COMPLETE时,就可以对 4,5,6,7的数据进行处理,然后就可以发送 0,1,2,3的数据

biquad滤波

在这里插入图片描述

Q值是 resonance,FS是截止频率,(又称作 Fc 中心频率)比如Fc为1000,
Fc为系统最大响度-3dB处,所以中心频率的信号,幅度会稍微缩小

阶数决定滤波器的性能 12dB/24dB,双二阶就能满足12dB的性能,如果要24dB,就串联两个双二阶 ( biquad)
这样a,b的系数会增加,
同时定点的计算要考虑相乘溢出的问题

https://webaudio.github.io/Audio-EQ-Cookbook/audio-eq-cookbook.html
原理: https://www.earlevel.com/main/2003/02/28/biquads/
具体代码:https://github.com/dmgleichman/biquad_design_tool
具体代码:https://github.com/dmgleichman/biquad_design_tool/blob/master/Labwindows_Project/formula.c
JS代码:https://arachnoid.com/BiQuadDesigner/javascript/BiQuadFilter.js
网页图示:https://www.earlevel.com/main/2021/09/02/biquad-calculator-v3/
网页图示:https://arachnoid.com/BiQuadDesigner/index.html

线性时不变

https://blog.csdn.net/abc123mma/article/details/120251384

信号处理基础

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

浮点转定点

https://medium.com/incredible-coder/converting-fixed-point-to-floating-point-format-and-vice-versa-6cbc0e32544e
https://www.jianshu.com/p/825880324089

float int_to_float(x)//2^15
{
		int8_t sign;
		int16_t c;
		float f;
		c = abs(x);
		sign = 1 ;
    if (x < 0)
		{
			c = x - 1;
			c = ~c;
			sign = -1;
		}              
    f = (1.0 * c) / (32768);
    f = f * sign;
    return f;
}

int16_t float_to_fixed(float f)
{
		int16_t a;
	  a = f* (32768)+0.5;;
    if(a < 0)
		{
			a =  abs(a);
			a = ~a;
			a += 1;
		}
    return a;
}

频谱

https://zhuanlan.zhihu.com/p/54645971
波形的振幅决定了声音的响度大小,基频频率决定了音高,谐波(泛音列)和共振峰决定了音色。

音频播放机制

一般使用PingPong模式,就好比图片数据一样
数据一般按 512,1024帧的方式发送
有一个FIFO收集按键的数据,有一个量统计播放的进度
如果碰到音频停止的情况,数据填充0即可

底层硬件基础

SAI

在这里插入图片描述

I2S 四条线
时钟线
BCLK: SCK频率=声道数×采样频率×采样位数
LRCK: 用来判断是什么声道,0是左声道,1是右声道
MCLK: 主时钟,MCLK频率 =(128、256、512)* 采样频率;
数据线
DATA: MSB形式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值