# 3588digitalhuman **Repository Path**: RayShen520/3588digital-human ## Basic Information - **Project Name**: 3588digitalhuman - **Description**: 3588数字人 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-09 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RK3588 · 展会广告讲解数字人「标品」—— 立项/评审文档 > 产品形态:**一台盒子讲一个产品** —— 客户用 U 盘导入自己的「产品介绍 + 最多 5 张产品图」, > 插上 HDMI 就是展会现场的互动讲解广告机(RK3588 平台,本地跑大模型,全离线,不需要联网) > 阶段:标品形态验证 | 更新:2026-09-14 ## 文档入口 | 文件 | 内容 | |------|------| | [00 文档导航](00-文档导航_README.md) | 全仓导航、阶段路线、已定调决策、待验证清单 | | [01 立项报告](01-立项报告_BusinessCase.md) | 说服"值得做" | | [02 产品需求文档 PRD](02-产品需求文档_PRD.md) | 定义"做什么" + 板卡实测附录 | | [07 板端源码](07-板端源码/README.md) | **板子上到底装了什么** —— 源码快照 + 怎么部署 + 怎么回退 | | [08 内容包格式说明](08-内容包格式说明_交付客户.md) | **客户怎么把产品装进盒子**(上半随盒交付客户、下半内部细则) | | [09 U 盘模板](09-U盘模板/) | 客户实际拿到的那只 U 盘里装什么(填满的范例,不是空白模板) | ## 硬件实测进度(2026-09 上旬,板卡在跑) | 环节 | 状态 | |------|------| | NPU 本地大模型 | ✅ 加载 ~3s,生成 ~6.5~7 token/s,详见 PRD §10。**⛔ 2026-09-16:此行的 DeepSeek-R1-1.5B 只用来证明"NPU 能跑大模型";产品只用 Qwen2.5-1.5B,R1 已无代码路径指向** | | 本地中文 TTS(开口说话) | ✅ sherpa-onnx + theresa 女声,4 线程,快于真人语速 | | 本地中文 ASR(听懂说话) | ✅ sherpa-onnx + Paraformer-zh;耳机麦 12s 实况语音→出字 0.52s,字字认对 | | 一问一答整链路(听→确认→想→说) | ✅ 2026-09-09 实况:真人说话→女声复述确认→思考 72s→女声答;资源:LLM RSS ~2.5GB、ASR ~0.35GB、TTS ~0.2GB,全程余量 ≥12.8GB,详见 PRD §10.3/10.4 | | 数字人形象(Live2D 会动的脸) | ✅ 2026-09-09 Chromium(kiosk) 全屏画出「日和」,会眨眼/呼吸;整链路实况(真人问→复述→想→带口型作答)也跑通、状态字幕逐段切换;chromium ~0.94GB/~1.6 核;详见 PRD §10.5/10.6 | | 数字人开口(口型对声) | ✅ 同上日:对实际播放 wav 提音量包络+墙钟对齐,驱动嘴型开合,听/想/说字幕随状态切换;声音仍走 aplay 直出。详见 PRD §10.6 | | 快答小模型(Qwen2.5-1.5B w8a8,自转) | ✅ 2026-09-10:自写 LLM 调用层(正确 Qwen 模板 + 短答人设 + 截断保险),整链路闭环跑通。一轮"想"**8~9s**(纯答题 4.6~5.1s)、峰值 2199MB/NPU 52%;同条件比 R1 **快 3.6 倍**且日常答质更好。**⛔ 2026-09-16:双模式取消,`deep` 分支已从 `llm_ask`/`assistant_face.sh`/常驻服务里整体删除,只剩这一种**。详见 PRD §10.8 | | 听不清就重问(音量闸门) | ✅ 2026-09-10:修掉"静音时 ASR 幻觉出中文、模型认真作答"与旧版伪造"你好"的缺陷;录音后先量音量(RMS 静音 0.000015 vs 人声 0.128),没听到就请主人重说,不进模型。详见 PRD §10.8 | | 按键触发 + 开机自启("拔电就能用") | ✅ 2026-09-10:四个 systemd 服务全 enabled(录音通路/状态服务器/全屏展示/按键守护);外接 USB 键盘**空格**触发一轮,热插拔 2 秒内认出并独占。**实测全新重启到小棠自动上屏 14 秒**。详见 PRD §10.9 | | 麦克风增益标定 + 说完自动停 | ✅ 2026-09-10:真凶是**驱动默认把麦克风前置放大器只开到 3/8**(板无 `asound.state`,每次开机回默认),修后 +15dB;**且旧闸门拿"整段平均电平"比阈值,说话一短就被静音稀释误拦**——改成按 0.1 秒逐格数人声。按下空格「嘀」一声提示,说完静 1.2 秒自动收尾(实测 5.2 秒收尾,ASR 3s→2s)。详见 PRD §10.9 | | **真实语音端到端一轮** | ✅ 2026-09-10 16:38 实况:按空格→嘀→说话→**自动收尾 5.2s**→ASR 2s(认出"你好你好…",经本人听录音确认)→复述→快答 6s/36 字→作答,`rc=0` 状态回落待机。分段实测:**录音 5.2s + ASR 2s + 答题 6s**;整轮墙钟已加自动计时,待冷启动验收补齐。详见 PRD §10.9 | | **对话流畅化攻坚(一轮 38s → 20s)** | ✅ 2026-09-11:复述与生成**并行** + 复述话术改短 + 回答上限 24→16 token。并量清剩下 20s 每一秒:`TIMING asr=3s ack=9s llm=9s speak=8s`。**关键发现:ASR 那 3 秒里 2.4 秒是引擎启动费,真识别只 0.4 秒**;**TTS 合成 ≈1.5s 固定 + ≈50ms/字,播放时长压不掉**;**人设文件长度直接决定开口速度**(1463B→首字 2.8s / 270B→0.64s)但砍短人设会崩;**"边想边说"实测否决**(短答场景反而更慢)。详见 PRD §10.10 | | **产品代码入库(可回退)** | ✅ 2026-09-11:建 [`07-板端源码/`](07-板端源码/README.md),48 个产品文件从板上 `adb pull` **原样拉下**(逐字节一致)。此前 38s→20s 提速、VAD 录音改造、展会形态的全部工程**一行都没进版本控制**,现在补上 —— 板子坏了能照这份源码原样重建。详见 [07-板端源码/README](07-板端源码/README.md) | | **LLM 常驻 + 去掉垫话(一轮 20s → 16s)** | ✅ 2026-09-11:① **去掉开口垫话** —— 实测那句垫话自己就要 **10s**(合成 2s + 播放 6s),而模型生成只要 **4.5s**,**它比生成还长、自己成了瓶颈**;去掉当场 22s → 16s。② **LLM 开机常驻**(`llm_ask` 本来已支持常驻、**零新代码**,缺的是"开机拉起并留住"的壳;真正的坑在一对命名管道上,用**读写方式打开** `exec 9<>` 一次解决三个),A/B 实测冷加载 **19s** vs 常驻 **16s**(llm 段 9s→5s),编排层带自动回退、引擎不在也不哑。③ **ASR 常驻算完账决定不做**:3s 里 **2.23s 是模型加载、0.15s 是识别**,而流式自带 0.24~0.48s 固有延迟、对 3 秒短句**反而更慢** —— 不再投入。详见 PRD §10.11 | | **提示词缓存接进产品(首字 2.7s → 0.3s)+ 回答上限 16 → 40** | ✅ 2026-09-12:① **接缓存踩到两个"哑巴坑"** —— 都是**不报错、不变慢、日志还挺好看**那种:预热必须**正好是公共前缀**(多存 4 个字标就会把问题开头吃掉,「你好」的答案从"有什么帮到你的吗"变成"有什么想聊的吗");**刚生成的缓存必须再载入一次才生效**(否则文件建好了、日志也打了,每问还是全量 prefill、首字仍 2.9s)。② **实测走产品自己的管道**:首字 **2750ms → 302ms**,整句 4587 → 2117ms,而**生成段一丝没动**(1837 → 1815ms)—— 印证缓存赚的是"多快开口"不是"多快说完"。③ **顺手修掉一个更早的缺陷:上限 16 太低**。50 句实测 **10 句受影响(20%)**,其中 **5 句断在半句、另 5 句结尾正好是句号、看着完整其实没说完**(这种肉眼查不出来);判断有没有被截断**只能看"结尾是不是句末标点"**,不能看字标数有没有顶到上限。抬到 40 后只剩 1 句,代价很小(平均 17.7 → 21.1 字,**因为上限是"允许"不是"要求"**)。④ **证伪一个自然想法**:"用提示词教她写短"**两次都是反向的**("40 字"→"20 字"反而 19.8→20.3 字;"最多两句话"→"只说一句话"反而涨到 23.3 字、最长 72 字)—— **1.5B 不执行长度类指令**,上限是唯一可靠的刹车。⑤ **必须记下的副作用:缓存是有损的**,10 句里 7 句文字不同(KV 存文件时精度打折,贪心解码在近似并列的字上分叉)。**判定不用处理** —— 两版都是模型自己的输出、没有哪版是标准答案、人设逐条查过没被削弱;但**做实验时要两个进程都不带缓存**,否则分不清差异来自改动还是缓存。详见 PRD §10.13 | | **「想」「说」拆开量到底 → 挖到一枚 2.7 秒的免费筹码** | ✅ 2026-09-11:① **趁手修了两个错口径** —— `ANS_END` 里的 `chars` **其实是字节数不是字数**(9 个汉字报 27,所有"字/秒"结论都要 ÷3);② **「想」= 首字 2.7s(占 60%)+ 吐字 105ms/字**,首字死稳(2.72~2.88s),它就是把 **1463 字节人设每轮重新 prefill 一遍**;③ **「说」= 载入 1.68s + 95.5ms/字合成 + 160ms/字播放,三者串行**(产品脚本实测 19 字→7219ms、9 字→4869ms,与模型吻合),那 1.68s **不是读盘是建会话**(连跑三次不降),**所以预热没用**;④ **「边想边说」实测否决** —— 小棠的回答全是"一整句+一个逗号"、9~19 字,首字后整段只要 1~2 秒就吐完,抢不出东西;**「边合成边播」成立但接入有前置障碍**(现成的 `-play` 按句切分,实测抢回 2.1 秒,但小棠的回答**通篇没句号**;且它走 ALSA `default`=PulseAudio,而产品特意绕开了 pulse);⑤ **意外收获:rkllm 自带提示词缓存**(`rkllm_load_prompt_cache`,`librkllmrt.so` 里确认有实现)—— 把人设的 prefill 存成文件后**首字 2.7s → 0.32s(快 12 倍)、连答五问零衰减、人设一字不改**,「想」整段 4.83s → 2.23s。**坑:必须仍喂完整 prompt**(运行时是"前缀对上就跳过",只喂用户那句会**把人设弄丢、变成通用助手腔**)。详见 PRD §10.12 | > 数字人备注:渲染环境 = 板上 Xorg/Xfce 桌面 + Chromium;状态服务器(python,127.0.0.1:8090,兼静态)、chromium、按键守护与录音通路初始化**均为 systemd 服务并已 enabled,断网可用、开机自启**;当前为软件 WebGL 回退,观感已自然,GL 驱动调优留作优化项。**人设名统一为「小棠」**(现占位素材为官方「日和」)。形象版权:官方示例模型仅限个人/小企业商用,量产形象须自绘或委托。 > > 听音链路备注:本板 3.5mm 孔走「耳机麦」通道(Line 1),板上无内置麦;语音输入需接带麦耳机,或后续结构件内置 4 段式咪头/独立麦克风。听、说、想三环已单点验证并合入整链路跑通,快答链路亦已落地,展会形态(外接键盘空格触发 + 开机自启)已跑通,对话流畅度攻坚完成(**真声一轮 38s → 20s → 16s**)。**「提示词缓存」已于 2026-09-12 接进产品并实测生效**(首字 2.7s → 0.3s,详见 PRD §10.13),同时把**回答上限从 16 抬到 40**(上限 16 时 50 句里有 10 句被截断,其中一半"看着完整其实没说完")。**因此上一版"16s → 13.4s"的预期账要重算**:"想"那一段确实少了 2.5 秒,但"说"那一段因为回答变长(平均 17.7 → 21.1 字)会略微变长,**净账需在真实链路上重量一次,不能直接沿用**。**下一步候选:TTS 常驻 + 边合成边播(约 3.7 秒,是唯一一项完全不碰回答内容、且比缓存还大的提速)**,卡在头文件缺失与播放通路两条(见 PRD §10.12 ⑦ / §10.13 ⑧)。**「边想边说」已实测否决**(小棠的回答全是"一整句+一个逗号"、9~19 字,首字后 1~2 秒就吐完,抢不出东西)。**「说」的产品化也已完成(2026-09-14 晚)**:常驻合成 + 边合成边播 + 逐块口型全部接进产品,**开口前静默 9.4 秒 → 0.79 秒**、「说」整段 20.9s → 10.0s、xrun 全 0,而**产品调用方一行未改**(详见 PRD §10.15)。 > > **产品侧(2026-09-14 主定位变更后重新结算)**:旧的两条待办——"起卦解卦内容质量至今零真实用例"与"人设缺口:问「你喜欢吃什么」她答「我是一个 AI 模型」"——**前者随旗舰功能一起作废,后者已随新产品讲解员人设修掉**(人设里写死了"绝不自称 AI/语言模型/程序",并在 10 问 10 对实测中复验)。**新的最大未验证项 = U 盘导入器尚未开写**;其次是"她照客户资料答得对不对"在**真实产品链路上的复验**(此前只在离线跑过 `llm_ask`),以及屏幕左右分屏的落地。详见 [00 待验证清单](00-文档导航_README.md) 与 [08 内容包格式说明](08-内容包格式说明_交付客户.md) §9。 > 细则、红线与待决议项均见各文档;本仓为文档仓 + 板端源码仓,不含固件/镜像/模型等大文件(清单见 [07-板端源码/README](07-板端源码/README.md) 末节)。