Novel Feedback v8 Audio-Novel TTS Video

有声小说生成:把交互反馈、Qwen 语音、图像与动态视频合成一个闭环 demo。

v8 接着 v7 的 Planner → Frozen Generator → Simulator / Judge loop,但任务改成有声小说生成。不再区分显式反馈和隐式反馈:用户的 comments, likes, favorites, fast-forward、收藏、暂停、回听等行为统一视为 explicit interaction events,再进入 User Simulator 和 Personalized Planner。

Core change from v7

用户交互事件统一视为 explicit interaction events。

v7 讨论 ambiguous feedback belief update;v8 把它落到音频小说产品形态。评论、点赞、收藏、快进、暂停、回听、继续播放都不是隐藏标签,而是用户在播放器中的可观察显式交互。Planner 读取这些事件,输出 Adaptation Brief:故事节奏、声音风格、图像顺序和视频节奏如何变化。

Evaluation status / honest scope

当前 v8 是可复现实验契约与多媒体 demo:尚未完成真实 UserSim / Planner fine-tune。

training_completed = false:公开页面里的 no-train / train-time 曲线是 synthetic simulator-rubric prototype scores,用来展示指标、数据 schema、test-time scaling contract 和 future training pipeline;它们不是来自已训练/冻结的 Qwen3-4B-UserSim 或 Personalized Planner checkpoint,也不是人类评测结果。已经真实完成的是 500+500 JSON 数据构造、Qwen3-TTS 章节朗读推理、三图 storyboard/SVG fallback、前端播放器与回归测试。下一步才是 run real UserSim/Planner training,保存 checkpoint/loss/rollout log 后再发布真实指标。

Story content upgrade

多章真实小说正文:3 章连续剧情,每章约 2000 字,反馈绑定到章节段落。

v8 现在公开 novel_chapters.json:包含《第一章:雨后城墙的密信》《第二章:旧水门下的灯》《第三章:听钟台的白灯》。每章保留正文、3 个 scene beats 和 feedback_bindings;评论、点赞、收藏、fast_forward 都绑定到具体 chapter_idparagraph_id 和原文 quote,Planner 的 adaptation_effect 直接说明下一章如何响应用户反馈。

Data

User Simulator 500 JSON records

500 条用户模拟器记录:每条包含 story_context、audio_context、interaction_events、simulated_feedback、hidden_user_state_after、tts_constraints。它模拟用户如何对有声小说进行评论、点赞、收藏、fast-forward、回听和继续播放。

Data

Personalized Planner 500 JSON records

500 条 planner 记录:输入统一交互事件,输出 Adaptation Brief、candidate_budget、test_time_scaling_trace 和 training_target。user simulator 和 personalized planner 都以 JSON 公开。

Voice

Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice

主语音模型使用 Qwen3-TTS 0.6B CustomVoice Serena 女声(Apache-2.0、多语言含中文),已下载到 workspace 并生成 chapter_audio.wav。页面也保留 MMS fallback voice sample,方便 tiny smoke testing。

Test-time scaling

不训的范式和训的范式都保留。

核心问题是能否实现真正的 test time scaling:随着 candidate budget 增大,Planner 是否能找到更好的 Adaptation Brief / audio directive / image sequence。

No-Train Test-Time Scaling

不训:冻结 UserSim、RubricJudge、Frozen Generator 和 Qwen TTS,只在测试时扩展候选 Adaptation Brief + chapter plan + voice/image/video directives,用 Simulator / Judge 打分并选择 best-of-B。

B=1 no-train0.550
B=2 no-train0.610
B=4 no-train0.660
B=8 no-train0.700
B=16 no-train0.735
B=32 no-train0.748

Train-Time Personalization

训的范式:这部分目前是设计方案而不是已完成训练。计划用 500 planner JSON 做 Planner SFT;用 candidate preference 做 DPO/GRPO;User Simulator 500 JSON 先 SFT,再冻结用于 Controller/Planner 训练。真实训练后同样支持 B=1..32 的 test-time scaling,并把 checkpoint、loss、rollout seed 和 eval logs 一起发布。延续 v7 命名:Qwen3-4B-UserSim 负责模拟统一交互反馈,Qwen3-4B-Controller / Personalized Planner 负责输出 Adaptation BriefFrozen Generator 仍保持冻结以隔离 Planner 质量。

B=1 trained0.600
B=2 trained0.680
B=4 trained0.735
B=8 trained0.775
B=16 trained0.803
B=32 trained0.812

Simulator / Judge split

延续 v7 精炼结构:RubricBuilder 生成 checklist;UserSim 模拟 comment/highlight/dwell/skip/tip/continue/rewrite/satisfaction;RubricJudge 比较上一轮和当前生成;FeedbackAggregator 把 structured reward 回给 Personalized Planner。这里的评价不是静态单输出打分,而是前一章、当前交互、下一章、声音、图像和播放器行为共同构成的 transition evaluation。

Multimedia output

每章小说按照文章内容顺序生成 3 个不同的图(3 sequential images per chapter),no text in images;Qwen3-TTS 生成章节语音;demo 页面以 NetEase Cloud Music style audiobook player 呈现,并用 canvas 组合 dynamic video timeline。生产版可以把同一 storyboard 交给 GPT image2、Qwen3-TTS 与 ffmpeg/MediaRecorder,静态页面则提供可复现 SVG fallback。

Data construction detail

500 + 500 JSON 不是随机日志,而是成对训练/评测 contract。

每条 UserSim record 与 Planner record 可以按 user_id/chapter_id 对齐,形成一轮 audio-novel personalization episode。

Interaction event table

事件粒度包含 commentlikefavoritefast_forwardseek_backpausecontinuebookmark_scene。v8 不再把这些硬拆成显式/隐式两类;对 agent 来说它们都是用户在播放器中主动留下的 explicit interaction events。

User state targets

User Simulator record 中保留 hidden_user_state_before / hidden_user_state_after,用于训练和压力测试:trust、fatigue、pacing_preference、voice_preference、active_expectation 都会随快进、回听、评论和收藏而变化。

Planner target

Planner record 不直接生成小说,而是输出 adaptation_brief:intent_hypotheses、story_directives、audio_directives、image_directives、negative_constraints。它连接 Frozen Generator、Qwen3-TTS、GPT image2 和 Video Composer。

No-train paradigm

不训时,test-time scaling 是候选扩展 + 冻结评分器选择。

不训范式用于回答:没有更新权重,仅靠更大推理预算,能否真的提升下一章有声体验?

Candidate generation

对同一批交互事件采样 B 个候选:不同的节奏解释、线索提前程度、声音停顿策略、图片顺序描述和 negative constraints。B 从 1 到 32。每个候选都生成同样格式的 brief,因此不会因为接口差异破坏公平性。

candidate_b = {
  adaptation_brief,
  chapter_plan,
  audio_directives,
  image_prompts[3],
  video_timeline,
  risk_and_scope
}

Frozen scoring

Frozen UserSim + RubricJudge + FeedbackAggregator 对候选评分。Rubric 在看到候选输出之前由 previous_generation、feedback events、next task 和 story state 生成;Judge 再比较前后 generation/audio/image 的 delta,避免 post-hoc 偏置。

selected = argmax_b ScoreAggregator(candidate_b; frozen UserSim, canonical rubric, fixed seed)

Train-time paradigm

训练时,UserSim 和 Planner 都有独立 500 条 JSON 起步样本。

这不是直接训练小说生成器,而是训练反馈解释、适配简报和候选策略;主 Generator 仍可以冻结。

UserSim SFT

输入 user profile、story/audio context 和上一轮 generation;输出统一交互事件、评论、fast-forward、continue、relisten 和 hidden state transition。它学习用户如何在有声小说播放器里表达体验,而不是学习写小说。

Planner SFT

输入 interaction_summary 和 history state;输出 Adaptation Brief。SFT 学会最基本的反馈解释:哪些评论应该改变节奏,哪些快进意味着设定冗余,哪些回听代表声音或线索被喜欢。

Planner DPO/GRPO

对同一交互事件生成多个 candidate brief,使用 frozen Generator + Qwen3-TTS + Simulator/Judge rollout 得分形成 preference pair 或 group reward,只更新 Planner / Controller,不更新 UserSim,不和 UserSim joint co-training。

Qwen voice backend

Qwen3-TTS 作为主语音模型,MMS fallback 作为 tiny smoke。

你允许用 Qwen 语音模型后,v8 已将 Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice 设为主 voice backend。

Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice

Apache-2.0,多语言含中文。工作区本地下载了主模型与 speech tokenizer,并用 qwen-tts 在 A100 上生成中文章节语音 chapter_audio.wav。这个文件作为 demo 播放源,model card 记录 local_snapshot_path、sample_rate、duration 和 SHA-256。

MMS fallback voice sample

为了保证 demo 在轻量环境也能 smoke-test,保留 facebook/mms-tts-nan 生成的 fallback WAV。报告中明确标注:主模型是 Qwen3-TTS CustomVoice Serena 女声,MMS 只是 fallback voice sample,不是最终中文生产语音。

Scaling diagnostics

如何判断是不是真的 test-time scaling,而不是多采样幻觉。

v8 的 test-time scaling 必须同时看分数、成本、选择稳定性和反事实伤害。

Monotonicity

B=1 到 B=32 的 Planner Utility@B 需要整体上升;若只在某个 seed 上升,则标记为 sampling artifact。报告中同时保存每个 budget 的 candidates 与 selected_candidate,方便复盘。

Cost-normalized return

更多候选会增加推理成本、TTS 试音成本和图像 prompt 评审成本。因此主指标不能只看绝对分数,还要看 Utility per candidate 和 latency per chapter。

Anti-probe harm

用户快进并不总是表示“把所有章节都加速”。每个候选必须过 anti-probe:不要把安静悬念、人物停顿、情绪余韵全部删掉。

Voice stability

Qwen3-TTS 的 voice directive 不能每章大幅漂移。Voice-Preference Match 和 voice consistency 同时进入 FeedbackAggregator,避免为了短期刺激牺牲连续听感。

Failure modes

有声小说比纯文本多了三类失败。

这些失败都写进 eval metrics 和 planner trace,不只是视觉 demo。

Audio mismatch

文本已经适配用户,但 TTS 声线、语速或停顿不符合偏好。解决方式是把 voice_preference、pause policy、emotion level 和 narration/dialogue split 放进 Adaptation Brief。

Image leakage

图像模型可能把章节标题、字幕、水印或 UI 元素画进图里。所有 GPT image2 prompts 都显式包含 no text / no captions / no watermark,并在 Scene-Image Alignment 中加入 visual_text_penalty。

Player-level feedback ambiguity

fast_forward 可能因为设定冗余,也可能只是用户赶时间;seek_back 可能表示喜欢声音,也可能表示没听清。Planner 不能把单个行为硬提交为长期偏好,要保留 risk 和 scope。

Experiment table design

最终论文表格按方法、预算、模态拆开。

Baselines

  • No personalization:固定章节和固定声音。
  • Static profile:只用 cold-start 画像,不读新交互。
  • Raw history prompting:把所有播放器事件拼进 prompt。
  • No-Train Test-Time Scaling:best-of-B Adaptation Brief。
  • Planner SFT:用 500 planner JSON 学适配简报。
  • Planner SFT + DPO/GRPO:用 frozen Simulator / Judge rollout 优化。

Reported columns

  • Audio Engagement Return、TTS-NCFU、Planner Utility@B。
  • Interaction Incorporation Score、Overcommit Rate、Anti-probe Harm。
  • Voice-Preference Match、Scene-Image Alignment、Video Completion Rate。
  • Latency、candidate cost、Qwen TTS generation seconds、image prompt cost。

Formula boxes

音频小说版指标定义

TTS-NCFU = E[J_audio(G(S_t ⊕ ΔS_model), q) - J_audio(G(S_t), q)] / (E[J_audio(G(S_t ⊕ ΔS_oracle), q) - J_audio(G(S_t), q)] + epsilon)
Planner Utility@B = E[max_{c in Candidates(B)} ScoreAggregator(c; UserSim, RubricJudge)]
AER = 0.30*completion + 0.20*like + 0.15*favorite + 0.15*relisten + 0.10*comment_fit - 0.20*fast_forward - 0.10*voice_mismatch
Interaction Incorporation Score = F1(adaptation_atoms_pred, interaction_gold_atoms) - lambda * overcommit_atoms

Reproducibility and deployment

所有展示层都能从同一个 artifact contract 重建。

v8 不把音频、图像、视频和数据拆成互不相干的 demo 文件,而是用 manifest 串起来。

Single manifest

v8_manifest.json 记录 suite id、反馈策略、500+500 数据规模、Qwen3-TTS model id、每章三图、多媒体文件和页面入口。任何训练脚本、前端播放器或论文表格都先读 manifest。

Storyboard first

video_storyboard.json 是 video contract:章节音频、三张图、每段 start/end 秒数、motion cue 和 no_text 约束都写清楚。GPT image2 或 SVG fallback 只是不同渲染后端。

Public-safe assets

公开站点只放 compact JSON、demo WAV、SVG fallback 和说明页面;Qwen 模型权重保留在 workspace-local model snapshot,不复制进 public,也不在页面中泄露任何 Hugging Face token。

Artifacts

公开 JSON / audio / image / video storyboard