自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

...

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 【语音识别】声学建模中基于树的状态绑定

三因素和单因素一样都是使用三状态的HMM,只是将原来的单因素的模型扩充了。一种高效的方法是构造二叉树模型,通过问题将状态集逐步划分,叶子节点中的状态具有相似性,可以用同样的输出概率模型表示。在树的根节点,所有的状态的输出模型共享相同的参数。每一个y1属于一个三音素模型,这样Y对应于一个三因素状态集(由多个中心音素相同的三音素组成)。Y是独立的p维声学特征向量组成的序列,这些特征向量是同一个单因素的某个状态产生的,这个状态对应的输出概率分布用单个对角高斯分布表示,均值是。为每一个中心音素的每一个。

2024-04-05 18:26:03 654

原创 语音识别:基于HMM

上面介绍的HMM训练方法是经典的训练HMM的方法(baum welch算法),该算法就是在给定一个初始的模型参数,通过不断的E-step,M-step迭代模型的参数。一种更加实际的方法是使用Viterbi训练方法:

2024-03-30 21:23:12 1245

原创 数字信号处理中的逆滤波器(inverse filter)matlab实现

在MIT的HRTF 数据库中,为了进行扬声器均衡,作者用到了使用DFT/IDFT进行求解扬声器脉冲响应的逆滤波器的方法。是一个很长的脉冲响应(FIR滤波器的系数),对其求逆系统会得到全极点的IIR滤波器,并且阶数也非常大。由线性时不变系统的可逆性,输入经过原系统之后再经过对应的逆系统可得到原输入。更简单的方法是将上式转换到。用冲击响应来描述原系统和逆系统的关系,设原系统冲击响应为。的所有零点都位于单位圆内(最小相位系统),这样得到的。, 逆系统的冲激响应为。域来求解逆系统,上式在。似乎很简单,但是如果。

2024-03-21 17:36:16 1155

原创 频率规整/频率弯折(Frequency Warping)原理 WFIR/WIIR滤波器设计matlab代码

频率弯折(Frequency Warping)广泛应用在HRTF滤波器设计、扬声器均衡、以及Warped线性预测编码等音频领域中。在HRTF滤波器设计过程中,我们最直接的方式是使用FIR模型。也可以将HRTF 的FIR模型转换为IIR模型,这里面有Prony方法(对应matlab的prony函数)、Yule-walker方法(对应matlab的yulewalker函数),还有一些方法如BMT(Balanced Model Truncation)。这些方法都是针对线性频率的。

2024-03-15 18:58:33 649

原创 自适应宽带波束形成:GSC(generalized sidelobe canceller)广义旁瓣消除器原理介绍和实现代码

GSC(generalized sidelobe canceller, 广义旁瓣消除器)可以将有约束的LCMV算法转换为无约束的实现结构。网上关于GSC的介绍对细节方面介绍得不详细,并且主要是应用在窄带。宽带的GSC应用范围也比较广泛,例如在智能音箱等产品的麦克风阵列信号处理中,GSC作为核心算法。本文介绍了GSC的结构以及相关的公式推导,主要关注时域宽带GSC的实现,并给出了python的实现代码示例。关于波束形成基础知识,请参考。

2024-03-13 16:44:38 1116

原创 宽带波束形成

介绍了宽带波束形成器的时域滤波结构,以及波束响应的计算公式,宽带波束形成器的波束响应可表示为权重向量和方向向量的积

2024-03-13 09:51:26 1529

原创 窄带波束形成

介绍了窄带波束形成器的公式推导和实例设计应用,其中包括波束响应,波束形成器输出,波束图,以及等间距线阵的beamformer的FIR等效设计

2024-03-09 15:36:58 607

原创 webrtc AEC 线性滤波 PBFDAF(均匀分块频域自适应滤波)介绍

计算一个脉冲响应和输入信号的卷积,除了使用原始的时域卷积以外,还有如下方法:FFT卷积的方法:对输入信号(长度M)和脉冲响应(长度N)分别补零到K(K>M+N-1),然后分别计算FFT,然后相乘,最后反FFT,取前M+N-1个元素作为最终的卷积结果输入信号很长时,将输入信号分成一帧一帧,使用overlap-add或者overlap-save的方法当脉冲信号和输入信号都很长时,可使用均匀分块卷积。均匀分块卷积与频域自适应滤波(FDAF)结合,就是WebRTC AEC中线性滤波处理中的算法核心。

2023-11-25 13:03:37 2001

原创 Android加载pytorch模型异常完美解决:The model version must be between 3 and 5But the model version is 7 ()

有时候需要在android app中加载使用pytorch训练的模型文件,选择这样的部署方式的优点:1、使用pytorch提供的mobile库,避免了自己实现模型的推理;2、模型的加载和推理都是在java层,pytorch已经提供了native的实现,我们只需要使用Java的接口进行模型加载和使用,所有细节被封装。github上的pytorch官方的仓:pytorch/android-demo-app里面有相关的示例app,下载下来首先从hello world开始。

2023-06-25 14:23:25 972

原创 机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

2023-06-18 11:31:06 1602

原创 循环神经网络RNN用于分类任务

介绍使用RNN进行分类(图像分类)的方法。RNN用于分类任务的结构是多对一结构。假设图像的尺寸是28x28的黑白图片,将每一个张图片作为RNN的输入,每一行作为一个输入特征,所有的行构成一个序列。RNN的输出只选择最后一行的输出(使用out[:, -1, :]),这就是多对一的精髓。最后再套一个全连接层,使用交叉熵作为判断准则。

2023-06-16 09:36:18 2168

原创 Pytorch教程:Autograd基础

PyTorch的Autograd特征可以让PyTorch灵活快速的构建机器学习项目。autograd可以实现快速和容易的多重偏微分(梯度)计算。偏微分计算时反向传播神经网络学习的核心。autograd的可以在运行时动态追踪计算,这意味着如果模型有决策分支、或者有在运行时之前长度未知的循环,仍然可以正确的追踪计算,得到正确的梯度进而驱动学习。并且,当模型是通过python构建的,在计算梯度时,PyTorch的autograd比那些依赖于对更加严格结构的模型进行静态分析的框架提供了更多的灵活性。

2023-06-13 08:59:43 1904

原创 PyTorch教程:Tensor的使用介绍

Tensor是PyTorch中心的数据抽象,本文深度详细介绍PyTorch的torch.Tensor类。包括创建Tensor的方法,Tensor的shape属性,tensor的数据类型和数学运算,tensor的广播机制,克隆tensor,改变tensor的维数,将tensor转换维Numpy的ndarray以及将ndarray转为为tensor。

2023-06-09 09:20:17 1428

原创 卷积神经网络(CNN)模型训练代码

使用pytorch框架搭建一个浅层的CNN网络,并训练该网络。训练的时候在每一个epoch,将训练集的准确率、召回率和精度以及测试集的准确率、召回率和精度写到log中。本文是一个cnn的starter,cnn训练代码是通用的,只需要重新设计网络和准备数据就可以适配到其他项目中。下面直接上代码。

2023-06-08 08:49:19 2060 2

原创 fftw3库在Android Studio中的编译和使用

fftw3库是快速傅里叶变换FFT/IFFT的开源实现,可以在多个平台编译。在Android app开发项目中需要做FFT信号分析,优先使用JNI的方式,使用原生语言C/C++实现复杂的科学计算任务。fftw3可以在多个平台编译优化,也可以在Android NDK开发时进行编译调用。本文详细介绍了fftw3在Android studio中的编译和使用方法

2023-06-06 09:02:56 1408 2

原创 支持向量机SVM推理(预测)代码实现

使用sklearn训练的SVM模型要怎样移植到C语言中进行嵌入式开发呢?本文提供了将训练的支持向量机模型从sklearn抽取出来的方法。

2023-06-05 08:47:21 776

原创 生成模型之高斯判别分析(GDA)和贝叶斯

判别模型的学习算法学习给定x下的条件分布p(y|x;θ),例如,Logistic Regression(对数几率回归)将p(y|x;θ)建模为,g是sigmoid函数。考虑一个分类问题,基于动物的某些特征想要区分大象(y=1)和狗狗(y=0)。给定一个数据集,类似LR或者感知机算法尝试找到一条直线(超平面,也就是决策边界,将大象和狗狗分开。然后,当新样本要将其划分类为大象类和狗狗类时,只需要检查新样本落在决策边界的哪一边,然后再对新样本进行预测。

2023-06-04 15:04:51 586

原创 支持向量机

对于线性可分数据集,支持向量机就是找到距离正负样本最远的超平面,相对于感知机,这个超平面是唯一的,泛化性能更好。支持向量机的超平面位于两类样本的正中间,距离最近的正负样本的距离相同,能够容忍训练样本的局部扰动,感知机可以得到无穷多个划分超平面,但这些感知机的这些解有的距离正样本太近,未知的正样本很容易跨过超平面从而被误分类为负类;或者说这些解距离负样本太近,未知的负样本很容易垮过超平面从而被误分类正类。当数据集线性可分时,使用硬间隔线性可分支持向量机;当数据集近似线性可分时,使用软间隔线性支持向量机;

2023-06-03 16:17:27 313

原创 Cookbook formulae for audio EQ biquad filter coefficients

look like:or(Eq 2):cos(w0)sin(w0)b1 = 0b1 = 0b0 = 1b2 = 1sin(w0)

2023-04-27 16:39:03 718

原创 低频带宽扩展

所有扬声器都有一个有限的频率范围,在这个范围内辐射的能量水平或多或少不一致。辐射声压级可以通过扬声器幅度响应表示为频率的函数(通常指定为轴上测量)。HiFi爱好者知道平坦的频率响应是非常值得拥有的,已经被证实频响的平坦度与感知的音质相关。另一个值得拥有的的特性是离轴测试的频率响应,但是我们这里不关心扬声器的指向性。不管扬声器的响应是否平坦,低频和高频的效率总会下降,导致低频(f1)和高频(fh)截止频率,通常定义为那些响应比某些中间参考频率的响应下降3dB的频率。

2022-10-08 16:11:26 688

原创 ubuntu nvidia驱动、cuda、cuDNN、Pytoch安装

1、Nvidia驱动安装参考https://www.cnblogs.com/a5idc/p/14003422.html2、通过nvidia-smi命令查看cuda版本号3、下载cuDNNNVIDIA官网下载,根据平台选择,对应的版本,本次选择UBUNTU LINUX X86_64是一个tar.gz文件,解压出来包括头文件和库,创建目录/usr/local/cuda/include和/usr/local/cuda/lib64,将加压出来的所有头文件和所有库分别拷贝到上述两个目录中。4、

2021-05-12 17:21:57 456

原创 维纳滤波、维纳霍夫方程及矩阵形式

给定输入序列,通过一个FIR线性滤波器,权系数是n时刻,FIR滤波器的输出:n时刻滤波器期望的输出是,期望响应与实际的输出的差值为:随着输入的变化,要让滤波器实际输出逼近期望响应,需要求解新的滤波器抽头系数,求解过程是一个基于统计优化问题的数学求解。该数学问题有两种方法进行阐述正交性原理令如果假定,都是复数,对求偏导得多维梯度向量上面是考虑了复数权系数和复数随即信号的推倒过程,更加简单的推导是对求偏导的等于0时,取得最.

2021-05-12 17:20:53 2782

原创 pytorch、numpy广播的理解

pytorch和numpy的广播机制类似,搞懂了numpy的广播机制也就明白了pytorch了。numpy中数组np.array的维数(ndim),维度长度(size), 数组的形状(shape)不要把维数和形状搞混了维数也叫做阶数,如果单纯一个序列[...],则是一维,如果以多个这样的序列为元素组成的数组[[...], [...],...,[..]],则是二维数组,2维数组中的元素是常量,如果二维数组的每一个元素用另外的序列表示,则成为三维数组...类似可以构成n维数组。每个维度是一个矢量

2021-05-12 17:19:57 156

原创 webrtc-audio-processing库下载安装

1 下载 webrtc-audio-processinggit clone git://anongit.freedesktop.org/pulseaudio/webrtc-audio-processing2 安装meson、cmake 、abslmeson安装pip3 install mesoncmake安装apt-get install cmakeabsl安装https://blog.csdn.net/qq_43153603/article/details/108051

2021-05-12 17:16:01 581

原创 正交镜像滤波器QMF,最小相位,最大相位,全通滤波器

QMF

2021-05-12 17:15:18 1144

原创 大话数据结构第五章第七节:模式匹配算法——KMP

大话数据结构第五章第七节:模式匹配算法——KMP

2020-10-15 21:52:01 354

原创 C语言赋值表达式是从左到右还是从右到左执行?

先看某开源库的代码:AVFrame *av_frame_alloc(void){ AVFrame *frame = av_mallocz(sizeof(*frame)); if (!frame) return NULL; frame->extended_data = NULL; get_frame_defaults(frame); return frame;}看av_frame_alloc()里面的第一条语句,调用av_mal

2020-10-11 17:22:42 9104

原创 动态库基本原理和使用方法,-fPIC选项的来龙去脉

使用gcc生成so文件时,一般要加一个-fPIC选项,这个选项是啥意思?本文介绍了PIC的来龙去脉,值得一读...

2020-10-05 09:39:08 16613 3

原创 第六章:可执行文件的装载与进程--重点知识概括整理

下面是对俞甲子等著的书籍《程序员的自我修养》第6章主要内容的整理

2020-10-03 21:48:34 1212 2

原创 静态库,动态库,隐式动态链接,显示动态链接究竟是怎样的?

二进制重用包括了静态库和动态库,静态库历史早与动态库,动态库相对复杂一些。动态库创建以后可以输出三种文件:头文件,导入库(.lib)和DLL。动态库的动态链接过程有两种:装入时动态链接和运行时动态链接装入时动态链接也称为隐式动态链接,客户应用程序在编译链接成可执行程序时需要导入头文件和导入库(.lib),在程序启动装载时加载整个动态链接库(.dll)到客户应用程序的内存地址空间;导入库是一些动态库提供给客户二进制程序在构建时使用的符号,不是动态库的实现内容。运行时动态链接也称为显示动态链接,客户

2020-09-25 21:04:37 253

原创 二进制重用:静态库

编译器将一些编译单元编译成一组目标文件(.o文件),这些目标文件用于了项目1,如何将这些目标文件用于其他项目呢?目标文件方式将这些目标文件拷贝到新的项目,并且将这些目标文件的头文件也拷贝过去。新项目中使用此头文件进行编译,生成的目标文件和拷贝过来的目标文件通过链接器链接为可执行程序。静态库方式更好的方式是将目标文件打包成单个二进制文件,即静态库。只需要为其他项目提供单独一个二进制文件和头文件,而不是提供一组分离目标文件的集合。链接器能够解析静态库文件格式,并提取出其中的目标文件。

2020-09-24 16:40:55 349

原创 可执行文件和动态库之间的区别

问题: 可执行文件和动态库之间的区别?可执行文件和动态库之间的区别,很容回答:可执行文件中有main函数,动态库中没有main函数,可执行文件可以被程序执行,动态库需要依赖程序调用者。在可执行文件的所有符号中,main函数是一个很特别的函数,对C/C++程序开发人员来说,main函数是整个程序的起点;但是,main函数却不是程序启动后真正首先执行的代码。除了由程序员编写的源代码编译成目标文件进而链接到程序内存映射,还有一部分机器指令代码是在链接过程中添加到程序内存映射中。比如,程...

2020-09-24 14:03:10 2311

原创 程序从源代码到可执行的二进制---编译和链接过程详细介绍

程序从源代码到可执行二进制程序的过程包括编译和链接两个阶段,编译和链接分别包含一些子阶段,本文对这些细微的子过程进行了描述

2020-09-24 13:03:18 2415

原创 使用窗函数法设计任意频率响应的FIR滤波器

比如,我们要设计一个有用户界面,有多个滑块的图示均衡器(graphic equalizer),滑块的位置表示每一个band的增益,将这些band的增益连接起来就是图示均衡器的幅频响应。可以使用如下的窗函数法:1、对目标频响进行平滑,在所需的频点上进行插值,可以使用cubic spline找到所需要的频点的gain;2、目标频响可以是实数(零相位),也可以叠加任意的相位,如线性相位或者minimal phase;3、对经过采样的目标频响进行IFFT,获取目标脉冲响应;4、设计一个窗函数,保证目

2020-05-12 10:45:50 1690

原创 使用python计算复信号的DFT

 DFT公式说明DFT的计算公式:其中x(n)是离散时间信号,既可以是实信号也可以是复信号。k是频率的index;N是离散信号x(n)的长度,N也是DFT结果X(k)的长度。DFT的含义是信号在各个频率分量的投影,投影可以理解为两个矢量的点乘。因此DFT的公式可以看作成两个序列的点乘:x(n)和sk(n):x(n)是一个复数信号。sk(n)是一个复数序列,两个复数序列的...

2018-12-31 15:19:50 2232

原创 Audition频率分析的Matlab实现代码:对同一个音源,matlab计算结果与Audition相同

Audition是音频工程师广泛使用的音频分析处理软件。Audition的频率分析模块能够得到音频序列的频谱图,通过编写matlab,实现类似Audition的结果。大致思路是:对序列进行分帧,加窗,添加恢复系数,FFT,abs,平均。保证matlab的结果与audition相同。Matlab对粉红噪声进行FFT计算结果 Audition对粉红噪声进行频率分析结果 funct...

2018-12-16 20:11:54 2065 2

原创 动态范围控制算法基本原理

动态范围控制可以自动调整信号的动态范围;(信号的动态范围是信号的最大幅值与最小幅值比值的对数,使用dB作为单位)动态范围控制可以做的事情根据环境匹配音频信号电平;也就是杜比volume leveler的作用; 保护ADC使其不会过载;在广播信号发送时,发送器有峰值限制,超过这个峰值会使得发送器过载。动态范围控制可以压缩原始信号的动态,使发送信号的动态范围满足发送器的要求。在音频领域,将数...

2018-12-02 16:45:49 5580

原创 windows下编译 ffmpeg源码生成静态库用于Dev-C++工程

 1 set-Up1.1.下载ffmpeg源码ffmpeg-4.0.2.tar.bz2,http://ffmpeg.org/download.html 解压到 D:\04_project\ffmpeg\ffmpeg-4.0.21.2下载mingw 安装程序mingw-get-setup.exe https://osdn.net/projects/mingw/releases/,...

2018-10-14 23:32:23 3772 1

快速傅里叶变换FFT/IFFT开源库fftw3

快速傅里叶变换C语言实现,使用CMakelist.txt进行配置,可在多平台编译优化,提高性能。可以用于安卓NDK开发,在Java层调用fftw3的FFT/IFFT接口函数,提高fft的运算效率。fftw3接口与ARM NEON指令优化提供的接口相同。在安卓APP端优先使用C/C++等原生语言实现复杂的科学计算

2023-06-05

sms-tools-master.rar

sms-tool 音乐信号分析和合成的Python工具,包括常见的model,dtfModel,hprModel,hpsModel,sineModel,sprModel,spsModel,stft,stochasticModel等

2020-05-08

framworks.tar.gz

Android Framework层代码,用于Audio系统framework代码学习和分析,深入理解安卓音频

2019-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除