![](https://img-blog.csdnimg.cn/20210803232929613.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
音频算法专栏
介绍分享常用音频算法及实现方式
ToneChip
星光不问赶路人,岁月不负有心人
主攻AFC,ANC,AEC,AGC点声学算法落地.目标做国内极致简约的音频处理产品
展开
-
音频处理中的域-Bark与Mel域
掩蔽效应具有临界带的现象可以从听觉生理上找到依据.人耳基底膜具有与频谱分析器相似的作用。原创 2022-11-18 10:58:18 · 558 阅读 · 0 评论 -
语音降噪中“音乐噪声“的处理方法
语音降噪中"音乐噪声"的处理方法原创 2022-11-17 20:13:09 · 551 阅读 · 0 评论 -
无需中间变量交换两个数
无需中间变量交换两个数原创 2022-11-09 17:11:03 · 119 阅读 · 0 评论 -
车内降噪与智能降噪头枕的研究
车内降噪与智能降噪头枕的研究原创 2022-10-20 11:42:55 · 484 阅读 · 2 评论 -
AFMG SysTune应用程序错误无法启动的问题
AFMG SysTune原创 2022-09-27 17:28:44 · 454 阅读 · 0 评论 -
声反馈系统:陷波型啸叫抑制器的啸叫检测方法大总结
啸叫检测的方法原创 2022-09-06 18:20:06 · 1462 阅读 · 0 评论 -
在ADSP21489上使用Biquad做一个陷波器
在ADSP21489上使用Biquad做一个陷波器原创 2022-08-17 15:45:40 · 705 阅读 · 0 评论 -
在ADSP21489上使用FFT和IFFT库完整源码--分析窗为矩形窗
在ADSP21489上使用FFT和IFFT库完整源码--分析窗为矩形窗原创 2022-08-16 17:33:31 · 414 阅读 · 0 评论 -
FFT专题:IFFT后信号如何重建
IFFT后信号如何重建原创 2022-08-16 17:11:04 · 2171 阅读 · 0 评论 -
ADSP21489 Target halted due to software breakpoint but no breakpoint found at address: 0x208c0b6 ()
遇到一个很奇怪的问题,一跑到cfft这个执行傅里叶变换函数就出现这个错误。去掉几处section也是这样。原创 2022-08-12 19:53:10 · 272 阅读 · 0 评论 -
一种近似AMP音频增益转dB的优化写法:20.0*log10(amp)
AGC算法中有两个很重要的优化函数,没有具体测试这两个函数到底优化多少,后期测试一下。原创 2022-08-12 11:46:32 · 235 阅读 · 0 评论 -
音频常规算法---使用一阶滞后滤波实现音量的淡入淡出
使用一阶滞后滤波实现音量的淡入淡出原创 2022-07-21 14:01:38 · 1031 阅读 · 0 评论 -
音频常见端子剖析图---再也不会搞错了
音频端子图解原创 2022-07-15 22:05:33 · 761 阅读 · 0 评论 -
音频控制常见BUG注意事项
音频控制常见BUG注意事项原创 2022-07-12 10:16:01 · 164 阅读 · 0 评论 -
log10的快速算法
在音频算法中经常会使用log10的计算方法这里推荐一种芯片大厂的快速写法,效率较C语言库函数提高50%+/***************************************************************** * log10 计算循环1000次占用575214 * TC_Log10 计算循环1000次占用233155 *****************************************************************/float TC.原创 2022-04-28 09:47:26 · 3706 阅读 · 0 评论 -
ADSP21489的算法调用基础
一直用这款芯片做开发,却没有很深入的写相关文章,最近需要重新做算法,打算写很基础的算法使用实例1.在ADSP21489上使用FFT和IFFT库2.在ADSP21489上使用Biquad双二阶函数使用方法3.在ADSP21489上进行算法时间的测量4.在ADSP21489上如何做优化,类似TI的优化指令...原创 2022-03-17 23:01:08 · 827 阅读 · 0 评论 -
音频编辑生成软件
https://www.ocenaudio.com/这个软件我个人觉得比cooledit好用原创 2022-01-20 14:49:24 · 275 阅读 · 0 评论 -
算法中几个有用的宏定义
#ifndef M_PI#define M_PI 3.14159265358979323846#endif#ifdef FIXED_POINT#define WORD2INT(x) ((x) < -32767 ? -32768 : ((x) > 32766 ? 32767 : (x))) #else#define WORD2INT(x) ((x) < -32767.5f ? -32768 : ((x) > 32766.5f ? 32767 : floor(.5+(x.原创 2022-01-17 17:10:58 · 214 阅读 · 0 评论 -
算法优化:C与汇编的混编(对计算进行优化)
因为最近在MCU上做算法优化,需要针对平台做一些特定指令的算法优化,比如使用平台特有的乘法指令或者加法指令来对算法进行加速有时为了高效,有时为了直接控制硬件,有些模块我们不得不直接用汇编语言来编写(下面有些部分是摘抄的重点,后面是我自己写的)首先贴出C与汇编混编的编写规则内嵌汇编语法如下: __asm__(汇编语句模板: 输出部分: 输入部分: 破坏描述部分)共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三...原创 2021-12-11 10:24:54 · 496 阅读 · 0 评论 -
音频算法中“加权“的概念
经常听到很多算法描述中提到比如"对各点进行加权平滑",这里的加权很好奇又不懂去搜索了一下“加权”的意思就是“乘以权重”,即“乘以系数”的意思那么这里简单比较好的理解就是比如我们大学的时候,会计算总成绩老师会说,期末考试成绩占90%,平时成绩占10%那么假如你期末考试得了 80分,平时成绩得了60分那么你最后的成绩就是 90% * 80 + 10%*60这里的90%和10%就是权重,即比例系数...原创 2021-12-10 11:47:56 · 2485 阅读 · 0 评论 -
Speex维纳滤波与超几何分布的改写
目前在研究降噪算法里面有一段关于维纳滤波和超几何分布计算耗时比较大,看原来的代码PDIV32_16,SHL32,EXTEND32等等这些宏定义看着很烦躁,下面直接把原来的格式用float的C语言方式直接改写一下原文如下 //N = 128; M = 24 for (i = 0; i < N; i++) { spx_word32_t MM; spx_word32_t theta;原创 2021-12-10 11:10:48 · 466 阅读 · 0 评论 -
MFCC: Mel频率倒谱系数计算感知频率和实际频率转换
人的主观感知频率不一定是线性的,因此有一个实际频率和感知频率的对应关系.用上面的公式进行计算!由于人耳基底膜对应不同的频率群(24个),对于同一个频率群中频率是会在大脑中叠加在一起进行评价因此在频率群的临界带就可以分成一些的频率群组,组成一个滤波器组,就是Mel滤波器组因为之前一直没搞懂书上写的1125*log(1 + f/700)后面才发现matlab里面log默认就是以e为底进行计算即log(x) = loge(x)如果matlab里面要计算以2为底,则log2下面验证...原创 2021-12-09 18:49:21 · 1150 阅读 · 0 评论 -
高效的串口循环Buffer接收处理思路及代码2
前面的文章下面先自定义将串口协议定出来,按照这个协议发送的数据格式进行解析,因为串口数据快,多帧的数据就混到一起,我们要把多帧的数据按照协议提出解析出来,因此就有这篇文章进行数据解析,我的注释写的很详细,串口的接收是一个循环的fifo,也就是每个字节接收到之后从0开始存到缓存的最后,存满之后再从缓存的0开始存,是一个循环的结构14字节设置命令'S'协议基本格式 字节序号 Hex内容 说明 备注 0 0x55 固定桢头 固定桢头 1 0xAA原创 2021-12-09 16:00:29 · 2347 阅读 · 0 评论 -
IIS数据转换问题16bit转24bit
今天遇到一个很奇怪的问题要求是一个16bit的数据送到一个24bit的DAC中去播放,结果噪声变大?不知道为何按照常规理论,16bit转24bit只需要左移8位就可下面复习一下IIS驱动里面的逻辑①左对齐:WCLK为高电平时,是左声道,低电平时右声道数据数据从左边开始,低8位为0②右对齐:WCLK为高电平时,是左声道,低电平时右声道数据比如说你采集到一个负数 0xc00000,采集的int类型接收可能就变成了0x00c00000, 你需要将其变为0xffc00000③原创 2021-12-07 17:52:31 · 1360 阅读 · 0 评论 -
音频算法仿真平台模板搭建2(fread双声道数据 short版本 16位数据)
/************************************************************************ 一个完整的关于fopen,fread,fwrite,fclose的操作** 一个关于算法仿真的实例***********************************************************************/#include <stdafx.h>#include <stdio.h>#inc.原创 2021-12-07 11:18:12 · 182 阅读 · 0 评论 -
在DSP中如何生成一段模拟信号
#define MAXN 4096/* Sampling Rate */#define Fs 1000.0#define PI 3.141592654 /* * FFT input signal = signalA + signalB * signalA : sine wave signal with amplitude of 5 and frequency of 50 Hz * signalB : sine..原创 2021-05-11 23:52:12 · 361 阅读 · 0 评论 -
VS调试程序请一定关闭程序"优化":局部参数传参等意外被改变
在调试程序的时候无意中观察一个传值变量比如void fun(int len){ for (i=0; i<len; i++) { smoothingState = coefSmoothing*tmp + (1.0-coefSmoothing)*smoothingState; DataOut[i] = smoothingState...原创 2019-06-04 14:14:58 · 2468 阅读 · 1 评论 -
记录一下WAVE_FORMAT_PCM的用法
详解WAVE音频文件格式 WAVE声音文件格式是目前Windows最直接保存声音数据的文件格式.在涉及声音信号处理时大多是对WAV文件直接操作,有必要搞清楚所研究声音的文件格式.RIFF文件与WAV文件 在Windows环境下,大部分多媒体文件都依循着一种结构来存放信息,称为资源互换文件格式(Resources Interchange File Format),简称RI原创 2017-05-19 15:27:31 · 6440 阅读 · 0 评论 -
VS明明定义了函数却编译出错:error LNK2019: 无法解析的外部符号
1>LINK : 没有找到 E:\VS2008\ASM_C_test\Debug\ASM_C_test.exe 或上一个增量链接没有生成它;正在执行完全链接1>ASM_C_test.obj : error LNK2019: 无法解析的外部符号 "void __cdecl DSPF_sp_fftSPxSP(int,float *,float *,float *,unsigned char *,i原创 2017-09-14 13:01:23 · 8056 阅读 · 2 评论 -
warning C4996: 'fopen': This function or variable may be unsafe解决办法
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.解决办法如下:原创 2017-10-13 16:41:44 · 534 阅读 · 0 评论 -
转载:dBFS、dBm、dBV、dBW、0dB、-3dB概念解析
转载 2019-06-06 10:59:35 · 1280 阅读 · 0 评论 -
window 多声道音频采集
window 多声道音频采集原创 2017-05-09 16:57:54 · 2388 阅读 · 0 评论 -
VS调试内存读取异常 Win-Ruby.exe 中的 0x0028b86a 处未处理的异常: 0xC0000005: 读取位置 0x0b885000
通过 调试----"调用堆栈"可以查看到具体哪个函数出现内存访问错误原创 2018-05-30 14:37:03 · 392 阅读 · 0 评论 -
音频算法仿真平台模板搭建1(fread单声道数据 float版本)
教大家如何搭建一个在VS下可以仿真音频算法的仿真平台,这里直接上源码模板/************************************************************************ 一个完整的关于fopen,fread,fwrite,fclose的操作** 一个关于算法仿真的实例***********************************************************************/#include <s原创 2021-10-28 13:44:40 · 1257 阅读 · 0 评论 -
一次搞懂:数据在堆和栈上到底是如何分配的?
一个由c/C++编译的程序占用的内存分为下面几个部分1、栈区(stack)— 由编译器自己主动分配释放 。存放函数的參数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序猿分配释放。 若程序猿不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—。全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的还有...原创 2021-10-28 11:52:40 · 1472 阅读 · 0 评论 -
Ooura的FFT算法移植在VS中仿真的使用和对比
FFT Package 1-dim / 2-dimhttps://www.kurims.kyoto-u.ac.jp/~ooura/fft.html今天在VS2008上继续读写文件来使用ooura的FFT变换的效率和结果,后期我再写一个对比TI的FFT变换效率和结果对照原创 2021-10-26 22:39:20 · 985 阅读 · 0 评论