- 博客(148)
- 收藏
- 关注
原创 [旧日谈]基于IEEE754的快速EXP函数估计算法
首先我们来转换一下exp函数表达式,令其更趋向于我们所需要的表达法。我们需要求的式为exp(x)=exsexp(x)=e^xsexp(x)=exs我们观察此式exe^xex则有eln(ax)=axe^{\ln(a^x)}=a^xeln(ax)=ax这里令a=2,则有eln(2)∗b=2be^{\ln(2)*b}=2^beln(2)∗b=2b令x=ln(2)∗bx=\ln(2)*bx=ln(2)∗b,则有:ex=2x/ln(2)e^x=2^{x/\ln(2)}ex=2x/ln(2)记住这个推论,
2025-03-06 16:28:26
1023
原创 [展示]Webrtc NoiseSuppressor降噪模块嵌入式平台移植
最近在尝试把WebRtc的NoiseSuppressor模块移植到嵌入式平台,现在已经移植了,尝试了下效果,降噪效果很显著,噪声带被显著抑制了。
2025-02-20 10:36:40
431
原创 [旧日谈]快速幂运算 - 算法及设计
快速幂运算本身是一个非常简单而且强大的工具,其强大之处在于借用了内存存储int类型数据的方式,用一种非常巧妙的方式极大地降低了运算的复杂度。首先我们知道,在计算机中,存储数字使用的是很多个二进制数字来表示的,这一块我不深究,只是举个例子,以整型数字为例:b2k12k2....2k1那么aba2k1∗a2k2∗....∗a2kn这样我们就知道了,可以以平方和位移操作的方式,比直接手算更加高效地计算a2k。
2025-02-09 13:25:12
723
原创 [旧日谈]音频领域中,比FFT更快的RealFFT-算法及代码
我们知道FFT需要使用蝶式的方式计算,但是实际上,我们在开发音频的过程中,所有的数字都是实数,所以可能我们并不需要使用到这么多的计算次数,就可以实现FFT,具体做法接下来我会给出推导和证明。
2025-02-08 11:40:23
953
原创 [WASAPI]音频API:从Qt MultipleMedia走到WASAPI,相似与不同
最近在学习有关Windows上的音频驱动相关的知识,在正式开始说WASAPI之前,我想先说一说Qt的Multiple Media,为什么呢?因为Qt的MultipleMedia实际上是WASAPI的一层封装,它在是线上替我做了很多事,就好像在Microsoft的文档上会推荐你先学习Windows.Media.Capture,然后再看low level的WASAPI。
2024-12-24 21:18:40
1215
原创 2024年度总结 - 前路是光明的,道路是艰难的
今年的工作算是换到了一个全新的环境全新的领域,与之前的小作坊式带领团队做toB不同,今年在摩罗我不再需要负责产品整体架构设计和业务,而是更加需要关注我负责的技术范畴。对我来说,一方面没有原先那么疲劳和迷茫,但是另一方面在技术上又提出了新的要求。今年在Gitee上一年近700次的commit就可以看出来,这一年还是做了不少工作的。在我之前的工作生活中我曾想过自己想要前往音视频领域,不过这顺便也来到了音频领域,那正好就要开始做一些不一样的东西和不一样的事情。
2024-12-11 17:20:05
945
原创 [Verilog]第一个流水灯项目的一些疑问和思考
这个数字应该是纯粹人为定义的,这里其实取到26位计时器也可以。我们在xdc中定义的时钟是20ns一个tick,而我们在代码中规定时间一个来回是10_000_000 - 1,也就是20ns * 10000000 = 0.2s,也就是说,我们只需要保证这个寄存器cnt不会在取到10_000_000 - 1这个值的时候溢出就行。我们知道2^24 = 16777216,也就是0.2s内cnt可以取到这个值。也就是说极端一点reg [27:0] cnt;甚至可以换成[23:0],当然了,你也不差这点内存。
2024-12-10 15:34:16
684
原创 [QDS]从零开始,写第一个Qt Design Studio到程序调用的项目
最近在使用Qt Design Studio进行开发,但是简中网上要不就是只搜得到Qt Designer(Qt Creator内部库),要不就只搜得到一点营销号不知道从哪里搬来的账号,鉴于Qt Design Studio是一个这么强大的软件,自然是需要来进行一下小小的实践的。所以开了这篇文章,方便没有使用过Qt Design Studio 和 QML的开发者也可以快速上手QDS(Qt Design Studio)。在本文中,你将学会如何使用QDS开发一个简单的QML程序,与你的C++后端代码进行交流。
2024-11-21 16:01:51
2873
7
原创 [旧日谈]高清画面撕裂问题考
当我们在使用Qt开发的时候,遇到了一个结构性问题。因为我们的软件是自己做的,所以要自己定义标题栏,所以我们设置了软件为FrameLessWindowhint 和 setAttributes(Qt::WA_TranslucentBackground);,这是非常常见的窗口对吧。
2024-10-26 16:26:05
486
原创 [旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。
最近在开发的时候,发现一个依赖事件来刷新渲染的控件会导致程序很容易异常和崩溃。当程序在运行的时候,其实软件本身的负载并不高,所以在Demo下运行一切良好(良好吗?),但是时装到实际项目下,就发现程序异常崩溃。后面经过几轮排查,我们发现由这个控件造成的,因为控件的刷新频率太高了。先来说说这个控件。这个控件的操作实际上依赖了Qt的moveEvent,当鼠标按下之后,然后鼠标移动会触发moveEvent,则这个控件会跟随鼠标移动。这个控件在移动了之后,一下子数据就多到把整个数据流顶爆了。
2024-10-12 16:47:10
1072
3
原创 [简单实践]Noisy Print - 自制基于加性噪声模型的简易降噪器
1.采集噪声样本并建立噪声频谱模型2.将含噪声的音频信号分帧处理3.对每一帧进行窗函数处理4.对窗化后的帧进行快速傅里叶变换(FFT)5.从信号的频谱中减去噪声频谱6.处理频谱减法后的负值和伪影7.进行逆快速傅里叶变换(IFFT)重建时域信号8.通过重叠相加(Overlap-Add)方法重建完整的信号9.后处理,如频谱平滑。
2024-10-08 23:34:13
1172
原创 [信号与系统]一阶与二阶连续时间系统和离散时间系统
定义:一阶连续时间系统由一阶线性常系数微分方程描述:dy(t)dt+ay(t)=bx(t) \frac{dy(t)}{dt} + a y(t) = b x(t) dtdy(t)+ay(t)=bx(t)时间常数:时间常数 τ=1a\tau = \frac{1}{a}τ=a1 是系统响应速度的衡量指标。时间常数越小,系统响应越快。冲激响应:一阶系统的冲激响应是指数衰减或增长的形式。例如,对于一个单位冲激输入,响应为:h(t)=bae−at h(t) = \frac{b}{a} e^{-at} h(t)=
2024-07-31 14:58:23
1123
原创 漫谈采样定理
设xtx(t)xt是某一个带限信号,在∣ω∣ωM∣ω∣ωM时,Xjω0Xjω0。如果ωs2ωMωs2ωM,其中ωs2πTωsT2π,那么xtx(t)xt就唯一地由其样本xnTx(nT)xnTn0±1±2n0±1±2所确定。已知这些样本值,我们能用如下方法重建xtx(t)xt:产生一个周期冲激串,其冲激幅度就是这些依次而来的样本值;
2024-07-31 14:56:36
639
原创 实时采集音频数据并使用Qt + DeepFilter进行AI实时降噪
最近在做一些有关DeepFilter的开发,写了份代码,这里简单说说代码,怎么使用Qt + DeepFilter进行实时的AI音频降噪,并获得耳返。
2024-07-20 14:03:31
787
5
原创 举个例子,简单说说如何推导IIR滤波器和FIR滤波器的参数
最近看这两个滤波器设计嘛,就试着来写一下主要从双线性变换,z变换,然后举一个例子来进行一下滤波器的设计。
2024-07-03 14:33:38
1151
原创 [信号与系统]IIR滤波器与FIR滤波器相位延迟定量的分析。
这里讨论一下理想延迟系统的相位延迟。对于一个给定的系统频率响应Hejw可以表示为Hejw∣Hejw∣eΦw其中Hejw是幅度响应,Φw是相位响应。
2024-07-01 20:38:42
1476
原创 几种常见的滤波器样式
IIR Peaking FilterIIR LowShelf FilterIIR HighShelf Filter4. IIR LowPassFilter5. IIR HighPass Filter8. FIR HighShelf Filter8. FIR LowPass Filter10. FIR HighPass Filter
2024-06-21 18:49:30
438
原创 [信号与系统]FIR滤波器的几种常见窗口法计算方法
矩形窗口直接截断理想脉冲响应,无额外的平滑效果。它简单但会引入较大的旁瓣效应。w[n]=1,0≤n≤N−1w[n] = 1, \quad 0 \le n \le N-1w[n]=1,0≤n≤N−1汉宁窗口使用平滑的余弦函数,有效减少旁瓣效应。w[n]=0.5(1−cos(2πnN−1)),0≤n≤N−1w[n] = 0.5 \left(1 - \cos\left(\frac{2\pi n}{N-1}\right)\right), \quad 0 \le n \le N-1w[n]=0.5(1−co
2024-06-21 16:33:04
1623
原创 [信号与系统]有关时域信号与频域信号的转换
傅里叶变换原理:任何信号都可以表示为正弦波和余弦波的叠加。时域到频域的转换:傅里叶变换通过积分运算将时域信号分解为不同频率成分,形成频域表示。频域表示:揭示信号的频率内容,有助于理解和处理信号。通过傅里叶变换,时域信号可以转化为频域信号,从而揭示其频率成分,便于进一步分析和处理。
2024-06-21 16:18:02
3798
原创 [信号与系统]模拟域中的一阶低通滤波器和二阶滤波器
通过将两个一阶低通滤波器串联,我们得到了一个二阶低通滤波器的传递函数。这个方法可以推广到高通、带通和带阻滤波器,通过适当的组合一阶滤波器可以实现各种复杂的频率响应特性。
2024-06-21 14:46:30
1677
2
原创 [信号与系统]IIR滤波器与FIR滤波器的表达、性质以及一些分析
IIR滤波器通过反馈和前馈项的结合,能够实现复杂的频率响应特性。其数学表达式和性质对于分析和设计滤波器非常重要。IIR滤波器广泛应用于信号处理和通信系统中,因其能用较少的滤波器阶数实现较高的选择性和稳定性。FIR滤波器通过前馈项的组合,能够实现预期的频率响应特性。其数学表达式和性质对于分析和设计滤波器非常重要。FIR滤波器广泛应用于信号处理和通信系统中,因其固有的稳定性和可以实现的线性相位特性,使得它们特别适用于对相位响应有严格要求的应用。
2024-06-21 10:45:13
4807
原创 [信号与系统]关于LTI系统的转换方程、拉普拉斯变换和z变换
对于一个离散时间LTI系统,其传递函数HzH(z)Hz定义为输出信号的z变换YzY(z)Yz与输入信号的z变换XzX(z)XzHzYzXzHzXzYz。
2024-06-21 09:52:58
1410
原创 [信号与系统]有关滤波器的一些知识背景
最近在看FIR和IIR,本文作为前置,需要在理解这两种滤波器之前阅读。本文内容会详细讲述一下有关滤波器的技术要求。
2024-06-21 09:25:32
1350
原创 [信号与系统]有关带有冲激响应和阶跃响应的拉普拉斯变换求解法
最近再看信号与系统这门课,学到冲激响应和阶跃响应这一块,看到mooc上的老师是直接用什么参数对应法,真的太抽象了,为了解决这个疑惑,我自己去搜了点资料,然后稍微写了一下有关拉普拉斯变换在冲激响应和阶跃响应中求解的方法。
2024-06-19 00:26:38
2454
原创 [Qt开发]当我们在开发兼容高分辨率和高缩放比、高DPI屏幕的软件时,我们在谈论什么。
最近在开发有关高分辨率屏幕的软件,还是做了不少尝试的,当然我们也去网上查了不少资料,但是网上的资料也很零碎,说不明白,这样的话我就做个简单的总结,希望看到这的你可以一次解决你有关不同分辨率下的所有问题。
2024-06-07 15:36:29
1129
原创 [Qt]关于QListWidget、QScrollArea 为什么在QDesigner上设置了之后界面上仍然不生效的问题
最近做了一些有关QListWidget和QScrollArea的控件,我去,这两个控件是真的坑,明明我在QDesigner的操作界面上对这两个控件的界面进行了修改,但是编译出来的软件就是看上去什么都没有,很坑,Gpt也没解决问题,所以我在网上搜索了一下。
2024-05-29 15:09:37
456
原创 QCustomPlot如何使用代码修改当前焦点曲线QCPGraph
最近不是在画QCustomPlot曲线嘛,然后现在就是,我有一个功能需要使用到曲线切换,当我在外部点击一个按钮的时候,可能需要切换图表上的焦点曲线。这个功能我找了很久之后我发现QCustomPlot居然原生不支持!没有这种接口,得自己写。然后我折腾了很久,发现其实做这个比较简单,主要问题是文心一言确实垃圾,以后还是申请个梯子上gpt吧,还好也就充了一个月的会员,好钢还是要用在刀刃上。
2024-05-23 17:30:39
264
原创 [Cmake Qt]找不到文件ui_xx.h的问题?有关Qt工程的问题,看这篇文章就行了。
最近在开发一个组件,但是这个东西是以dll的形式发布的界面库,所以在开发的时候就需要上层调用。如果你是很懂CMake的话,ui_xx.h的文件目录在下然后除了有关这个ui_xx.h,还有一些别的可以简单聊聊的。
2024-05-08 19:39:11
1801
原创 [JUCE库]关于JUCE如何生成动态链接库 juce-7.0.1-windows
当我们在使用JUCE库的时候,可能会需要使用到静态链接的方式,还好的一点是JUCE本身提供了CMake编译,也提供了单独的sln编译。本文章仅针对juce-7.0.1-windows,由于不同版本之间差异较大,可能不能通用,但主要的不同点都在修改源码那个环节。
2024-05-06 18:49:10
567
原创 [JUCE]从一个有关右值引用的bug,探幽移动语义
当我尝试在\JUCE\extras\WindowsDLL\Builds\VisualStudio2022目录下编译JUCE库的时候,提示报错如下:报错提示如下:这里涉及到两个问题。
2024-04-29 18:16:09
910
原创 [音视频学习笔记]八、FFMpeg结构体分析 -上一个项目用到的数据结构简单解析:AVFrame、AVFormatContext、AVCodecContext
上次我们做了一个简单的视频解码,这一次简单对这个代码进行一个剖析,对其中的数据结构进行一个解析。
2024-03-25 17:01:43
953
原创 [音视频学习笔记]七、自制音视频播放器Part2 - VS + Qt +FFmpeg 写一个简单的视频播放器
话不多说,重走霄骅登神路前一篇文章。
2024-03-22 16:25:36
1141
空空如也
Qt中QStandardItemModel是如何找到野指针并避免了对其进行操作的?
2024-01-19
关于Qt中COM组件向调用组件方发送消息的问题
2022-12-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人