基于wRLS滤波器和神经网络回声残留抑制的AEC模型——论文翻译 本文提出了一种提交给 AEC 挑战赛的实时声学回声消除 (AEC) 算法。该算法由三个模块组成:基于时延补偿的广义互相关与PHAse变换(GCC-PHAT)、基于加权递归最小二乘(wRLS)的线性自适应滤波和基于神经网络的残余回声抑制。wRLS 滤波器源自一种新颖的半盲源分离视角。神经网络模型根据对齐参考和线性滤波器输出来预测相敏掩模(PSM)。该算法的平均主观得分为 4.00,在 AEC-Challenge 中排名第二。
利用深度复数神经网络、非线性幅度压缩和相位信息的声学回声消除_2021 论文题目:Acoustic Echo Cancellation Using Deep Complex Neural Network with Nonlinear Magnitude Compression and Phase Information。
基于wRLS滤波器和神经网络回声残留抑制的AEC模型——模型框架介绍 (3)NLP回声残差抑制网络进行mask的学习:Deep Feedforward Sequential MemoryNetwork (Deep-FSMN);深度前馈顺序记忆网络;输入:回声信号的估计Y,残差信号E,近端麦克风信号D(三个输入均是Fbank特征,维度是80);输出:ISTFT(Mask*STFT(e))(2)Linear Filter 线性滤波器,进行回声信道估计:wRLS 加权递归最小二乘滤波器(频域),即,先对输入信号进行短时傅里叶变换,针对不同帧的相同频点进行RLS线性回声消除。
音视频编解码——音频编解码格式OPUS(Opus Interactive Audio Codec) OPUS的编解码过程可以根据实际需求进行参数配置,以平衡音频质量、延迟和压缩率,它能够提供低延迟、高音质的音频传输和存储解决方案,广泛用于语音通信、音频会议、流媒体、语音识别和语音交互等领域。OPUS支持多种编码模式,包括VOIP模式(适用于实时通信)、音乐模式(适用于音乐和高保真音频)、语音模式(适用于语音和语音识别)等。编码过程中,根据音频信号的特性选择合适的编码算法和参数。OPUS(Opus交互式音频编解码器)是一种开放、免版权的音频编解码格式,它旨在提供低延迟、高音质的音频传输和存储解决方案。
音视频编解码——音频编解码格式AAC(Advanced Audio Coding) 在熵编码中,根据数据的统计特性,将出现频率较高的符号用较短的编码表示,而出现频率较低的符号用较长的编码表示。它基于信息论中的熵概念,将出现频率高的符号用较少的比特表示,而出现频率低的符号用较多的比特表示。这样做的目的是更好地适应人耳对不同频率范围的感知敏感度的差异。通过非线性变换,可以改变频谱系数的动态范围,将较小幅度的系数放大,而将较大幅度的系数压缩,以更好地适应人耳对不同幅度信号的感知特性。根据人耳感知特性,对于较高频率的信号,可以应用较低的加权系数,而对于较低频率的信号,可以应用较高的加权系数。
平头哥剑池CDK使用与开发详解教程集合 第一节:平头哥剑池CDK教程——使用SDK开始我的程序-CSDN博客第二节:平头哥剑池CDK教程——工作空间及组件的概念-CSDN博客第三节:平头哥剑池CDK教程——组件界面操作演示_cdk新建工程-CSDN博客第四节:平头哥剑池CDK教程——组件的配置-CSDN博客第五节:平头哥剑池CDK教程——工程管理集构建-CSDN博客第六节:平头哥剑池CDK教程——模拟器概念及其配置方法-CSDN博客第七节:平头哥剑池CDK教程——硬件调试器概念及配置方法-CSDN博客第八节:平头哥剑池CDK教程——调试配置介绍-
平头哥剑池CDK教程——芯片SDK开发之发布SDK工程 本次讲解如何将自己开发完成的芯片SDK的组件发布出去,根据我们之前课程讲解的内容,我们一个SDK整个工程会包含很多个组件,我们的发布工程就是将这些组件全部上传到我们的芯片开放社区中,供其他开发者去使用,我们在芯片开放社区提供了组件平台,所有的开发者都可以往开放社区贡献自己的组件或者是SDK。每一个用户往我们的芯片开放社区去发布的时候,我们的组件名称是作为唯一的一个标识,如果我们一个用户使用了一个组件名,那么其他的用户将不能再发布同名的组件。这些路径的配置都要在自己的路径下面,这些路径的配置符合要求以后。
平头哥剑池CDK教程——硬件无关组件开发 我们会把一些工程使用到的跟方案本身不相关的逻辑导入到我们的common组件中,我们右击common组件,选择add sourse folder,我们将我们需要导入的目录选中,这样的话就会把我们需要导入的资源全部导入到我们的组件列表中。这里的原因是我们对某一些头文件的配置可能是没有配置正确,我们发现这个报错的头文件目录是我们没有进行配置的,我们在芯片的节点中,右击配置选项,在compiler中去包含该目录在我们的搜索路径集下。这里我们导入了一个配置文件, 这个头文件是我们整个工程需要用到的。
平头哥剑池CDK教程——硬件相关组件开发 本次讲解在开发芯片SDK中进行的硬件相关的组件开发工作,在CDK中的workspace中有一个基于E906FD的初始SDK模板工程,默认会带一个SDK虚拟组件集合,我们硬件相关的组件开发都会在这个节点下面进行,我们这里定义了一个芯片组件和开发板组件。点击ok我们便完成了SDK的创建,由于我们使用了之前的SDK作为基础,那么我们之前的组件节点默认在新建的SDK中,这样就完成了硬件平台的组件配置和开发的工作。我们需要配置我们芯片组件的一些选项,用来将导入的代码能够正确的运行和生成我们所需要的镜像文件。
平头哥剑池CDK教程——算法工程的调试和使用 我们调试的时候,也是可以把我们之前讲的控制逻辑用我们调试的手段去模拟出来,比如说我们需要去调试flashprogram这个函数的正确性,那么我们首先需要将g_func的值配置为1,那么这里我们上节所讲到的可以在我们的watches窗口中去操作,把g_func拖动到watches窗口中去修改我们g_func的值,把他的值修改为1。可以发现我们的算法工程已经进入到了一个算法的main函数,那么我们为了调试我们的算法,需要首先讲解一下整个算法工程是怎么去跟我们之前开发的一些接口去进行配合,来实现烧写的。
音视频编解码——μ律(Mu-law)和A律(A-law) μ律(Mu-law)和A律(A-law)是两种非线性量化方法,常用于脉冲调制编码(PCM)中的音频信号压缩。它们在不同的地区和应用中使用,具有类似的原理但略有不同的特性。一、μ律(Mu-law)和A律(A-law)原理:μ律(Mu-law):μ律是一种非线性压缩方法,最初由贝尔实验室开发用于电话系统。它主要在北美和日本等地使用。μ律量化方法在低信号强度区域提供更高的量化精度,而在高信号强度区域提供较低的量化精度。这意味着较小的信号值将被更多的量化级别表示,而较大的信号值将被较少的量化级别表示。
音视频编解码——脉冲编码调制(PCM) 然而,由于PCM需要较大的数据传输带宽和存储空间,为了实现更高的压缩比,可以结合使用压缩编码技术,如无损压缩算法(如FLAC)或有损压缩算法(如MP3、AAC)。信噪比(Signal-to-Noise Ratio,SNR)用于衡量量化误差对信号质量的影响,表示信号的强度与量化误差的比值。量化是将连续的模拟信号值映射为离散的数字值的过程。在一些应用中可能会采用更高级的压缩编码技术,如MP3或AAC,以实现更高的压缩比和更有效的数据传输。较高的量化位数可以提供更高的动态范围和更低的量化误差,但也会增加数据量。
平头哥剑池CDK教程——算法工程开发步骤 第三部分是关于数据交互buffer大小的调整,这里我们会根据芯片的ram大小,去设置我们buffer的大小,这个buffer是pc端待烧写的镜像跟算法交互数据传输的buffer的区域,这个区域的大小理论上设置的越大,整个交互的次数会越少,导致整个flash烧写的速度会变得很快;我们在实际的演示中是用一个ram去模拟我们的flash,所以我们这里需要烧写的数据去直接copy到我们的目标地址即可,这里就是简单的数据复制的过程。第四项是flash的ID号,这个ID是用来作为我们flash唯一标识,
平头哥剑池CDK教程——算法工程原理及创建 然后我们的开发环境再把镜像的二进制先放在我们的算法文件的buffer中,再通过我们的调试手段,去控制我们的算法逻辑,将我们需要烧写的数据,由我们的flash算法去加载到我们的flash区间中,以上就是我们整个flash算法的工作原理。如果说这个镜像有需要烧写到flash区间的话,那么在这种情况下就需要我们的算法文件去植入我们的调试器,去将下载到flash区间的镜像文件写到我们的flash区间中,那么,我们的整个的通路就变成下图的样子。这样就完成了一个flash工程的创建。
平头哥剑池CDK教程——芯片SDK开发之创建初始SDK 这里就是我们创建芯片SDK的入口,package paths是需要选择保存我们组件池的路径,我们在进行一个初始SDK创建的时候,是需要设置一个初始的组件池路径的,我们可以把组件池路径可以配置在我们的workspace中。我们需要根据我们自己的硬件的一个memory空间,去修改我们的rom和ram区间,rom的话会根据我们芯片具体的启动地址去填写,包括填写rom的大小。另外我们需要配置的点是在启动文件中,我们需要对我们的程序所需要使用的堆栈的大小以及队列函数所需要的大小进行配置。
平头哥剑池CDK教程——芯片SDK开发之芯片SDK概念 在之前的章节中,讲到通过对工程组件的划分,把一个工程所需要的资源划分成若干种类型的组件,那么,对于一个硬件平台来说,它会有若干个组件来组成,如果我们能够定义出来运行在同样的硬件平台下多个方案工程的话,我们把这些方案,包括我们的硬件平台一起打包,然后给我们的方案开发者,那么,我们称这样的一个软件包为芯片的SDK。第四步是我们将运行在同样硬件平台上面的不同方案之间共性的代码给他剥离出来作为一些公共的组件,我们把它叫做工具类的中间件组件的开发。第三步是需要我们把芯片平台去做一些与硬件相关的组件开发。
平头哥剑池CDK教程——方案模板的二次开发 我们可以点击资料下载,可以看到关于该方案所对应的芯片资源,开发板资源以及应用方案开发的资源下载,这些资料可以快速帮助我们去掌握方案基本的原理,开发板资源让我们看到所运行开发板的硬件指标,芯片资料可以让我们去看到芯片的用户手册以及编程过程中所使用到的外设资料,通过这些资料,就可以快速的对我们当前获取到的方案进行二次开发。如果在方案的二次开发中有任何问题,我们可以在问答专区去进行问题的查找,会优先列出该方案相关的问题,若没有找到现有问题的解决方案,我们可以进行一个提问的编辑。