FPGA自适应滤波实战:从LMS到FxLMS主动噪声控制
最开始接到这个课题是一位前辈丢给我一个主动噪声控制的验证需求风扇宽频噪声要求在出口处压掉20dB以上。我一开始想得挺简单自适应滤波嘛LMS跑起来就完事了。但真正在FPGA上把FIR、IIR、LMS、NLMS、RLS、FxLMS这一整套过了一遍之后才发现自适应滤波器这六个字背后全是选择题——算法选型、定点精度、延迟对齐、时序收敛每一项都是坑。这篇文章把整个项目的思考链路和踩坑过程整理出来给准备在FPGA上做实时的自适应滤波、主动降噪或回声抵消的朋友一个参考。内容会涉及比较具体的算法原理和硬件实现细节但也尽量把每一步的为什么讲清楚。1. 我为什么在这个项目里选了FPGA做自适应滤波1.1 自适应滤波到底在解决什么问题自适应滤波器这几年出现频率很高尤其是噪声消除、回声抵消、信道均衡这类场景。核心思路其实不复杂一个数字滤波器系数不是固定写死的而是根据输入信号和期望信号实时调整让误差信号e(n)d(n)-y(n)在某个统计意义下最小。你不需要提前知道信号的精确特性算法会自己去找最优系数。这一点太太太重要了因为实际声学环境、信道特性都是时变的固定滤波器永远做不到最优。我这次的项目是一个主动噪声控制验证平台目标是处理风扇这类宽频噪声。参考麦克风采集到参考噪声信号x(n)误差麦克风拿到残余误差e(n)FPGA实时计算滤波器输出y(n)去驱动扬声器让噪声在误差点被对消掉。这个流程听起来直白但一旦涉及多算法切换、定点精度、路径延迟补偿细节就变得非常棘手。1.2 FPGA、DSP、CPU三者怎么选万事开头先选平台。很多人问我为什么不用DSP我的判断标准很直接采样率超过几十kHz、通道数多于两个、每个通道还要级联多个滤波器的时候DSP要么忙不过来要么中断延迟抖动让你头疼。通用嵌入式CPU更不用提实时性在毫秒级还能凑合到微秒级的样本级响应就很难保证。FPGA的优势是并行和确定性。每一路滤波、每一级权值更新都跑在独立硬件上一个时钟处理一个样本延迟可控到纳秒级。对于主动噪声控制这种对相位延迟极其敏感的闭环系统确定性时序是刚需。所以我定了方向中端FPGA系统时钟100MHz音频采样率48kHz所有算法模块在样本间隔约20.8微秒内全部算完。这个预算其实很宽裕后续我甚至把多个算法模块做成了时分复用进一步省资源。1.3 项目功能需求拆解这个课题标题里其实藏了完整的模块清单FIR/IIR静态滤波、LMS/NLMS/RLS三种自适应算法、FxLMS主动噪声控制、分数延迟滤波器。落到工程上我拆成了四块静态滤波部分FIR和IIR各做一版可旁路切换用于信号预处理和抗混叠。自适应核心LMS、NLMS、RLS三种权值更新算法做成可配置切换的模块。主动噪声控制扩展FxLMS需要的次级路径建模、滤波参考信号生成。时序对齐分数延迟滤波器用于补偿AD/DA链路和声学路径带来的非整数延迟。需求拆清楚还有一个直接好处资源规划。中端FPGA的DSP48数量有限FIR和自适应滤波器都是乘加密集型模块不提前估算布线时才发现资源不够就很被动了。2. 滤波器骨架构思FIR并行流水线与IIR定点化取舍2.1 FIR为什么推荐转置结构FIR的计算公式是y(n)Σw(k)x(n-k)k从0到N-1。直接型结构最直观输入信号经过一串延迟寄存器每个抽头乘以对应系数最后全部累加。但直接型有个问题——输出是所有乘积的累加和如果用单个加法器串行累加需要N个时钟周期才能出一个结果就算做成加法树资源也会明显上去。我采用的是转置结构也叫transpose form。每个抽头都有独立的延迟寄存器和乘加器输入信号同时广播到所有抽头每个抽头只做一次乘法和一次加法结果沿反方向逐级传递。这样做最大的好处是关键路径被拆到很短一个时钟周期就能产出一个完整输出。N64抽头时直接型串行累加要64个时钟转置型只要1个时钟代价仅仅是寄存器数量多一些。DSP48的使用要单独说明每个抽头的乘加都可以映射到一个DSP48N48的滤波器会用掉48个DSP48。如果资源紧张可以改成半复用结构两个周期出一个结果速度减半但DSP48省一半。这个取舍我实际试过最终选了全并行因为48kHz采样率下每个样本间隔有大量空闲周期这部分资源可以调度给自适应算法复用整体利用率反而更高。2.2 IIR的稳定性与定点实现IIR和FIR最大的区别是有反馈y(n)Σa(k)x(n-k)Σb(k)y(n-k)。反馈带来高计算效率一个20阶IIR可以逼近200阶FIR的幅频特性但也带来两个麻烦。第一个是稳定性极点必须落在单位圆内系数经过定点量化一旦漂移极点可能跑出去滤波器直接振荡。第二个是定点溢出反馈回路会把微小误差不断放大中间节点必须留够位宽否则几个样本之后输出就爆了。项目里IIR不是主角我用它做前端抗混叠和窄带陷波。结构选了Direct Form II延迟单元最少N阶只需要N个寄存器。系数全部经过极点检查先在浮点里算好转成Q1.14定点后重新计算零极点位置确认还在安全区域内才锁定参数。这里有个工程习惯特别重要IIR定点化之后一定要在仿真里拉长时间跑观察输出是否逐渐漂移。有一次系数量化后极点恰好逼近单位圆前1000个样本没问题跑到几万个样本时输出开始缓慢振荡。这种缓慢累积的数值问题在浮点仿真里完全看不见只有长时间定点仿真能暴露出来。2.3 资源与精度的平衡三种结构做个对比方便直接抄作业结构DSP48寄存器关键路径输出延迟FIR直接型串行累加N个乘法器少长N个时钟FIR转置型N个DSP48多短1个时钟IIR Direct Form II2N个乘法器N个中等1个时钟位宽策略在整个项目里我都统一了ADC输入16bit系数18bit乘法结果直接进40bit累加器最后输出前再截断到16bit并做饱和处理。宁可内部宽也不要因为中间截断丢失精度这是我在好几个项目里踩出来的教训。另外所有累加器出口我都加了饱和逻辑而不是默认的回绕处理这点后面踩坑部分会展开讲。3. 三种自适应算法怎么选LMS、NLMS、RLS3.1 LMS的简单与代价LMS是自适应滤波最经典的算法权值更新就一行w(n1) w(n) μ · e(n) · x(n)每个抽头只需要一次乘法加一次加法实现极其便宜。但便宜有便宜的问题。第一个是步长μ难选μ太小时收敛极慢太大直接发散。理论上要求0 μ 2/λmaxλmax是输入自相关矩阵的最大特征值但实际工程里你根本不会去算特征值都是靠仿真和实测去摸。第二个更隐蔽的问题LMS的收敛速度与输入信号功率耦合。同样的μ安静环境下收敛很好输入一变大梯度噪声跟着变大权值开始剧烈抖动。我在项目早期用固定μ0.01跑混合输入场景低功率段稳态误差还行高功率段输出明显出现周期性起伏这就是梯度噪声过大造成的。这种问题不是调μ能根治的得换归一化思路。3.2 NLMS归一化解决了什么NLMS本质上就是LMS加自动归一化w(n1) w(n) α / (‖x(n)‖² ε) · e(n) · x(n)核心思想是让步长随输入功率自动缩放输入功率大时步长自动变小功率小时步长变大。这样收敛速度不再依赖输入幅度稳定性窗口也宽了很多。α一般取0.01到0.1之间ε是一个很小的正常数防止分母为零。FPGA上实现NLMS会比LMS多两件事一是计算‖x(n)‖²需要N次乘加二是要做一次除法。除法的成本我一开始有点低估直接用除法器IP核延迟十几个周期面积也不小。后来换成查表法因为归一化因子只需要近似值我把1/(‖x‖²ε)按对数区间做成一张表用‖x‖²的高位作为地址查表误差完全够用资源省了一大截。实测下来NLMS的收敛速度和稳定性相比LMS提升非常明显这也是它成为我默认算法的原因。3.3 RLS收敛快但代价高RLS走的是另一条路递归更新协方差矩阵的逆同时维护增益向量每来一个样本就做一轮完整的矩阵运算。效果很诱人收敛速度通常比LMS快一个数量级而且对输入特征值扩散不敏感。代价是计算复杂度从LMS的O(N)变成O(N²)N32时还算可控N64时一轮更新要做几千次乘加时序开始吃紧。更麻烦的是定点实现。RLS的协方差矩阵在定点下很容易病态尤其当输入信号相关性较强时矩阵元素数值范围拉得很大处理不好就直接数值爆炸。我在FPGA上把RLS限制在N32内部用了36bit位宽并且每隔一定数量的样本做一次矩阵正规化——给对角元加上一个很小的常量——才勉强稳定下来。如果应用场景不是特别需要极快收敛我建议优先考虑NLMS。3.4 三种算法的工程对比指标LMSNLMSRLS每样本复杂度O(N)O(N)多一次除法O(N²)收敛速度慢中等快定点稳定性好好差需额外处理FPGA资源最低低高含矩阵存储适合场景输入平稳、粗调大部分场景收敛速度要求极高项目最终用NLMS作为默认算法LMS留作快速原型验证RLS只在N32时作为性能对比项。这个组合既覆盖了功能需求又不至于把资源烧光。4. FxLMS与分数延迟主动噪声控制的两道门槛4.1 FxLMS为什么多一条次级路径如果用普通LMS做主动噪声控制会遇到一个教科书里反复强调的问题——次级路径。控制扬声器产生的声波要经过一段空间声学传播才能到达误差麦克风这段传播对幅度和相位都做了改变。梯度计算里如果没有这部分建模权值更新方向就是错的系统很容易发散。FxLMS的处理方式是先把参考信号x(n)通过一个次级路径估计模型Ŝ(z)做滤波得到滤波参考信号r(n)Ŝ(z)*x(n)再用r(n)与误差信号e(n)做相关去更新权值相当于把梯度路径修正到和真实声学路径一致。我在项目里用离线辨识的方式测了扬声器到误差麦克风的脉冲响应用32阶FIR拟合辨识时发白噪声用LMS自适应去找系数效果很好。这里提醒一句次级路径模型精度直接影响FxLMS收敛上限拟合阶数和收敛精度都不能省。4.2 次级路径的在线辨识要不要做离线辨识有一个隐患声学环境是时变的。扬声器旁边有人走动、温度变化、风扇转速变化都会改变次级路径。一开始我偷懒只做了离线辨识实测中系统偶尔会出现一阵一阵的发散迹象。后来加了一个低速在线修正模块每隔一段时间用低功率测试信号重新跑一轮辨识以很小的步长对Ŝ(z)做慢速修正。这样既不干扰正常降噪又能跟上环境漂移性价比很高。4.3 分数延迟滤波器在FPGA上的实现分数延迟的需求来自延迟对齐。AD/DA链路、滤波器群延迟、声学路径加起来往往不是采样周期的整数倍。在自适应控制系统里路径延迟不一致会明显影响稳定边界仅仅对齐整数个时钟还不够需要亚样本精度。FPGA里我用的是Farrow结构。思路是用一组固定系数把延迟参数d作为可变输入通过多项式插值逼近任意分数延迟。一个4阶Farrow结构由5个子滤波器组成每个子滤波器是8阶FIR延迟d由外部寄存器控制可以在线调整。资源消耗大约40个乘法器换来的是任意小数延迟的实时可调能力非常划算。Farrow的系数不是现成的需要用最小二乘法在频域拟合理想延迟响应。我在算法仿真阶段就把系数算好固化到ROM里FPGA端只做乘加组合。调试时发现延迟参数d每变化0.1降噪深度就会有几dB的差异说明分数延迟对齐对FxLMS的实际影响确实很大。4.4 FxLMS的收敛条件和稳定步长FxLMS的收敛分析比LMS复杂次级路径的延迟会引入额外相位滞后直接影响最大允许步长。工程上有个粗糙经验次级路径延迟越长能用的μ上限就越小收敛也越慢。我的实测做法是先在浮点仿真里扫描μ从0.001开始倍增找到发散临界点然后取临界值的三分之一作为默认值。上板后再配合分数延迟微调目标是让测试频段内达到20dB以上的降噪深度。整个过程其实是在收敛速度、稳态误差和稳定性之间反复找平衡没有一劳永逸的参数。5. 从浮点仿真到FPGA落地的完整链路5.1 为什么先做算法级验证FPGA项目最忌讳一上来就写RTL。自适应滤波器的行为受输入统计特性影响很大算法本身还没验证清楚就直接进硬件调试只会更痛苦。我在算法仿真阶段用Python做了全浮点模型把次级路径、ADC/DAC量化、输入噪声场景全部模拟进去先确认三件事算法能不能收敛、参数在什么范围能收敛、稳态误差能不能满足需求。整个仿真框架统一支持LMS/NLMS/RLS/FxLMS切换每次改动都在同一套测试信号下跑保证对比公平。测试信号我也构造了三种类型白噪声、窄带正弦、真实风扇噪声录音分别验证算法的鲁棒性。5.2 定点化是FPGA项目的分水岭浮点模型跑通之后定点化是最能拉开项目质量的一步。我的流程是统计每个节点的动态范围主要靠仿真里的最大值、最小值记录。按动态范围分配位宽输入16bit、系数18bit、中间累加40bit。把浮点模型里的所有运算替换成定点运算逐节点对比定点与浮点输出的误差。用误差数据反推位宽是否够不够就加直到误差不再明显影响最终指标。这套流程花的时间比写RTL还多但非常值得。一旦RTL写完再想改位宽就得动大量代码和仿真用例成本完全不同。一个结论是16bit输入下NLMS的稳态误差主要不是算法精度限制而是输入量化本身就限死了所以别盲目堆位宽够用就好。5.3 RTL模块划分与验证RTL按功能切成几个独立模块FIR/IIR滤波内核、权值更新单元、自相关与归一化单元、Farrow分数延迟、控制状态机、AXI总线接口。每个模块单独一个仿真testbench先把模块级波形对齐到定点模型的输出误差在容限内再往上集成。集成阶段最需要注意的是模块间的时序握手。自适应滤波器天然是流水节拍输出参考信号、期望信号、权值更新这三个数据流必须严格对齐到同一个样本节拍。我专门加了一个对齐检查模块统计各数据流的样本编号一旦发现错位立刻上报。这个设计救了我好几次。5.4 上板实测与指标上板测试用的是信号发生器加合成噪声场景通过FPGA内部的测试信号源注入20Hz到1kHz的合成噪声。NLMS模式下系统大约100ms内完成收敛稳态降噪深度达到18dB到22dB根据测试频点不同有波动。换成RLS后收敛时间缩短到20ms以内但资源占用和稳定性代价让我们最终没有把它作为默认选项。测试里有个现象值得记录降噪深度并不是越高越好。当收敛步长调得过大时稳态误差虽然压下去了但权值抖动带来的高频噪声反而增加总听感更差。最终选的步长是降噪深度和噪声质量之间的折中而不是纯指标最优。6. 踩过的坑与排查链路6.1 步长μ调了半天问题却出在输入功率现象是LMS在信号变强时开始周期性抖动。我花了两天调μ从0.01一路降到0.001只能缓解不能根治。最后用仿真抓了输入信号的功率包络发现输入幅度动态范围超过30dB固定步长效应的根源就在这里。换成NLMS之后稳定性问题直接消失。排查链路是先怀疑步长再看输入统计特性最后确认是算法结构层面的缺陷而不是参数问题。6.2 累加器溢出导致权值爆炸有一次滤波器输出突然变成几乎满幅度的正弦振荡一开始以为是IIR极点漂移。后来把内部节点波形全部拉出来才发现是FIR转置结构里某级累加器溢出了而默认的溢出处理是回绕导致累加结果跳到负数区间权值更新跟着错乱。修复方式中间累加器保留足够位宽出口做饱和处理而不是回绕。从此之后我所有累加器都强制加饱和逻辑。6.3 延迟不一致引发的FxLMS发散FxLMS实测中遇到一个很隐蔽的问题系统在小增益下正常增益一旦加大就发散但理论上还没到临界步长。排查了很久最后用统计工具分别测了参考信号通路和误差信号通路的整体延迟发现二者差了7个采样周期而代码里只对齐了整数个周期没有把这7个周期的偏差算进去。重新对齐延迟之后稳定边界立刻恢复到和仿真一致的水平。这个案例让我明白主动控制类系统里延迟对齐不是可有可无的细节而是稳定性的核心变量。6.4 时序收敛与模块复用当FIR、自适应、Farrow几个模块全部并行打开时时序出现了一些路径违例主要是Farrow模块里多项式乘法链太长。解决办法是拆流水线在乘法级之间插入寄存器代价是多几个周期的流水延迟但对控制系统来说可以统一补偿。另一个经验是DSP48尽量让综合工具自动推断手动例化虽然可控但会丧失很多重定时优化的机会。最后说一个我在整个项目里贯彻的习惯每一次修改都在固定测试集上跑回归包括浮点仿真、定点仿真、RTL仿真三个层级任何一层不过就不往下走。这个习惯保证了自适应滤波器这种强反馈系统不会在一次小改动之后突然崩溃也让我在事后复盘时能清晰定位问题出在哪一层。如果你打算做类似项目强烈建议从一开始就搭好这套三级验证链路它能至少省掉你一半的调试时间。

相关新闻

FreeRTOS xTaskCreateStatic深度解析:静态任务创建避坑指南

FreeRTOS xTaskCreateStatic深度解析:静态任务创建避坑指南

嵌入式圈子里谈论任务创建,很多人第一反应就是xTaskCreate,而对xTaskCreateStatic的印象往往停留在“另一个静态版本”这种模糊认知上。我刚接手一个设备项目时也这样,直到一次长稳测试让我彻底改了习惯:某个临时任务用动态方式创…

2026/10/19 6:15:44 阅读更多 →
diagram-design实战:从草图到系统架构图的完整方法论

diagram-design实战:从草图到系统架构图的完整方法论

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次看到 diagram-design 这个词,很多人会以为它只是一个画图工具的别名。但真正在项目里摸爬滚打过几年的人会明白,它指的是一整套关于“如何把复杂逻辑变成一张别人能看懂的图…

2026/10/19 6:15:44 阅读更多 →
基于Spark+HBase+Vue的实时新闻分析系统实战

基于Spark+HBase+Vue的实时新闻分析系统实战

简介:本资源是一套高完成度的毕业设计级项目,面向大数据开发初学者与高校计算机专业学生,聚焦新闻网数据的实时采集、分析与可视化全流程实践。项目基于Spark 2.x构建,融合Flume日志采集、Kafka消息队列、HBase存储及前端Web展示&…

2026/10/19 6:15:44 阅读更多 →

最新新闻

AI原生开发平台架构规划与落地实操指南

AI原生开发平台架构规划与落地实操指南

做技术交流的时候,被问得最多的一个问题,差不多就是标题这句:AI原生开发平台到底是什么、架构怎么规划、怎么落地。说实话,每次回答完我都觉得还有话没说完,因为这三个问题其实是层层递进的——概念不清就谈不上规划&a…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从草图到可维护图示系统的设计方法论

diagram-design:从草图到可维护图示系统的设计方法论

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到“diagram-design”这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里摸爬滚打过的人都知道,图这件事从来不是“画出来”那么简单。它背后牵扯的是信…

2026/10/19 7:38:21 阅读更多 →
MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

MCP 三种传输方式全解析:stdio、SSE、Streamable HTTP 选型实战

聊 MCP 的三种传输方式之前,先承认一件事:大多数人在看 MCP 文档的时候,最容易卡住的就是传输层这一节。stdio、SSE、Streamable HTTP 三个词单独拎出来都认识,合在一起却不知道它们为什么同时存在、各自解决什么问题。这不怪你&a…

2026/10/19 7:38:21 阅读更多 →
AI论文降重指令实战:6类提示词破解查重与AIGC检测

AI论文降重指令实战:6类提示词破解查重与AIGC检测

2025年的毕业季明显比前几年多了一道坎:不只是查重率,还多了AI检测。我身边好几个准备答辩的朋友,论文初稿写得很顺,结果一查重,标红一片;好不容易把重复率压下来了,送审前又被提醒“部分段落机…

2026/10/19 7:38:21 阅读更多 →
rea模块开发指南:从命名解析到高复用架构设计与性能优化

rea模块开发指南:从命名解析到高复用架构设计与性能优化

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏了的项目名。在技术圈混久了你会发现,越是短到只有三个字母的标题,背后藏的东西往往越…

2026/10/19 7:38:21 阅读更多 →
diagram-design:从设计令牌到语义化图表的系统化设计方法

diagram-design:从设计令牌到语义化图表的系统化设计方法

1. 从一张草图到一套系统:diagram-design 到底在解决什么问题第一次听到 “diagram-design” 这个词,很多人会以为它只是“画图工具”的另一个说法。但真正在项目里被图表折磨过的人知道,问题从来不是“画不出来”,而是“画得乱、…

2026/10/19 7:37:20 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →