NoiseTorch-ng 实践指南:在 Linux(PulseAudio/PipeWire)上搭建实时降噪虚拟麦克风
桌面应用音频处理【免费下载链接】NoiseTorchReal-time microphone noise suppression on Linux.项目地址https://gitcode.com/gh_mirrors/no/NoiseTorch点击查看免费下载NoiseTorch-ng 是运行在 Linux 音频栈PulseAudio 或 PipeWire之上的开源降噪应用它基于 RNNoise 算法创建一个名为 Filtered Microphone 的虚拟麦克风把机械键盘、机箱风扇、火车等环境噪声从你的语音中烧掉torch。读完本篇你可以完成从安装、授权、配置到源码级理解其虚拟设备创建链路的完整流程知道setcap权限为何必要、Voice Activation Threshold 参数在 C 插件中如何生效以及它如何通过module-ladspa-sink等 PulseAudio 模块把任意真实麦克风/扬声器包装成降噪后的设备。项目概览单文件二进制 内嵌 RNNoise 插件README 对项目的核心定位描述是一个easy to use open source application核心特性有两条——两步点击Two click setup即可完成虚拟降噪麦克风的配置单个小型、静态链接、自包含self-contained的二进制文件。从源码结构看自包含的实现方式非常直接main.go 通过 Go 的//go:embed指令把预编译好的 C/LADSPA 插件c/ladspa/rnnoise_ladspa.so直接嵌入到 Go 可执行文件中见 main.go 第 32-33 行//go:embed c/ladspa/rnnoise_ladspa.so var libRNNoise []byte程序启动时dumpLib()会把这个内嵌字节流写成一个临时文件librnnoise-*.so供后续加载 LADSPA 模块时使用程序退出时由removeLib()删除main.go 第 108-124 行。也就是说降噪算法库随二进制一起分发用户无需额外安装任何共享库。这个 LADSPA 插件本体是 C 语言实现的c/ladspa/module.c它声明了一个名为nt-filter的插件端口定义为一个 VAD 控制输入端口、一个音频输入端口、一个音频输出端口并标记LADSPA_PROPERTY_HARD_RT_CAPABLE表明其面向实时线程设计。下载、安装与 CAP_SYS_RESOURCE 权限安装发行版二进制从项目 releases 页面下载最新的tgz包解压到家目录tar -C $HOME -h -xzf NoiseTorch_x64_v0.12.2.tgz这一步会把三部分文件放到正确位置可执行文件noisetorch、桌面入口noisetorch.desktop以及图标。对应源码中的 release 打包逻辑在 Makefile 的release目标中——它把二进制放进tmp/.local/bin/、桌面文件放进tmp/.local/share/applications/、图标放进tmp/.local/share/icons/hicolor/256x256/apps/再打包为NoiseTorch_x64_version.tgz。桌面入口文件 assets/noisetorch.desktop 内容如下可以看到它声明的分类为Audio;AudioVideo;Utility;执行命令就是noisetorch[Desktop Entry] NameNoiseTorch GenericNameRealtime Noise Suppressor CommentCreate a virtual microphone that suppresses noise, in any application. Execnoisetorch Iconnoisetorch Terminalfalse TypeApplication CategoriesAudio;AudioVideo;Utility;如果桌面环境没有立即显示应用可能需要等待图标缓存重建GNOME 下可执行gtk-update-icon-cache。为什么必须 setcap安装后需要给二进制文件授予CAP_SYS_RESOURCE能力sudo setcap CAP_SYS_RESOURCEep ~/.local/bin/noisetorch这个要求并非装软件走流程而是由实现决定的。NoiseTorch-ng 在加载 PulseAudio 降噪链路前会临时抬高 PulseAudio 进程的RLIMIT_RTTIME实时 CPU 时间限制以免高优先级实时线程被内核杀掉。rlimit.go 通过prlimit64系统调用对 PulseAudio 进程 PID 执行该操作而抬高raiseRLIMIT 需要CAP_SYS_RESOURCE降低则不需要。rlimit.go 中的removeRlimit把限制值设为MaxUintloadSupressor执行完后用defer setRlimit(...)恢复原值。程序自身会做能力自检capability.go 中的hasCapSysResource检查当前进程与可执行文件的有效能力位如果缺失ui.go 的capabilitiesView会弹出提示界面并提供一键通过pkexec提权 setcap 后重新 exec 自身的恢复路径。README 提到的安全事件一节也说明更新现在改为直接从项目 releases 页面获取update.go 中更新包会先下载.sig签名文件用内置的 ed25519 公钥UPDATE_PUBKEY见 Makefile校验签名通过后才安装校验失败会直接中止更新。PATH 注意事项如果安装后启动失败请确认~/.local/bin在PATH中。Ubuntu 等大多数发行版默认包含否则在~/.profile末尾追加if [ -d $HOME/.local/bin ] ; then PATH$HOME/.local/bin:$PATH fi若这是你首次使用~/.local/bin可能需要注销并重新登录才生效。卸载rm ~/.local/bin/noisetorch rm ~/.local/share/applications/noisetorch.desktop rm ~/.local/share/icons/hicolor/256x256/apps/noisetorch.png日常使用Load / Unload 与两个虚拟设备启动 NoiseTorch-ng 后主界面基于 nucular GUI 工具箱见 go.mod 依赖github.com/aarzilli/nucular分为三个功能区Select Microphone / Select Headphones勾选要降噪的输入设备与输出设备同一时刻输入只能勾选一个ui.go 的ensureOnlyOneInputSelected保证互斥没有勾选动态延迟标志的设备会被标记 (incompatible?)Load Filter(s) / Unload Filter(s)加载/卸载降噪链路Settings显示 Monitor 源、麦克风/耳机过滤开关、语音激活阈值。工作流是选中要降噪的麦克风点击Load——系统里随即出现名为 Filtered Microphone for 设备名 的虚拟麦克风在任意会议/VOIP 应用OBS、Mumble、Discord 等中把输入设备切换为该 Filtered 麦克风即可输出过滤同理把想过滤的应用输出路由到 Filtered Headphones用完后点击Unload移除虚拟设备下次再用时重新 Load。两个细节值得注意加载完成后可以直接关闭窗口虚拟麦克风会继续工作直到你显式 UnloadNoiseTorch-ng 进程在加载后并不是必须常驻的README Usage 一节明确说明当虚拟设备正被应用占用时 Load/Unload界面会先弹确认框警告应用可能出现异常行为ui.go 的makeConfirmView。Voice Activation Threshold语音激活阈值Settings 中的 Voice Activation Threshold 滑块控制 NoiseTorch-ng 在检测到人声时才放行麦克风这件事上有多严格。README 给出的经验是麦克风质量不错时尽量调高最高 95%如果说话时声音被切掉就缓慢调低直到合适。设为 0% 时NoiseTorch-ng 仍会压噪但不会在检测不到人声时把麦克风掐断。注意修改阈值后必须重新 Loadreload才生效界面上也会提示 Reloading the filter(s) is required to apply these changes.从源码看这个阈值有硬边界UI 滑块范围是 0–95ui.go 中w.SliderInt(0, ctx.config.Threshold, 95, 1)C 插件的 VAD 端口范围提示为LowerBound 0, UpperBound 95c/ladspa/module.c 第 189-192 行CLI 传参超过 95 时会被钳制为 95cli.go 第 105-112 行Threshold of %d too high, setting to maximum of 95.。配置持久化所有设置保存在 XDG 配置目录下的config.toml默认~/.config/noisetorch/config.toml遵循XDG_CONFIG_HOME。config.go 中的默认值为Threshold 95 DisplayMonitorSources false EnableUpdates true FilterInput true FilterOutput false LastUsedInput LastUsedOutput 其中LastUsedInput/LastUsedOutput记录上次使用的设备 ID下次启动时若该设备仍存在会自动预选main.go 的preselectDevice否则回退到 PulseAudio 默认 source/sink。虚拟设备是如何创建的PulseAudio 四模块链路与 PipeWire 单模块这是理解 NoiseTorch-ng 最有价值的部分。以输入麦克风过滤为例module.go 的loadPulseInput依次加载四个 PulseAudio 模块真实麦克风 (source) │ module-loopback (source真实麦克风 sinknui_mic_raw_in) ▼ nui_mic_raw_in (module-ladspa-sink, labelnt-filter, pluginlibrnnoise, control阈值) │ RNNoise 降噪在此发生 ▼ nui_mic_denoised_out (module-null-sink, rate48000) │ module-remap-source (masternui_mic_denoised_out.monitor) ▼ Filtered Microphone for 设备名 ← 应用选择这个作为输入具体调用module.go 第 226-265 行module-null-sink sink_namenui_mic_denoised_out rate48000——一个空 sink充当降噪后的承载体module-ladspa-sink sink_namenui_mic_raw_in sink_masternui_mic_denoised_out labelnt-filter pluginlibrnnoise control阈值——LADSPA sink实际执行 RNNoise 过滤module-loopback source真实麦克风 sinknui_mic_raw_in channels1 latency_msec50 ...——把真实麦克风回环到 LADSPA sink。设备若支持动态延迟PA_SOURCE_DYNAMIC_LATENCY改用latency_msec1且不带adjust_time1module-remap-source masternui_mic_denoised_out.monitor source_namenui_mic_remap source_propertiesdevice.descriptionFiltered Microphone for 设备名——暴露给用户应用的虚拟 source。输出耳机过滤的链路更长loadPulseOutputmodule.go 第 267-297 行共加载两个 null-sinknui_out_out_sink、nui_out_in_sink、一个 LADSPA sinknui_out_ladspa和两条 loopback最终呈现为 Filtered Headphones。PipeWire 模式下则简洁得多输入过滤只需要一个module-ladspa-sourcesource_nameFiltered Microphone for 设备名rate48000 channels1输出过滤只需一个module-ladspa-sinksink_nameFiltered Headphones因为 PipeWire 原生支持 LADSPA 插件挂载。main.go 的serverInfo会通过 ServerInfo 的 PackageName 区分 PipeWire/PulseAudio并要求 PipeWire 版本至少 0.3.28否则在 ui.go 中弹出版本过低的致命错误。程序还会持续监听这些模块的存在性来判定状态supressorState四个模块齐全为 loaded部分存在为 inconsistent界面显示橙色 Inconsistent state, please unload first.全无为 unloaded。设备列表也会自动过滤掉名字含nui_或Filtered的自身虚拟设备避免降噪自己的降噪输出main.go 的getSources/getSinks。降噪与 VAD 的实现细节480 样本一帧打开 c/ladspa/module.c 可以看到阈值与延迟的真相#define FRAMESIZE_NSAMPLES 480 // 48000 Hz 下正好 10ms #define FRAMESIZE_BYTES (480 * sizeof(float)) #define VAD_GRACE_PERIOD 20 // 20 帧宽限期 200msrunFilter的每帧流程采样点先乘以 32767 转换为 RNNoise 期望的 32-bit 定点点数范围写入输入环形缓冲c-ringbuf见 c/ladspa/Makefile 一并编译../c-ringbuf/ringbuf.c每攒够 480 样本调用一次rnnoise_process_frame得到人声概率vad_prob若vad_prob vad_thresh即 UI 阈值除以 100刷新remaining_grace_period 20宽限期内输出正常宽限期耗尽则整帧输出置零——这就是检测不到人声就掐断麦克风的机制0% 阈值时该分支永不触发只做压噪输出端若样本不足首帧填充期缺口用 0 填充随后再除回 32767。这也解释了 README 的延迟数据降噪算法本身的固有延迟是一帧的10ms480 样本 48kHz很低PulseAudio 链路还会引入随系统变化的额外延迟。输出过滤在 PulseAudio 下大约是~100ms量级——普通会议、VOIP、游戏足够用但竞技场景需要留意。插件的构建规则在 c/ladspa/Makefile将 ringbuf、rnnoise 源码与 module.c 一起编译链接时用-Wl,--version-scriptexport.txt只导出*ladspa*符号c/ladspa/export.txt最小化符号面。命令行接口脱离 GUI 使用cli.go 定义了一组 CLI 选项让你不启动 GUI 也能管理降噪链路参数作用-log将调试日志输出到 stdout-setcap内部用途为自己设置能力位配合 pkexec 提权-s id指定 source/sink 设备 ID不指定则用默认设备-i仅加载输入麦克风降噪-o仅加载输出耳机降噪-u卸载降噪链路-t 0-95指定语音激活阈值95 会被钳制为 95-l列出可用 PulseAudio 设备名称 ID-c检查是否有可用更新仅检查不执行更新组合示例列出设备 → 用其 ID 加载麦克风降噪 → 卸载noisetorch -l # 查看 Sources/Sinks 及设备 ID noisetorch -i -s source-id -t 80 # 加载麦克风降噪阈值 80% noisetorch -u # 卸载CLI 路径与 GUI 复用同一套loadSupressor/unloadSupressor实现module.go行为完全一致。从源码构建前置要求Go 工具链go.mod声明go 1.16基线实际建议较新版本以及可用的 C 编译器CC。仓库中c/rnnoise与c/c-ringbuf是子模块首次构建需git submodule update --init --recursiveMakefile 的rnnoise目标会自动执行。git clone 仓库地址 cd NoiseTorch make # 等价于 make dev构建 rnnoise 插件 go generate go build -o bin/noisetorchmake dev产出开发版二进制nameSuffix带(dev)标记不编译更新器——更新器仅在-tags release时编入见 config.go 注释与 Makefile 两处目标的区别。发布版目标额外做静态链接CGO_ENABLED0 ... -extldflags -static、strip-s -w、按 Makefile 定义注入updateURL与 ed25519 公钥最后用 scripts/signer.go 对tgz签名生成.sig。构建产物按 README 的方式安装到用户目录mkdir -p ~/.local/bin cp ./bin/noisetorch ~/.local/bin/ cp ./assets/noisetorch.desktop ~/.local/share/applications cp ./assets/icon/noisetorch.png ~/.local/share/icons/hicolor/256x256/apps注意 release 打包还会对tgz做 ed25519 签名自行make的构建没有签名公钥publicKeyString为空update.go 的updateable()会因此返回 false界面也就不会出现更新提示——这是预期行为。与其他方案的对比与排障方向README 列出的替代方案noise-suppression-for-voice同样基于 RNNoise功能选项更多但配置更复杂、更依赖终端Easy Effects提供回波消除、噪声移除等大量音频效果的包只支持 PipeWire降噪部分也使用 RNNoise。README 将具体故障排查指向了项目的 wiki Troubleshooting 页面本仓库内不含该页面内容而源码中已经内置了几条高价值线索模块加载失败PulseAudio 错误码 14时界面提示likely a problem with your system or distributionmodule.go 的loadModule能力位缺失且文件能力与进程能力不一致时例如文件系统挂载了nosuid界面会明确提示检查nosuidui.go 的capabilitiesView;PipeWire 版本低于 0.3.28 时直接判定为致命错误音频服务器断连后 main.go 的paConnectionWatchdog会自动重连并重新拉取设备列表。小结NoiseTorch-ng 的技术路径可以概括为一句话用 Go 写一个自包含的管理器把 C 实现的 RNNoise LADSPA 插件内嵌进去再借助 PulseAudio/PipeWire 的模块机制把真实设备套壳成降噪虚拟设备。对使用者的关键知识点是安装后记得setcap CAP_SYS_RESOURCEep、阈值 0–95 调好后需重新 Load、加载后窗口可以随手关掉对想深入的人module.go 的四条模块加载链路和 c/ladspa/module.c 的 VAD/宽限期逻辑是全部核心。赞分享桌面应用音频处理【免费下载链接】NoiseTorchReal-time microphone noise suppression on Linux.项目地址https://gitcode.com/gh_mirrors/no/NoiseTorch点击查看免费下载相关推荐NoiseTorch-ng快速上手3分钟搭建无噪音虚拟麦克风NoiseTorch ng快速上手3分钟搭建无噪音虚拟麦克风 你是否还在为视频会议中的键盘敲击声、风扇噪音而尴尬是否因背景杂音导致语音沟通效率低下Nois桌面应用音频处理NoiseTorch-ng实时音频降噪完整指南5步掌握Linux麦克风优化NoiseTorch ng实时音频降噪完整指南5步掌握Linux麦克风优化 在远程会议、在线直播和语音录制日益普及的今天清晰的音频质量已成为专业沟通的基本要桌面应用音频处理PersonaLive创意应用虚拟主播、教育直播与艺术创作场景PersonaLive创意应用虚拟主播、教育直播与艺术创作场景 PersonaLive是一款强大的肖像图像动画工具能够将静态肖像图片转化为生动的动态视频为人工智能计算机视觉媒体生成数字人直播视频上一篇ZLUDA完整配置指南3步在AMD显卡上实现CUDA兼容的终极方案下一篇GB/T 7714 BibTeX样式终极指南从零开始实现国家标准参考文献排版创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

E2B Code Interpreter JS SDK 实战指南:在云端沙箱中安全运行 AI 生成的代码

E2B Code Interpreter JS SDK 实战指南:在云端沙箱中安全运行 AI 生成的代码

人工智能AI AgentAgent 沙箱后端 【免费下载链接】E2B Open-source, secure environment with real-world tools for enterprise-grade agents. 项目地址: https://gitcode.com/gh_mirrors/e2/E2B 点击查看 免费下载 导读 本文围绕 E2B 开源仓库中的 code-interpr…

2026/10/14 2:49:29 阅读更多 →
重磅开源!sweety-handdraw-video:目前市面最强手绘视频管线,ChatGPT 完美运行

重磅开源!sweety-handdraw-video:目前市面最强手绘视频管线,ChatGPT 完美运行

1. 引言 手绘视频(Hand-drawn Video)一直是内容创作领域的热门方向——从科普动画到产品演示,手绘风格总能带来独特的亲和力与视觉辨识度。然而,传统手绘视频制作流程繁琐:需要逐帧绘制、逐段配音、反复剪辑&#xff0…

2026/10/14 2:49:29 阅读更多 →
GPTQ大模型量化实战:4bit权重量化原理、参数调优与显存优化

GPTQ大模型量化实战:4bit权重量化原理、参数调优与显存优化

简介:针对大模型部署时参数规模庞大、推理需要多块高性能GPU的痛点,这份源自ICLR 2023的论文PDF对大模型量化技术做了系统阐述。该技术通过近似二阶信息实现一次性权重量化,可在约4个GPU小时内将175B参数的GPT模型压缩至3/4比特,同…

2026/10/14 2:48:29 阅读更多 →

最新新闻

TikTok Shop 多店铺:平台侧哪些信息会被交叉比对

TikTok Shop 多店铺:平台侧哪些信息会被交叉比对

一、先说结论:官方对「关联」的定义,比你想的宽 TikTok Shop 官方在卖家学习中心有一篇《关联账号风险指南》,原文写得很直白——平台对关联账号的判定,通常不是依据单一的重合信息,而是多项风险信号综合判断&#xff…

2026/10/14 3:24:35 阅读更多 →
小白程序员必看:FDE前沿部署工程师,AI落地新风口

小白程序员必看:FDE前沿部署工程师,AI落地新风口

本文介绍了FDE(前沿部署工程师)这一新兴AI岗位,主要职责是连接AI技术与企业实际业务,解决大模型落地难题。文章阐述了FDE的工作内容、所需技能(AI基础、RAG/Agent应用、项目实践、沟通能力),并分…

2026/10/14 3:24:35 阅读更多 →
我把一个只有 7 行的 AI Skill 用出了花:聊聊 eli5

我把一个只有 7 行的 AI Skill 用出了花:聊聊 eli5

一个小到离谱的"插件" 最近我在整理 AI 工具的时候,翻到一个特别不起眼的东西,叫 eli5。它的完整定义只有短短几行,翻译成人话就一句:假装我是一个对这个话题一无所知的人,用一张 HTML 页面、大图配少量文字…

2026/10/14 3:24:35 阅读更多 →
北美外教一对一哪个好?2026年最新深度横评,价格、口音、互动性三维度打分

北美外教一对一哪个好?2026年最新深度横评,价格、口音、互动性三维度打分

在线少儿北美外教一对一赛道,经过多年迭代,目前平台差异化已经非常明显。很多家长选课只看宣传噱头,忽略师资口音纯度、课堂互动落地性、长期性价比等核心指标,最终出现“高价低效、口音不标准、上课全程旁听”等问题。本文基于20…

2026/10/14 3:24:35 阅读更多 →
C++手搓坐标图工具:从坐标变换到实时渲染的工程实践

C++手搓坐标图工具:从坐标变换到实时渲染的工程实践

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

2026/10/14 3:24:34 阅读更多 →
Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →