技术笔记、AI 学习与建站记录
从 Next.js App Router 边界、小 Kun 的可信与超时,到音视频工具与构建缓存——整理 KunSpace 开发中真正难的点,以及具体怎么定位、怎么解决。
从 adev_create_audio_patch 到双线程 + 环形缓冲:讲清 HDMI-IN 建 patch、MS12 退出连续模式、 输入读 ALSA / 输出 out_write_new,以及 usecase 与 mixer 主辅缓冲如何切换。
站内走轻量 RAG、常识交给大模型、实时事实调用外部工具——讲清小 Kun 的分流逻辑、Agent 循环,以及我们如何约束 AI 幻觉。
从 ALSA loopback 采集多通道 Mic 原始声与播放参考信号(Ref),讲清数据来源、采集参数、通道布局、tinycap 抓取与拆分 / downmixer / 算法处理整条链路。
Google 远场占住 Built-In Mic 后,自研数字人/语音助手录不了音。通过新增 FM Tuner 输入设备、 放宽 mic mixPort 双开,并改 AudioPolicy 路由,实现两路同时取麦、各自唤醒。
做语音唤醒前,用标准测试音经喇叭播放、tinycap 录 Mic,再算 THD/% 与 dB。讲清环境、命令、拉数与 Sengpielaudio 换算表,以及和唤醒链路的关系。
以 Soundbar 为主机、Speaker 为从机,讲清 Multi-Room 场景、与 Multichannel 的边界、Snapcast 传输路径、蓝牙+Wi-Fi 配网,以及从 Aetheryal 验证到自研替换的路线。
自播自录 1_15kHz 查抗混叠:折痕判据、异常频谱长什么样、驱动加载顺序 pdm→loopback→resample,以及 loopbacka / loopbackb 与 16k/48k、resample 怎么配。
从裸板到整机:麦序、幅度一致性、Mic/回采幅度、THD、SNR、直流偏置、抗混叠、延时、共振异音与气密性,整理成可执行的音频评测清单。
拆清 tvuiapp / tvbackground 如何经 IAetheryalAudio AIDL、MS12 stereo_pcm_output、libaetheryalaudiohal 拿到系统播放 PCM;重点写清 ConnectToSink 门控与调试属性。
Soundbar 大音量下远场唤醒差:原生 2mic+2ref AEC 不够用。把自研多通道 AEC+NS 下沉到 Audio HAL, 用 4mic×6ref 建模,并以静音 Ref 旁路让 Google 原生 AEC 空转,保持接口兼容。
用 -23 dBFS 标准片、系统最大音量,讲清 MS12 选 RF 与 LINE 时, None(PCM 出)/ Auto(Dolby 出)四条路径上的 -8 dB / +8 dB 与后级 TV。
梳理 FlexConnect for Home Devices SDK v1.1:包结构、MS12/Home Audio 两条产品线、灵活渲染与声学映射、认证要求编号、STEP 测试流程与 v1.1 更新要点。
LoopbackA 已被 DSPC 占用时,如何在 DTS 增加 LoopbackB,从 TDM-A(tdmoutA)回采 48 kHz / 2ch / 16bit 参考声,并完成编译烧录与 tinyplay/tinycap 验证。
从音量键到喇叭:Java 记 index 与刷 UI,Native 用 AudioPolicy 算 dB、AudioFlinger 做软音量, HAL 再落到芯片增益。讲清软音量 / 硬件音量,以及 TV 适配时常踩的点。
TV/Android 上用 benchmark 脚本记录机况,atrace 异步抓 sched/gfx/audio 等类别, 复现问题后导出 trace.bin,在 ui.perfetto.dev 里看各线程 CPU 占用。
完整记录 KunSpace 站点上所有 AI 相关能力,以及如何把大模型、轻量 RAG、Agent 工具调用做成可 Demo 的管理后台助手。
用 960×8、16 kHz、4 通道 16bit 讲清帧、period、环形缓冲; 延迟、总缓冲时间、回调频率怎么算,以及调参时的专业取舍。
Soundbar HDMI ARC 断开后本机喇叭突然最大声:从误判面板 Gain=1,到 APM 看到 index=100, 最终定位 AudioService.isFullVolumeDevice 误 OR 了 mHdmiSystemAudioSupported。
拆清 Soundbar 无线环绕 / 低音炮从硬件连上,到 App Bridge 定身份,再到 Dolby Calibration 加载 JSON、初始化 FlexConnect 的整条路径;回答 modelName、setDevices、连接状态三件事分别由谁负责。
双屏 TV 开 ACR 后 audio 服务崩溃:消融实验锁定 ENABLE_ACR_APP, 从 Scudo/ASan 踩内存追到 in_read 把 16→32 转换的字节数写成了 bytes 而非 bytes/2。
Apple TV 移焦点、开关 Tuner 时的「啪」一声:先靠 PCM/Non-PCM 检测清空误数据, 再靠进出台 TV 通路的 ease-in/out 压突变;两轮修复怎么配合。
双屏电视大屏无信号时,audio_patch_input_threadloop 里 usleep(20ms) 过长, 缓冲堆积后一股脑吐出导致小屏视频卡顿;改为 5ms 即可缓解。
记录 KunSpace 从需求文档、架构设计、功能开发到 Vercel 海外部署与腾讯云国内部署的完整过程,以及踩过的坑。
HDMI1 播 dongle 时为 LINE,经 HDMI2 无信号再切回后变成 RF、听感变大; 根因是无信号时 MS12 未正确清理,切回后 DRC 状态被带偏。
大屏播 dongle、小屏开 Zoom、HDMI ARC 接 Soundbar 时喇叭与 ARC 都没声: AudioPolicy MEDIA 未强制走 SPEAKER,HAL 在 ARC 热插拔里又静音扬声器。
从模块组成、空间渲染、时钟同步、人位感知到 Soundbar 部署架构,梳理 Dolby FlexConnect 如何突破固定扬声器布局,支持无线灵活布局与动态沉浸式渲染。
Dolby MS12 与 audioserver 挤在同一侧小核时容易把单核顶到 100%; 将 dolby_ms12_threadloop 的亲和性从 CPU2/3 改到 CPU6/7 分流。
HDMI 接 Apple TV:Home 焦点音效异常、Netflix 拖进度条无声; 在 HDMIIN/ATV/LINEIN 配输出时置 mute_start,等 AV 同步就绪再出声。
待机恢复、开箱向导、升级后、任意播放、Dongle+AVR 等多场景 ARC/eARC 无声: 加强 ARC 状态、推迟 OneTouchPlay、eARC 开时忽略冲突 CEC,以及编码切换时 hold bus。
这是我的个人数字空间的第一篇文章,记录我为什么要搭建这个网站。
从 git log / blame / stash,到 pull 冲突三种处理、建删分支、cherry-pick、 reset / reflog、format-patch 与 rebase squash,整理日常开发最常用的一套。
用一张分层图串起 Application → Framework → AudioFlinger/Policy → HAL → TinyALSA → Kernel: AndroidRuntime 注册、audioserver 启动、AudioPatch 与 port 结构。
对照原生远场与 HAL 内嵌 AEC/唤醒的优化架构,梳理 audio_preprocess_open/start/read/stop: 产品类型选库、Mic 回调与队列、以及释放路径。
从一个初学者的视角,聊聊 AI 辅助编程如何降低了创造的门槛。
学完 Prompt、RAG、Agent 之后,如何做一个能演示、能讲解、能放进作品集的项目?
复杂任务可以分给多个专职 Agent——写代码、测功能、写文档各管一摊,由协调者汇总。什么时候需要、怎么分工?
聊天机器人你问一句它答一句;Agent 会拆目标、用工具、看结果、再决定下一步,直到任务完成。
一个 Agent 不会一次学会所有本事。Skills 把能力拆成可插拔的模块——查天气、搜文档、跑脚本各算一项。
模型背不下整本手册怎么办?RAG 先检索相关段落,再生成答案——像开卷考试带小抄。
大模型本身不会读你的硬盘、不会查数据库。MCP 是一套标准协议,给 AI 装上「万能插头」。
Ollama 像给电脑装了一个「本地 AI 引擎」。一文搞懂它是什么、解决什么问题、怎么用。
做 AI 应用之前,先搞懂三个最基础的概念——提示词、接口调用和代码,它们分别负责什么?