laohan-laowai
老外博主复刻→数字人→抖音视频全流程总控(含调用 laohan-yinse)。从"选一个外国博主"到"数字人视频发布"的端到端自动化流程:博主选型与资料包下载→声音模型(服务器微调,硬性前置,调 laohan-yinse)→形象素材处理(字幕检测/裁剪/硬门槛)→same-voice 同声口型本地工具链(pro6000-a 音色合成+TBDub 口型)→双语字幕后期→发布与流量复盘。Use whe
SKILL.mdlaohan-laowai/SKILL.md
GitHublaohan-laowai — 老外博主复刻数字人全流程
使命与合同
用选定形象、专属音色与教育/文化内容制作数字人口播。本skill是七阶段总控,本机/服务器CLI自动化,不走网页向导;确需基础素材时才按项目授权调用产品API。首个Deborah/海思博士案例是历史实例,当前形象/稿件/接受状态以各项目STATUS为准;用户当前指令和项目合同优先于本skill。
七阶段流程
先分流再执行:按稳定的博主/形象身份查项目声音资产登记。同一博主后续视频默认复用同一个已选模型版本;换集数、稿件、服装、场景或参考风格不等于新博主,也不触发重新训练。已有形象素材先核本期适用性,不强制重下载整套训练素材。新博主缺模型才从①/②首建;有备份但运行目录缺失时恢复组装,不重新训练。详细分流与依赖核对见 yinse 第0步。
① 博主选型与资料包
- 选型标准:教育者可信度 > 第一视角口播形态(talking head,非 vlog/skit/旁白)> 数据 > 类型差异
- 下载 5-8 条视频(laohan-xiazai:TikTok 用 yt-dlp 直下)+ info.json 元数据
- 口播形态逐帧验证(抽帧+视觉模型确认正脸对镜头说话;抽帧落在无字幕间隙≠干净,必须多点验证)
- 选定博主不等于肖像/音色使用权、学历与亲历陈述已核实;不能以“改用虚构姓名”或“尚未商业化”宣称这些问题已解决。按项目合同核身份/来源/使用范围,不冒用真人身份、履历或接受记录。
- 换/加博主同步当前项目的素材追踪清单;素材数量与历史流量只作取样依据,实际可用性需本期核验。
② 声音资产(已验模型为前置,默认复用)
调用 skill laohan-yinse 第0步:先核本博主既有模型版本、权重SHA、底模/配置、参考音频及逐字文本、原验收证据。可用则直达第7步生成本期配音;需恢复则只恢复同一模型。确无已建模型才按8–10分钟净语料→服务器微调→回迁/登记/验收首建。重新训练或切换默认模型须有具名原因与负责人明确决定,新版本另存,不覆盖已选版和回滚资产。
③ 形象素材处理
- 分清入口限制:竖版/短边≥720/时长≥8秒/≤30fps/MP4/<200MB是历史产品资产上传要求,不能当当前same-voice CLI的通用硬门;确需产品上传先读该产品现行合同。same-voice按当前工具核输入与几何,prepare转25fps并保持源画幅;原生清晰度、正脸/嘴部可见、字幕/遮挡与连续画面由本期视觉检查裁决,不靠升采样冒称细节达标。
- 不把产品上传门当same-voice适配验收:576宽可通过本机prepare不证明TBDub实际效果;720宽也不证明全程无字/无遮挡。连续检查并先做已授权小样,不能拿几张无字截图保证整段干净。
- 字幕必须去除(会被引擎复制进成片):博主视频普遍带字幕 → 底部 crop 或换无字幕条;多点抽帧验证(首/中/尾/多段)
- 转码H.264、保存clean素材和剪辑边界/SHA;项目方法入口按项目INDEX读取,不恢复旧
docs/dh-production-guide.md根路径。
④ 形象与声音资产(复用已有素材,不走产品注册)
- 形象素材:已有博主视频直接复用(prepare 前多点抽帧验证全程同一正脸;开头 B-roll 插入画面必须掐掉——见⑤坑)
- 声音:laohan-yinse 微调模型整稿合成(见②调用,24kHz PCM16 WAV 由 yinse 第 7 步产出)
产品 avatar-assets/voice-assets API 注册已淘汰(2026-10-28):那是产品网页向导链(零样本参考录音+29积分/次渲染),与本 skill 的 same-voice 路线互斥,且违反"声音不走零样本"红线。历史踩坑记录(MIME 显式 type / consentVersion=voice-reference-v2 / loudnorm 电平门禁)仅当未来确需产品链时参考。
⑤ 同声口型渲染(DH-ROUTE 路线④,2026-10-28 实战验证——唯一正确流程)
方法真源:~/Documents/laohanvideo/motion/mastery/DH-ROUTE.md + motion/tools/README-same-voice.md(本节只是入口索引,冲突以真源为准)。
DH-ROUTE是Jeffrey/Motion项目的方法;本项目借用同声工具、时钟与资源保护,不继承其v3-05、历史首单验收/发布、Motion接入状态或提前候选授权。当前博主用自己的已验模型,本期输入/接受/发布仍看本项目合同与STATUS。以下motion/...命令从~/Documents/laohanvideo根执行,本项目音频/形象/输出均用真实绝对路径,不在当前内容项目臆造motion目录。
不走的路(都验证过不是正路):产品 lease/operations 报价链(29积分/次,网页向导已淘汰)、ispeech 图+音频(另一条产品链)、直控生产 worker。
① 最终 WAV:音色模型在 pro6000-a 合成整稿(laohan-yinse 流程)→ 24kHz 单声道 PCM16
② 形象素材:已有素材直接复用(无需产品订单)
③ Mac prepare:python3 motion/tools/same-voice-local.py prepare \
--audio <24k.wav绝对路径> --avatar <形象.mp4绝对路径> --max-input-frames <本期已核上限> --out <全新目录绝对路径>
④ validate manifest → 上传 manifest/inputs/chunks/run-same-voice-remote.py 到
pro6000-a:/root/autodl-tmp/laohan/motion-same-voice/<小写实验名>/
⑤ 预检(无 --run)→ 真跑:--run(total_timeout 3600s,单块 480s 上限)
⑥ Mac assemble:same-voice-local.py assemble → same-voice-candidate.mp4(原 WAV 主声)
坑(全部实战踩过):
- ★形象素材开头可能是插入 B-roll(案例画面)——prepare 前多点抽帧验证全程同一正脸;mediapipe 丢脸 >10 帧直接 RuntimeError(chunk-001 判例:开头 5 秒小女孩 B-roll)
- ★生产活动保护触发即保存STOP现场。仅旧执行者及子进程组退出、检查点SHA/原基线/原范围/原截止均满足时,才按README显式恢复一次;生产基线改变不能用resume重置,更不能换目录无限重试同一失败块。
- 音频必须24k单声道PCM16;分块上限在11—300内按本期几何/算力已核条件选择并记录。180仅是pro6000-a/1080×1920的历史参考,不保证其他几何内存安全;不提高20GiB等冻结阈值、不改已运行manifest绕过恢复约束
- 冻结SHA对象是安全模块
/root/autodl-tmp/laohan/motion-method-v2-20261019/run-isolated-pilot.py,须等于469d820e11e5b89820a2c3874c08553ed83dfb8cb18952bbc20dd83b4b471487。本次上传的run-same-voice-remote.py另记实际SHA,不能拿469d当其文件SHA或编造校验参数 - 完成证据:assemble产物全帧数与清单相符,ffmpeg完整解码无错误(ffprobe只核元数据/帧数);状态为候选待连续复看与Jeffrey接受。
Motion模板包装、字幕与BGM按本期已核交付范围执行。只交口型样片时不擅自扩为模板项目;需要完整Motion包装时再加载V4/PIPELINE及其生产门,不能把口型机械通过当模板或全片验收。
⑤.4 音频听审卡点(2026-10-28 补录)
⑤ 的 prepare/推理启动前,最终 WAV 必须已过 Jeffrey 整轨听审(听感不过→回 yinse 第 7 步调整重合成,不进推理浪费 GPU)。
⑤.5 成片统一加速(老方法既有项,2026-10-28 补录——别漏)
倍率按本期确认;未选档不自动套1.05/1.10。先查Motion交付链或其他上游是否已应用speed,记录来源与累计倍率,只在一个明确阶段应用一次。下面仅用于音画已对齐且同起点的输入,不用各自归零掩盖原有偏移;它是派生示例,不是免测的同步保证:
ffmpeg -n -i <成片>.mp4 -filter_complex "[0:v]settb=AVTB,setpts=(PTS-STARTPTS)/<S>[v];[0:a]asetpts=PTS-STARTPTS,atempo=<S>[a]" -map "[v]" -map "[a]" -fps_mode vfr -enc_time_base:v filter -c:v libx264 -crf 22 -c:a aac -b:a 128k <加速版>.mp4
# S 常用 1.05(微紧凑)/1.10(抖音节奏),音高不变;首期 Jeffrey 选档后每期固定
# 输出帧率策略还须满足本期交付合同;需要CFR时另核帧取整与首尾偏移,不把vfr当平台通用要求
# 单独atempo声音而不调整画面会破坏原唇音时钟,不用来冒充同因子派生
加速版是新派生:记录倍率、输入与输出SHA、A/V起点与时长;外置字幕/词锚先按倍率换算,再对派生实际音频复核,不能只凭理论除倍率。已烧录字幕随画面变速,不再重复施加倍率;若实听词锚错位则重制字幕。atempo也可能改变局部边界,重跑受影响的听感、首末词、唇音/累计偏移、接缝和机械门,通过后才可复用原推理结果;不过则保留原速或另做有证据的修正,不以同因子免验。原WAV作为来源保留,不宣称加速后音轨与其逐样本一致,不直接沿用旧SRT。
⑥ 后期
- 字幕:中文大在上、英文小在下(同屏成对;英文口播,中文主读、英文辅读)
- 字幕先看本期实际画面再排:按语义切短句;字体/颜色/底条是本期设计选择,未获接受的样式不得写成通用“美观公式”。只改字幕时,用本期已核无字幕底片本机另存新候选,直接复用原音轨及口型时钟;保留旧片、原音轨、模型与回滚资产,不重复训练/口型、不进入模型清理。
- 抖音遮挡检查:整块字幕须避开底部标题/文案/账号/导航与右侧互动栏,并避开人物嘴部;按字形、描边、阴影及底条/背景框(如有)的完整视觉边界检查。同屏中英之间也检查实际字形间距,只测合并外框不能证明内部不叠字。分别实看中文/英文最长实际条目、各自多行条(如有)及不同背景,不能只核MarginV或首帧;没有多行记不适用,不为检查强造两行,三行过密/相撞/超界时先重分句再测。优先核当前平台/剪辑器的实际预览;只能用自定遮挡模拟时,标明模拟尺寸与假设,不能把经验像素说成官方通用安全区或保证所有机型不挡。字幕样片仍交Jeffrey接受。
- BGM按本期要求选择并避让人声;违规检测绑定当前稿与当前版本,不复用其他批次CLEAR。
- AI平台声明与片内水印分别按当前项目合同、Jeffrey最新明确指令及适用平台要求核对;不因skill的历史例子自行改开关或宣称覆盖所有项目合规条款。包装/字幕仅在本期要求范围内执行。
⑦ 发布与复盘
- 抖音账号注册、养号与发布时间由Jeffrey主导;不把“养号2–3天”当平台硬规定或流量保证。账号装修按本期已确认人设,不自动搬用旧专家履历。
- 数据:opencli douyin stats/videos 拉取;10 条内决策点(引流款 vs 人设款占比调整)
- 发布前单独核:目标账号身份/登录态就绪、当前项目要求的片内AI标识与平台声明已核、当前候选的发布批准明确。只记账号标识/就绪结论,不归档凭据;缺项只阻发布,不把内容接受冒作发布许可,也不阻无关素材准备
完成证据(四道质量门,源自 Jeffrey 声音方法 v2.2,缺一不可)
① 听感门:本期最终WAV绑定SHA且Jeffrey整轨听审通过,之后才做口型;② 唇音同步门:连续播放复看口型、节奏与接缝;③ 机械门:帧数/时钟一致、ffmpeg完整解码无错误、响度实测,ffprobe只负责元数据;④ 成片接受门:Jeffrey看片明确接受。候选可在技术检查后交看片,发布批准另按项目合同处理,不把机械绿、候选交付或片子接受冒作已发布。
声音绑定与登记纪律(DH-ROUTE §五,2026-10-28 补录)
- 每期声音记录绑定完整 WAV 的路径/SHA/采样数/实测时长/听感接受记录;ASR、字幕、口型、后续混音共用本期绑定,新稿必有新 WAV
- 候选 ≠ 验收:听审PENDING只能登记声音试听/文档候选,不放行本项目prepare或口型推理;最终整轨听审与本期SHA绑定后才交口型,接受后记录真实结论,不挪用参考项目的历史提前候选授权
故障诊断顺序(源自声音方法 §4,补录)
- 口型跟不上/错位 → 先查音轨再重合成:①核成片音轨=本次 WAV(时长/身份)②查时间轴 PTS 偏移(管线侧问题)③确属语速问题才回重合成(换沉稳参考+重过听感门)
- 音色不像 → 核风格路由 → 换相邻风格对比 → 仍不像报 Jeffrey(触发重训评估)
- GPU准入/止损(与生产共卡):合成前显存>10G;卡>5分钟或生产桥报错→按yinse任务启动收据重新核PID/PGID、命令与cwd,只停已核本任务独立组并确认退出。无法核归属则保留现场报告;不按进程名批量杀、不动生产bridge/服务、不盲重试
- 凭据零入档:lease/token 只存在于运行时内存与既定凭证文件,不写进 skill/项目档案/git
反触发(不用本 skill 的场景)
- 真人实拍/老韩本人出镜项目(走 laohanvideo 真人路线)
- 只做选题/文案/装修(单一环节走对应 skill:chuangzuo/weigui 等;本 skill 是复刻数字人全流程总控)
- 声音模型单环节细节(进入 laohan-yinse,本 skill 只在②处调用它)
失败路径
- 声音模型未建成 → 全流程停在②,不跳过训练直接渲染(零样本已被禁用)
- 形象素材字幕去不净/硬门槛不达 → 换素材条或重新选型,不降门槛上传
- 渲染链失败 → 按DH-ROUTE/README保留失败现场、原预算和检查点,执行其有限恢复条件;不得新增“再试三次”、换目录清零失败次数或退回网页/产品链绕路。
- 验收不过按原因回退:画质/遮挡等视觉问题回本期素材候选;音色/自然度回yinse核数据、模型和参考;口型问题先核音轨身份、PTS和接缝再决定重算。保留原STOP/预算/检查点,不一律换人、不硬发
关键红线
- 正式声音必须本博主服务器微调;基模仅作同条件A/B基线,不进正式WAV/口型交付,不据此调用产品零样本绕路
- 当前同声路线用本机/服务器CLI,不退回网页向导;基础素材API须另按项目现有授权
- 不冒充真实存在的人(虚构人设身份)
- pro6000-a 是生产算力机:训练限 cosyvoice-train 目录,不碰生产进程
- 当前用户与项目合同优先;历史案例不授权更改平台声明、片内标识或覆盖安全/验收要求
素材资产清单(每个博主资料包标准结构)
assets/
persona-candidates/ 原始视频(形象候选)
upload/ 形象上传母版(无字幕/达标)
voice-training/ 声音素材(逐条 WAV + 拼接主素材)
voice-models/ 长期声音资产:已选权重、回滚版、参考音频/文本、配置与voice-asset.json
benchmark/ 对标视频库+转录
docs/
INDEX.md 按当前项目索引进入人设、脚本、运营;不假定旧根路径仍有效
清理临时产物,保护长期声音资产
- 本地与服务器一体核对,先读项目存储规则和本博主
voice-asset.json。模型是跨期资产,不是本期垃圾:已选权重、明确保留的回滚版、参考池WAV/逐字文本、配置/底模版本依赖、合成入口与验收/来源/SHA登记均长期保留。存于data/、exp/、model-*或任务runtime内也不改变其保护身份;未完成验收的候选按待裁决状态保留,不因“尚未接受”就删。 - 后续仍用的服务器推理目录继续保留复用,不执行“回迁完即删服务器副本”。确要撤下该副本,须先核本地完整归档及SHA、在目标环境恢复加载与短句合成通过、默认模型路径已切换且原路径不再被脚本/登记/在途任务使用;只有文件存在或复制成功不满足条件。最后可用副本、参考对或必要配置不得进入过程清理。
- 仅对已终结且无消费者的本任务临时包、可重建特征、已不再消费的口型缓存、冗余检查点等逐项计划清理。禁止按通配符或整目录清
data-*/model-*/exp//runtime;父目录内有保护资产或依赖即排除,内部链接也先核恢复用途。按项目既有 guard 的 plan→复核→apply 与逐项回执执行,不用裸rm绕门。 voice-asset.json是执行者必须读取的资产登记,不冒称现有 guard 已自动解析它;自动清单范围内的保护项须另登记为非 temporary/checkpoint 的保护类型并保留消费者,范围外资产不得为纳入清单而扩大删除根。无法核完整依赖或安全归属时停止该项清理,不以重训兜底。- PAUSE 等协调文件只有本任务拥有且已无协调用途才释放;不动其他工作线、共享底模/环境、生产服务或他人资产。正式弃用模型另按明确授权处理,不随每期收尾删除。
服务器协作判例(2026-10-28 实战,pro6000-a)
- 网络/worker故障须由具名生产维护任务处置;内容制作不得据历史判例重启worker或结束其它工作线进程。只读核实并让路,只能回收本任务已核身份的离线进程组。
- resume基线变化是保护条件,不能当成“脏了就换目录绕过”。保留原STOP/基线/次数;生产空闲且旧执行者已退后,确需继续时由root按README显式登记尚未计算范围的新有限阶段,不伪造旧阶段成功。
--expected-checkpoint-sha256是batch-state.json文件本身SHA;内存增量或生产活动保护触发时不提高阈值、不盲重试、不清全局缓存。- 该SHA在服务器只读运行
sha256sum <本次实验绝对目录>/outputs/batch-state.json取得;不是模型权重的checkpoint SHA,也不是manifest SHA。保留原STOP文件不改字节,runner会再次核同一文件与真实成功回执 - 分块断点:从真实batch-state读成功范围。仅已成功0—16块、未算第17块时,零基左闭右开
--start-chunk 17 --end-chunk 18才表示18块中的最后一块;它不另授恢复/续时权限。按README核原预算/范围/恢复或显式新有限阶段条件;assemble用--additional-outputs合并,消费旧STOP的成功前缀还必须显式--include-verified-stopped-prefix,逐块核成功退出回执/SHA/几何/帧数,失败块不接纳
kb78769 全链实战判例(2026-10-29 首期出片)
本次环境的排障记录,不是跨输入/机器的最优参数或耗时保证。同一博主下期优先复用已建资产,不重跑首建流程;不得承诺素材30分钟、训练70分钟、字幕20分钟或口型必定一次成功。
素材判定(Qwen听感不可信,用信号法)
- Qwen2.5-Omni-3B 的 music/reverb 判断不可用(校准集实测:加明显合成音乐报"no music"、自然声全报 echo uncertain)——语言模型听感≠声学仪器,只当第三路 ASR 参考
- BGM 判定信号法三步(numpy+soundfile 即可,判据透明):①源级停顿残留(帧RMS低于floor*1.5且speech-20dB 的帧)②最深停顿 dBFS 接近干净底噪(-49~-60)=否定恒定BGM;③响停顿(>-38dBFS且≥0.3s)总数<1s=否定间歇BGM。残留高但无节拍=高增益词隙尾音,不是音乐
- 转写终稿=Whisper基准+双ASR词级diff+语境裁决(SenseVoice 分词伪影 navaro/fuckinguck 系统性不采;W 把 spaces 听成 's faces 这类靠 S+Q 2:1 纠)
- 孤立环境声(0.3-0.4s)直接弃段不微裁——总量够时弃用优于精修
训练(pro6000-a)
- 入口必须
launch_voice.py pipeline --run --timeout 3600(直接 pipeline --run 会被 STOP);远端 python 用绝对路径/root/autodl-tmp/cosyvoice-train/venv/bin/python(非交互 PATH 无 python3) - 首次组装须区分训练checkpoint与推理权重:训练件含 epoch/step 时另存剥离副本,并登记两份SHA;不原地覆盖训练原件。已有可用推理包直接复用,不为每期重复剥离/新建模型。
- retention 已接线(train-kb78769.sh: single_worker→train_with_retention→train.py);60段555s 14epoch 实测约70分钟(GPU被抢时会拖30倍)
- 同任务避免重复训练:先核其他工作线的实际任务与资源归属。campplus speaker embedding相似度仅作A/B辅助比较,不替代Jeffrey盲听、本期整轨听审和成片接受,也不因相似度高自动批准模型或新WAV。
口型(same-voice)
- 本次180帧分块触发RAM门,120帧配置完成23块;仅作本期输入/负载的参考,下期重新核几何与资源,不能保证一次跑通。
- 本次曾处理 sample.pkl/file cache;这些是处置记录,不是通用清理授权。缓存仅在任务终结、无恢复/组装消费者且有释放证据时按项处理;共享生产机不自动制造大内存压力或清全局缓存绕过RAM门。
- resume 每批次限一次(attempt==1);再挂=全新命名空间+
--start-chunk/--end-chunk有限范围,assemble 用--additional-outputs - assemble 前上传三件套别漏:manifest.json + inputs/voiceover.wav + chunks/(scp 多文件+tail 截断会漏看错误,传完 find 数文件数)
字幕与成片(Mac 本地)
- brew ffmpeg 9 无 libass(subtitles/ass/drawte 全被砍),远端 AutoDL ffmpeg 也没有;
brew install ffmpeg@7(keg-only,用全路径/opt/homebrew/opt/ffmpeg@7/bin/ffmpeg) - zsh 坑:滤镜参数含
=用引号包整串(-vf 'subtitles=/path');-vsync已废弃改-fps_mode vfr - 字幕时间轴用全局词流对齐:whisper word_timestamps 词流 × 文案句表(逐句中英对照)做 SequenceMatcher 全局对齐——单锚点 fallback 会连锁错位(thirteen 被识成 13 就脱轨出 7 秒 gap)
- 首期黄字黑底v2仍被Jeffrey否决且字幕偏低;该样式不是已接受模板。后续按⑥的短句/实际字形边界/抖音遮挡检查试排,不固定套用该配色与MarginV;若长句溢为三行或中英相撞,须重新分句与复核时轴,不能仅缩字塞满底部。
- 加速是
setpts=PTS/SP(SP*PTS是减速反方向);Jeffrey 本期定原速为标准,加速档出对比不默认 - AI 视觉质检会误读形近字(十岁→七岁),对照原文复核再信
交付
- 成片推飞书:
node ~/.local/share/github-digest/push-feishu.mjs "文本" 附件.mp4(单附件,多版分多条) - 每期结束后按「清理临时产物,保护长期声音资产」节逐项处理本地/远端临时产物;先保护模型与参考依赖,输出仍有验收/恢复用途时保留。