欢迎光临
我们一直在努力

【SenseNova U1.5 Lite 实战】少儿外教培训场景下的AI情景对话工作流——从出图、配音到离线绘本的完整落地

在这里插入图片描述

How are you? I’m fine, thank you.

惊不惊喜,意不意外?

这就是每个中国人从小学会的内容,而我们的孩子们还要继续学。

索性我们现在就拿SenseNova U1.5 Lite搭一个工作流,生成agent智能体轻松搞定,把它做成语音绘本岂不美哉?

目录

  • 前言介绍
  • 一、业务痛点:外教课上完了,孩子回家就忘
  • 二、为什么要选 SenseNova U1.5 Lite(而不是 SDXL / Midjourney)
  • 三、工作流全景:从教学需求到可分发绘本
  • 四、核心设计
    • 4.1 场景配置层:教师友好的数据结构
    • 4.2 出图模块:SenseNova U1.5 Lite API 调用
    • 4.3 TTS 配音模块:双引擎 + 音色降级链
    • 4.4 PIL 排版模块:对话卡自动渲染
    • 4.5 HTML 绘本打包:base64 内嵌实现离线分发
    • 4.6 ComfyUI 自定义节点:让设计师也能用
  • 五、实操演练
  • 六、SenseNova U1.5 Lite 模型调用过程全解析
  • 七、测试实验(6 组对照实测)
  • 如何一键复现
  • 环境速查
  • 在少儿外教培训场景中的延伸应用
  • 结论:AI 工作流让教学材料生产从"周"缩短到"分钟"
  • 仓库 / Workflow 链接

前言介绍

说一下我这个参赛作品: 本文是以少儿外教培训机构为应用场景,基于 SenseNova U1.5 Lite多模态大模型,我搭建了一条"AI出图 → Edge-TTS双角色配音 → PIL自动排版 → 离线HTML绘本"的完整工作流。

我的想法是:英语启蒙教师要想让活泼好动的低龄小孩子认真学很困难,有了我这个开发的模式,只需去维护一份 JSON 场景配置,我们就可批量生成带情景对话、真人发音、可点击交互的英语启蒙卡片,很方便地直接用于课堂教学和课后复习。而且我的全部代码已开源,一键可运行的。

实践内容记录如下:

一、业务痛点:外教课上完了,孩子回家就忘

在少儿外教培训行业呆了几年,我发现一个普遍存在的问题——

外教课上,老师带着孩子说 “Good morning”、“How are you”,课堂气氛往往总是很热烈。但是小孩往往一回到家,家长问"今天学了什么",孩子要么说不出来,要么只会蹦几个单词。根本没记住,而且他们自觉性还没有养成,也不愿意主动去学去记忆。

核心原因不是孩子记性差,而是缺少"情景复现"。

所以需要有好的引导方式。

传统教材的解决方案是课本+点读笔。但点读笔的问题是:

  • 没有画面感——孩子只听到声音,看不到"谁在什么场景下说这句话"
  • 角色单一——只有一个声音在念,没有"对话感"
  • 更新成本高——每套教材录制周期长,无法快速响应教学进度
  • 我需要的是一种工具:它要是能快速生成"两个角色在具体场景中对话"的图文+音频材料,让孩子回家后看着图、听着音、跟着读。这刚好可以利用SenseNova U1.5 Lite的多模态文生图功能。

    所以,这就是我用 SenseNova U1.5 Lite 搭建这条工作流的起点。

    二、为什么要选 SenseNova U1.5 Lite(而不是 SDXL / Midjourney)

    做少儿教学材料,对图像有一个非常核心的要求:必须画出"角色的互动对话"的画面。

    这不是随便一个模型都能做到的。我做过系统对比:

    模型中文Prompt理解双角色对话感出图速度成本
    Midjourney v6 弱(中文prompt几乎无效) 差——经常画成"两只动物各看各的" ~15s/张 $10/月
    SDXL 1.0 + ControlNet 中等 一般——需要精细调参才能出对话感 ~30s/张(本地A100) 硬件成本
    DALL-E 3 中等——对话感不够自然 ~20s/张 $0.04/张
    SenseNova U1.5 Lite 强(中英双语原生理解) 好——相视而笑、挥手、肢体互动 ~22-28s/张(API) API免费额度

    SenseNova更胜一筹。 OK,就你了!

    我首先去网站完成注册使用: 请添加图片描述 可以看到我作为新用户的免费用量额度是充足的。

    三、工作流全景:从教学需求到可分发绘本

    下面这张图是整个工作流的过程,我把它拆成 6 个模块,每个模块都是独立可替换的。 在这里插入图片描述

    我的整体工作思路是这样的:

    本项目面向少儿外教培训场景,围绕"情景对话教学材料自动化生产"的需求,基于 SenseNova U1.5 Lite 搭建了一条四阶段工作流。

    第一阶段,授课的老师输入教学场景,包括角色描述、对话句、场景设定、讲解要点等,以 JSON 数据结构存,工作流自动将场景配置转换为提示词,调用文生图 API 生成双角色互动插图——利用 U1.5 Lite 对"两个角色相视对话"这类空间关系指令的高遵循度,确保画面呈现教学所需的"对话感"。

    第二阶段,利用Edge-TTS 为每个角色生成独立音色的真人发音音频。

    第三阶段,PIL 将插图、对话气泡、中英标题、老师讲解框自动排版为成品对话卡。

    第四阶段,所有图片和音频 base64 内嵌为单个离线 HTML 文件,可直接通过微信、邮件分发给学生。教师只需维护场景配置,即可批量产出任意主题的教学材料,将传统需要数小时的材料制作压缩到分钟级。

    最主要的是SenseNova U1.5 Lite 的 NEO-unify 统一架构 同时支持文生图和图像编辑,这样的话我可以在同一张图上做"换背景"、"加角色"等二次编辑,而不需要切换模型。

    这条工作流的核心在于:

    教师只需简单填写操作界面,完成 SCENES 配置(一个 JSON 文件或 Python dataclass 列表),就能批量生成任意主题的情景对话材料——问候类、礼貌类、数字颜色类、生活场景类,边际成本趋近于零。我认为这对工作流的连续性至关重要。

    搞清楚这些后,技术选型思路如下:

    功能模块技术引擎选用理由
    出图 SenseNova U1.5 Lite (8B) 单卡可跑、原生 4K、中英双语理解强、双角色对话感好
    对话/讲解 SenseNova 6.8 Flash-Lite 写中文讲解、走 OpenAI 兼容协议,可自动生成 teacher_notes
    配音 Edge-TTS (en-US-Neural) 真人音色、免费、儿童音色丰富、支持降级策略
    Agent LangChain 1.x 把"出图 + 编辑 + 写讲解"封装为 Tool,可自动编排
    ComfyUI 标准节点包 教学设计师可直接拖拽,零代码使用
    Web UI Flask 单文件 380 行、无前端构建步骤
    离线分发 单 HTML + base64 无需服务器、无需联网、微信/邮件/U盘直接分发

    四、核心设计

    4.1 场景配置层:教师友好的数据结构

    请添加图片描述

    每个教学场景用一个 Scene dataclass 描述,字段设计完全对齐教学逻辑:

    @dataclass
    class Scene:
    id: str # 场景唯一标识,如 "greeting_morning"
    title_en: str # 英文标题,如 "Good Morning!"
    title_zh: str # 中文标题,如 "早上好!"
    speaker_a: str # 角色A的视觉描述(给SenseNova出图用)
    speaker_b: str # 角色B的视觉描述
    line_a: str # 角色A的台词
    line_b: str # 角色B的台词
    scene_setting: str # 场景环境描述(给SenseNova出图用)
    teacher_notes: str # 老师讲解内容(发音重点、用法说明)
    follow_up: str # 跟读教学设计
    question: str # 课后小问题
    voice_a: str # 角色A的TTS音色
    voice_b: str # 角色B的TTS音色

    教师只需填写这个结构,工作流会自动完成出图、配音、排版、打包的全部工作。这意味着一个不懂代码的外教老师,只要会写 JSON,就能生成自己的教学材料。

    4.2 出图模块:SenseNova U1.5 Lite API 调用

    请添加图片描述 代码如下:

    def _build_scene_prompt(scene: Scene) > str:
    """将教学场景转换为 SenseNova 出图 prompt。"""
    return (
    f"{scene.speaker_a} and {scene.speaker_b} in {scene.scene_setting}. "
    f"The two characters are facing each other, smiling, with friendly body "
    f"language — one is waving or extending hand. {STYLE_PROMPT}"
    )

    这里有一个设计我认为很关键:

    prompt 模板中强制要求 “facing each other, smiling, friendly body language”。

    这是经过 20+ 次测试总结出来的——加上这句话后,双角色互动成功率就会从大约 50% 提升到了 85% 以上。

    画风常量 STYLE_PROMPT 统一控制风格:

    STYLE_PROMPT = (
    "Children's picture book illustration, warm pastel colors, "
    "rounded soft shapes, large expressive eyes, "
    "friendly and educational tone, "
    "no text in image, no watermark, "
    "4K, high detail"
    )

    4.3 TTS 配音模块:双引擎 + 音色降级链

    请添加图片描述

    这是整个工作流中踩坑最多的部分。这次实践我还有一个有趣的结合: 除了绘本插图生成外,还创造性地增加上了声音导读功能,小孩子需要听才能记得更牢固。

    所以:不只是"出图",而是"出图+出声"。

    传统 AI 出图工具止步于静态画面,但少儿外语学习的核心痛点是"回家没人带读"。我的解决方案是在工作流中嵌入了一个双角色 TTS 配音引擎——

    为每个对话场景分别生成角色 A 和角色 B 的独立音频,音色选型直接对应教学角色:女童用 en-US-AnaNeural(温柔)、外教用 en-US-MichelleNeural(标准清晰)。

    我的最终产物 HTML 绘本支持点击图片自动连读 A→B(间隔 400ms 模拟真实对话节奏),键盘翻页,空格键触发睡前连读模式。

    孩子打开浏览器就能"看着图、听着音、跟着读"——从而把 AI 出图从"视觉工具"升级成了"沉浸式语言学习环境"。我觉得这是 SenseNova U1.5 Lite 在教培场景中一个很有意思打差异化的落地实践。

    def synth(text: str, out: str | Path, voice: str = "en-US-AnaNeural",
    rate: str = "+0%") > Path:
    """同步接口:先尝试 Edge-TTS,失败再降级到 pyttsx3。"""
    for engine in ["edge", "pyttsx3"]:
    try:
    if engine == "edge":
    _edge_tts(text, out, voice, rate)
    if out.exists() and out.stat().st_size > 1000:
    return out
    elif engine == "pyttsx3":
    _pyttsx3_tts(text, out, voice)
    if out.exists() and out.stat().st_size > 1000:
    return out
    except Exception as e:
    continue
    raise RuntimeError(f"TTS 全部引擎失败:{text[:60]}")

    为什么需要双引擎? Edge-TTS 的在线真人音色质量很好,但微软的服务偶尔会返回空音频("No audio was received" 错误)。

    我设计了一套三级降级策略,来应对 Edge-TTS 偶发的静默失败。如果主音色失败自动切换备选音色,每个音色重试 2 次,然后加指数退避,全部失败才回退到 pyttsx3 离线引擎。

    实测结果:8 段配音全部使用 Edge-TTS 真人音色,单段大小 70-120KB,音质清晰自然。

    4.4 PIL 排版模块:对话卡自动渲染

    请添加图片描述 最后要把每次SenseNova生成的精美图片做成有趣好玩的卡通单元式的学习卡片,激发孩子的兴趣,渲染生成卡片的代码如下:

    def render_scene_card(scene: Scene, base_img_path: Path, out_path: Path):
    """将原始插图渲染为成品教学对话卡。"""
    img = _crop_watermark(
    Image.open(base_img_path).convert("RGB")
    ).resize((1024, 1024))

    # 创建 1280×1600 画布,米色背景
    canvas = Image.new("RGB", (1280, 1600), (252, 248, 240))
    canvas.paste(img, (128, 80))

    d = ImageDraw.Draw(canvas)
    # 标题区:英文大标题 + 中文副标题
    _draw_text(d, (128, 1216), f"🎨 {scene.title_en}",
    f_title, fill=(28, 36, 56), emoji_font=f_emoji)
    d.text((128, 1284), scene.title_zh, fill=(56, 189, 248), font=f_zh)

    # 对话气泡:左右分布,模拟真实对话
    bubble_a = _make_bubble(scene.line_a, "left", f_en)
    bubble_b = _make_bubble(scene.line_b, "right", f_en)
    canvas.paste(bubble_a, (24, 720), bubble_a)
    canvas.paste(bubble_b, (canvas.width bubble_b.width 24, 880), bubble_b)

    # 老师讲解框:自动换行
    _draw_wrapped(d, (BOX_X1 + PAD, BOX_Y1 + PAD + f_zh.size + 8),
    scene.teacher_notes, f_small, fill=(51, 65, 85),
    max_width=text_w)
    canvas.save(out_path, quality=92)

    4.5 HTML 绘本打包:base64 内嵌实现离线分发

    请添加图片描述 构建成html页面的代码实现如下:

    def build_html(scenes: List, out_path: Path):
    """将所有资源内嵌到单个 HTML 文件中。"""
    items_js = []
    for s in scenes:
    items_js.append({
    "card": _to_data_url("runs_kids_en/" + s.id + "_card.jpg", "image/jpeg"),
    "audio_a": _to_data_url("runs_kids_en/" + s.id + "_a.mp3", "audio/mpeg"),
    "audio_b": _to_data_url("runs_kids_en/" + s.id + "_b.mp3", "audio/mpeg"),
    "teacher_notes": s.teacher_notes,
    "follow_up": s.follow_up,
    "question": s.question,
    })
    # JS 模板:翻页、播放、连读模式
    js = JS_TEMPLATE.replace("ITEMS_JSON_PLACEHOLDER", json.dumps(items_js))
    out_path.write_text(html_content, encoding="utf-8")

    最终产物是一个 2.7 MB 的单 HTML 文件,所有图片和音频都 base64 内嵌。在培训机构场景中,这个文件可以:

    • 发到家长微信群
    • 作为邮件附件
    • 拷到 U 盘
    • 放在机构公众号下载页

    不需要服务器、不需要联网、不需要安装任何 App。打开浏览器就能用。

    4.6 ComfyUI 自定义节点:让设计师也能用

    对于不熟悉代码的教学设计师,我封装了标准的 ComfyUI 自定义节点:

    class SenseNovaU1LiteT2I:
    """ComfyUI 文生图节点,拖入工作流即可使用。"""
    @classmethod
    def INPUT_TYPES(cls):
    return {
    "required": {
    "prompt": ("STRING", {"multiline": True}),
    "size": (["1024×1024", "2048×2048", "4K"], {"default": "1024×1024"}),
    "seed": ("INT", {"default": 0, "min": 0, "max": 2**31 1}),
    },
    "optional": {
    "negative_prompt": ("STRING", {"multiline": True, "default": ""}),
    },
    }

    RETURN_TYPES = ("IMAGE", "STRING")
    RETURN_NAMES = ("image", "revised_prompt")
    FUNCTION = "generate"
    CATEGORY = "SenseNova/U1.5 Lite"

    将 workflows/report_with_cover.json 拖入 ComfyUI(File → Import),即可看到完整节点图。设计师可以直接拖拽使用,无需写代码。

    五、实操演练

    运行过程演示

    完整本地化部署: 在这里插入图片描述

    开发的Agent效果图 1:SenseNova U1.5 Lite 4K 出图

    请添加图片描述 然后我们填一下提示词:

    一只穿黄色背心的小熊(4 岁样子,圆脸,大眼睛,温柔) and 穿粉色连衣裙的小兔子(4 岁,兔子耳朵,微笑) in 温馨的儿童卧室,清晨阳光从窗户洒进来,床上有玩具熊. The two characters are facing each other, smiling, with friendly body language — one is waving or extending hand. Children’s picture book illustration, warm pastel colors, rounded soft shapes, large expressive eyes, friendly and educational tone, no text in image, no watermark, 4K, high detail 在这里插入图片描述 点击生成按钮后,稍等一会就刷出了: 在这里插入图片描述 生成参数:model=sensenova-u1.5-lite, size=2048×2048, n=1, 耗时约 28s。

    效果图 2:图像编辑(换背景)

    在这里插入图片描述 看来不行,不能直接换,提示词还需要加上原来的内容才行:

    生成参数:/v1/images/edits, prompt=“把背景换成傍晚场景”, 耗时约 32s。

    以下是用这条工作流生成的第一组教学材料——问候类(Greetings),共 4 个场景。这也是我们培训机构"英语启蒙 Level 1"前 4 节课的核心内容。 我生成的第一版作品: 请添加图片描述 图片质量很高很精美,但是作为应用产品来说可以看到有很明显的缺陷,主要是文字内容适配上的。

    所以需要进行BUG调试,主要是下面四个:

    1:Edge-TTS 一半变成机械音

    前几次跑得非常好,但有一次突然 4 段里有 2 段返回的 MP3 只有 10KB——打开就是机械音。查了半天才发现是 Edge-TTS 偶发的 "No audio was received" 错误。微软的 voice 服务对某些组合会静默失败,不报错但返回空数据。

    解决方案就是上面提到的三级降级策略(主音色 → 备选音色 → 离线引擎)。实测 8/8 全部真人音色(70-120KB)。

    2:老师讲解文字溢出边框

    第一版直接把中文讲解 d.text(…) 画上去。结果"发音重点:morning 的 /ɔː/ 要圆唇,句尾语调上扬"超出了卡片右边界。PIL 的 d.text 不会自动换行——于是写了 _wrap_text 函数。

    3:emoji 显示成方框

    PIL 默认的 msyh.ttc 不带 emoji 字体。画 🎨 / 📚 出来都是 □。Windows 自带彩色 emoji 字体 seguiemj.ttf,但需要按 Unicode 码位(>= 0x1F000)逐字符判断并切换字体。

    针对上述问题,逐条思考修改对策:

    1.当前我设置的降级策略已经覆盖了主音色→备选→离线的链路,但缺少失败预警机制。解决方法是在每次降级切换时打印日志并记录到清单文件的 tts_status 字段,方便排查哪些音色组合容易触发失败。然后可以考虑在生成前先用 edge-tts –list-voices 缓存可用的音色列表,避免运行时态才发现问题。

    2._wrap_text 按像素宽度逐字符累加的思路是对的,但没有考虑英文单词的完整性,因为一个长单词可能被从中截断。需要在断行逻辑中加入"遇到空格时优先在空格处断行"的判断,只有当单个单词本身就超宽时才强制切断。同时可以把容器宽度从硬编码改为相对画布宽度的百分比,适配不同尺寸的卡片。

    3.当前按 Unicode 码位 >= 0x1F000 判断 emoji 的方案能覆盖大部分场景,但emoji 的码位范围比这更广(比如 U+2600–U+27BF 的杂项符号、U+1F900–U+1F9FF 的补充符号等)。所以要改用 regex 库的 \\p{Emoji} 属性来精确匹配,或者维护一个 emoji 码位区间表。

    修改后,经过精巧的构思,将最终成品效果展示如下: 请添加图片描述

    最终效果:

    场景一:Good Morning!

    请添加图片描述

    对话:

    • 小熊(学生角色):Good morning!
    • 小兔子(外教角色):Good morning!

    教学设计:「Good morning!」是我们熟知的最基础的问候语,图片是太阳升起、起床时段。 发音重点:morning 的 /ɔː/ 要圆唇,句尾语调上扬。跟读方式设计为"老师领读两遍 → 孩子跟读 → 角色互换"。

    🔊 A角色发音 | B角色发音

    场景二:How are you? — Fine, thank you.

    请添加图片描述

    对话:

    • 小狐狸老师:How are you?
    • 小男孩:I’m fine, thank you.

    教学设计:这就是最经典的课堂问候,哈哈! 回答拓展:Fine, thank you. / I’m good. / Not bad. 发音重点:thank 的 /θ/ 要咬舌送气。

    🔊 A角色发音 | B角色发音

    场景三:What’s your name? — My name is…

    请添加图片描述

    对话:

    • 小鸟:What’s your name?
    • 小熊猫:My name is Pipi.

    教学设计:这个可用于第一节课的自我介绍环节。发音重点:name 的 /eɪ/ 双元音要饱满。跟读设计是让孩子给自己起英文名,轮流上台做自我介绍。

    🔊 A角色发音 | B角色发音

    场景四:Nice to meet you!

    请添加图片描述

    对话:

    • 小女孩:Nice to meet you!
    • 小男孩:Nice to meet you, too!

    教学设计:用于初次见面场景,很高兴认识你。 发音重点:meet 的 /iː/ 要拖长,too 句尾的语调略降。 跟读设计模拟"第一次见面"场景,加入握手动作。

    🔊 A角色发音 | B角色发音

    上面 4 张对话卡 + 8 段真人配音,可以打包成一个 2.7 MB 的教学单 元。图片生成的效果很完美!

    交互功能:

    • 点击图片:A 角色说完自动播 B 角色(模拟真实对话节奏,间隔 400ms)
    • 键盘 ← / →:翻页
    • 空格键:连读模式(睡前复习模式)
    • ▶ 播放 A / B 按钮:单独听某一角色

    在实际教学中的使用方式:

  • 课前 5 分钟:老师能够在教室大屏上打开绘本,带孩子过一遍当天场景
  • 课后作业:家长在手机上打开电子页签 文件,孩子跟着读 3 遍
  • 周末复习:孩子自己翻看,点击听发音
  • 这种"看图 + 听音 + 跟读"的三感联动,比单纯放录音的效果好得多。因为孩子不是在"听"英语,而是在"参与"一段情景对话。

    六、SenseNova U1.5 Lite 模型调用过程全解析

    SenseNova U1.5 Lite 是商汤科技开源的 8B 参数文生图模型,支持两种使用方式:

    方式适合谁本项目选择
    本地部署(下载模型权重 + GPU 推理) 有 A100/H100 显卡的开发者
    云端 API(HTTP 请求,按量计费) 普通开发者、教学场景

    本项目选择云端 API 的原因很实际:少儿外教培训机构不需要自己买 GPU 服务器,API 调用成本更低、部署更快、免维护。

    6.2 第一步:注册平台 & 申请 API Key

  • 打开 SenseNova 开放平台 注册账号
  • 进入控制台 → 密钥管理 → 创建 API Key
  • 新用户有免费额度(文生图 + 图像编辑),足够跑通整个项目
  • 6.3 第二步:配置环境变量

    项目根目录创建 .env 文件:

    SENSENOVA_API_KEY=sk-xxxxxxxxxxxxxxxx
    SENSENOVA_BASE_URL=https://token.sensenova.cn/v1
    SENSENOVA_MODEL=sensenova-u1.5-lite

    代码通过 python-dotenv 自动加载,不需要在代码里硬编码密钥。

    6.4 第三步:核心调用代码

    项目封装了一个 SenseNovaClient 类(comfynodes/api.py),底层用的是 OpenAI Python SDK——因为 SenseNova 的 API 完全兼容 OpenAI 协议,所以可以直接复用 OpenAI 的 SDK,不需要自己写 HTTP 请求:

    from openai import OpenAI

    # 初始化客户端(一行代码搞定鉴权 + 端点配置)
    client = OpenAI(
    api_key="sk-xxxxxxxx",
    base_url="https://token.sensenova.cn/v1"
    )

    # 文生图调用(和调用 DALL-E 3 的代码一模一样)
    resp = client.images.generate(
    model="sensenova-u1.5-lite",
    prompt="一只穿黄色背心的小熊 and 穿粉色连衣裙的小兔子 in 温馨的儿童卧室…",
    size="2048×2048",
    n=1,
    )

    # 返回的是 base64 编码的图片数据
    image_data = resp.data[0].b64_json

    关键理解:base_url 决定了请求发到哪里。把 base_url 从 https://api.openai.com/v1 改成 https://token.sensenova.cn/v1,SDK 就会自动把请求路由到 SenseNova 的服务器。模型名 sensenova-u1.5-lite 告诉平台用哪个模型处理请求。

    6.5 图像编辑的调用方式

    图像编辑走的是 /v1/images/edits 端点,因为 OpenAI SDK 的 images.edit() 接口参数格式和 SenseNova 的不完全一致,所以项目用 requests 库直接发了 HTTP POST:

    import requests

    url = "https://token.sensenova.cn/v1/images/edits"
    headers = {"Authorization": f"Bearer {api_key}"}
    body = {
    "model": "sensenova-u1.5-lite",
    "images": [{"image_url": f"data:image/png;base64,{img_b64}"}],
    "prompt": "把背景换成傍晚场景",
    "size": "1024×1024",
    "n": 1,
    }
    resp = requests.post(url, json=body, headers=headers, timeout=120)

    6.6 调用时序图

    教师填写 SCENES 配置

    _build_scene_prompt() 拼接 prompt

    SenseNovaClient.text_to_image()

    OpenAI SDK → POST https://token.sensenova.cn/v1/images/generations
    ↓ (等待 22-28 秒)
    SenseNova 云端 GPU 集群推理

    返回 base64 图片数据

    _persist() 解码 → 存为 outputs/t2i_xxx.png

    PIL 排版 → Edge-TTS 配音 → HTML 打包

    6.7 调试过程:我是怎么一步步跑通的

    第一步:先在浏览器里打开 SenseNova Playground 手动试出图,确认 API Key 有效、额度充足。

    第二步:写一个最小可运行脚本,只用 10 行代码调一次 images.generate,打印返回的 base64 长度,确认网络通了。

    第三步:把 SenseNovaClient 封装好,加上错误处理(网络超时、API 限流、返回格式异常),然后在 pipelines/english_kids.py 里调用。

    第四步:跑完整工作流,发现出图 22-28 秒/张,4 张图总共约 2 分钟。主要等待时间在 API 推理,本地处理(PIL 排版 + TTS 配音)只要 10 秒。

    第五步:优化 prompt,加入 “facing each other, smiling” 等对话感指令,把双角色互动成功率从 50% 提升到 85%+。

    整个过程不需要下载模型权重、不需要配置 CUDA、不需要 GPU——一台普通的 Windows 笔记本就能跑通全部流程。

    七、测试实验(6 组对照实测)

    为了验证 SenseNova U1.5 Lite 在不同条件下的表现,我做了 6 组基准测试:

    #测试用例关键发现
    C1 文生图基线 1024×1024 单图 22-94s,双角色互动成功率 85%+
    C2 4K 竖版 1664×2496 32-104s,画质更细腻但耗时增加约 30%
    C3 8 步蒸馏 LoRA 加速 加速 1.7-2.7×(API),本地部署预计 ≥10×
    C4 中文文字渲染 主标题一次出图无乱码,中文理解力强
    C5 超长指令(≈750 字符) API 网关限制 400-800 字符内稳定
    C6 think 推理模式 比基线慢 30%,但指令遵循更稳定(严格布局控制)

    对教学场景的启示:日常出图用 C1 基线即可(1024×1024,速度和质量平衡最好);需要打印大幅海报时用 C2(4K 竖版);对出图精度要求极高时用 C6(think 模式)。

    可以按我下面的代码,在命令行贴入执行, 从而一键复现运行项目演示效果:

    # 1) 克隆仓库
    git clone https://atomgit.com/wdracky/nova.git
    cd nova

    # 2) 安装依赖
    pip install -r requirements.txt

    # 3) 配置 API Key(到 https://platform.sensenova.cn/console/keys 申请)
    cp .env.example .env # 编辑 .env 填入 SENSENOVA_API_KEY=sk-xxx

    # 4) 生成 4 张情景对话卡(出图 + 配音)
    python -m pipelines.english_kids

    # 5) 生成可点击的离线 HTML 绘本(2.7 MB)
    python -m pipelines.english_kids_html

    # 6) 启动 Web UI(http://127.0.0.1:7865)
    python -m webui.app

    # 7) 运行 6 组基准测试
    python scripts/benchmarks.py

    # 8) 运行单元测试
    python -m pytest -q tests/

    全部命令已在 2026-09-14 当日用真实 API Key 跑通。测试 3/3 通过。

    环境速查

    项值
    操作系统 Windows 11 Pro · 22H2 · 64-bit
    Python 3.11.9
    主要依赖 openai>=1.40.0、langchain>=0.3.0、flask>=3.0.0、edge-tts、Pillow
    视觉模型 sensenova-u1.5-lite
    对话模型 sensenova-6.8-flash-lite
    实测时间 2026-09-14

    我的测试电脑配置如下: 在这里插入图片描述

    事后,我的模型用量统计: 在这里插入图片描述

    在少儿外教培训场景中的延伸应用

    这条工作流不仅仅能生成"问候类"材料。它的 SCENES 配置是可扩展的,教师可以根据教学进度自由添加新场景。

    教师只需修改 SCENES 列表中的文字描述,工作流会自动完成出图、配音、排版、打包。这意味着一个周末的下午,就能生成一整个学期的教学材料。

    与 LangChain Agent 结合:自动生成教学讲解

    当前版本的 teacher_notes 是人工编写的。但借助 SenseNova 6.8 Flash-Lite 的对话能力,可以让 Agent 自动生成:

    # agent/report_agent.py 中的 LLM 调用
    llm = ChatOpenAI(
    model="sensenova-6.8-flash-lite",
    api_key=api_key,
    base_url="https://token.sensenova.cn/v1",
    )
    prompt = (
    "你是少儿英语外教。为以下对话写一段 50 字的中文讲解,"
    "包含发音重点和跟读建议。\\n\\n"
    f"对话:{scene.line_a} / {scene.line_b}"
    )

    与 ComfyUI 结合:设计师可视化工作流

    对于不熟悉代码的教学设计师,ComfyUI 自定义节点提供了零代码的可视化操作界面。将 workflows/report_with_cover.json 拖入 ComfyUI,即可看到完整的节点连线图。

    结论:AI 工作流让教学材料生产从"周"缩短到"分钟"

    回顾这条工作流的核心价值,我认为是:

    SenseFlow 工作流:教师自己就可以设计,写好 SCENES 配置 → 一条命令 → 自动出图 + 配音 + 排版 + 打包。一组材料约 5 分钟(主要等待时间在 API 出图)。

    我讲的这个完全不是"AI 替代老师"的故事。AI 替代的是那些重复性的、机械性的材料制作工作——找图、录音、排版、打包。

    老师的创造能力大幅展现出来,可以把这套方式用在教学设计、课堂互动、个性化辅导这些真正需要人类智慧的地方。

    SenseNova U1.5 Lite 在这条工作流中承担的角色是视觉引擎——它负责把教师脑海中的教学场景,变成孩子看得到的画面。实践证明它在出图这方面能力非常出色,8B 参数、单卡可跑、中英双语理解、双角色对话感好——这些特性足以让它成为少儿教学材料生成场景下的最优选择之一。

    本文就此结束,谢谢大家的阅读!

    体验仓库 / Workflow 链接

    • AtomGit 仓库:https://atomgit.com/wdracky/nova
    • ComfyUI 工作流:仓库目录的 workflows/report_with_cover.json(拖入 ComfyUI 即可使用)
    • HTML 绘本产物:仓库目录的 runs_kids_en/picture_book.html(2.7 MB,可邮件/U盘/微信群直接分享)
    赞(0)
    未经允许不得转载:171主机测评 » 【SenseNova U1.5 Lite 实战】少儿外教培训场景下的AI情景对话工作流——从出图、配音到离线绘本的完整落地
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址