dify案例分享-儿童故事绘本语音播报视频工作流

[复制链接]
发表于 2025-10-12 07:45:51 | 显示全部楼层 |阅读模式
1.媒介

前期给各人先容过儿童故事绘本dify工作流的制作,当时的工作流实现大模子天生分境图片提示词,使用文生图模子天生了图片。别的我们调用语音播报TTS 实现了一个简朴儿童绘本工作流。当时这个工作流图片内容和笔墨内容是单独分开的。并没有做成一个完备儿童故事绘本的视频。当时就觉的做的不太好。本日把这个这块给补上。对之前文章不熟悉的小同伴可以看我之前的文章dify案例分享-儿童故事绘本工作流. 下面我们给各人看一下时间的一个结果。

上面是一个合成后的儿童故事绘本视频流,下面的是工作流的具体毕竟现。

由于天生视频流,现在dify还不支持。以是该功能的大部门功能紧张是在后端代码来实现的。
点开视频可以放大看到大概1分钟的视频。

下面我们先容一下这个工作流是怎样制作的。
2.儿童绘本工作流制作

2.1 开始

首选我们先界说一个开始节点,这个开始几点须要设置多个输入字段,一个是提示词,别的一个是绘本的分境数量。思量输入方便,分境数量我们使用下拉列表情势展示。
prompt :文本提示词 这个很好明白就是输入用户的简朴的输入提示词。

language:语言 这里我们做成下拉的选项 现在支持的语音是 简体中文、繁体中文、美式英语、日语、韩语等5个国家的语言。

segments:分镜数量 这里紧张思量提示词天生几个分境镜头。现在提供3 、4 、5个分境。这个数量越多天生的时间越长,天生的视频也就会越长(固然结果会比力好)

voice_name:语音名称 这里紧张是使用edgetts 实现各个国家男生和女生各种语气声音。这里我们提供16个语音提供各人选择使用。

voice_rate:语音速率 这个就是天生的声音的语速,现在我们提供 1.0, 0.8 1.2 三中语速。固然你也可以在上面添加。

resolution:图片分辨率 这个是天生的图片的分辨率,我们知道 现在主流图片有 1:1 16:9 9:16 3:2 等尺寸。 图片比例 512512 10241024 等。

text_llm_provider:文本模子提供厂商 这里我们提供 siliconflow 、intern、aliyun。 国外的模子我这里就没添加了,各人可以本身根据须要添加。

text_llm_model:文本模子名称 这个 上面文本天生厂家选好后,这里就要对应厂家提供的文本天生模子。我这里就用硅基的模子

image_llm_provider:文生图模子提供厂商 这个和文本天生模子一样 也须要提供一个文生图模子厂商

image_llm_model:文生图模子 这个和上面逻辑一样提供模子厂商后你的须要提供一个文生图模子,这里我们选了black-forest-labs/FLUX.1-schnell模子

以上步调我就完成了开始节点设置。
HTTP 哀求后端服务接口

接下来我们须要工作流上使用http哀求

这个HTTP哀求接口哀求方式

这个http哀求接口 提交方式post 地点我这里用局域网地点 http://192.168.1.3:8085/story/generatestory (待会测试也用当地电脑)
HEADERS 部门我们添加 一个api key

body部门传入的参数是一个json格式数据,数据都是开始节点传入的参数

这里超时设置我们设置300秒,辨认重试取消

以上我们就完成了客户端设置。
现在核心的功能紧张照旧在服务端代码中。
3.服务端代码

服务端代码现在我紧张使用python来实现的,对外提供fastapi 服务端接口。代码结构如下:

现在这个步调分为api包、models 、resource、schemas、services、utils 另有一个config.ini设置文件等构成。
该步调参考开源项目https://github.com/alecm20/story-flicks的代码。具体代码逻辑这块我就不做具体睁开了。
接下来我们告诉各人怎样启动和测试这个项目。
1.依赖包安装

起首须要在当地电脑上安装好python 运行情况,发起python3.10+
安装如下依赖包
  1. pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
复制代码

2.设置文件阐明

config.ini
  1. [common]
  2. region = xxxx
  3. secret_id = xxxx
  4. secret_key = xxx
  5. bucket = xxx
  6. [llm]
  7. text_llm_provider = intern
  8. text_llm_model = internlm3-latest
  9. image_llm_provider = siliconflow
  10. image_llm_model = black-forest-labs/FLUX.1-schnell
  11. openai_base_url = https://api.openai.com/v1
  12. aliyun_base_url = https://dashscope.aliyuncs.com/compatible-mode/v1
  13. deepseek_base_url = https://api.deepseek.com/v1
  14. ollama_base_url = http://localhost:11434/v1
  15. siliconflow_base_url = https://api.siliconflow.cn/v1
  16. intern_base_url = https://chat.intern-ai.org.cn/api/v1
  17. openai_api_key = ""
  18. aliyun_api_key = ""
  19. deepseek_api_key = ""
  20. ollama_api_key = ""
  21. siliconflow_api_key = sk-xxxxx
  22. intern_api_key =
  23. [voice]
  24. voice_name = zh-CN-XiaoxiaoNeural
  25. voice_rate = 1.0
  26. [server]
  27. host = 127.0.0.1
  28. port = 8000
  29. [auth]
  30. valid_tokens = ["zhouhui-1258720xxxx"]
复制代码
阐明 common 设置下面4个值是腾讯COS 相干设置,紧张目标天生的视频上传腾讯COS 上方便背面欣赏和表现视频。
llm 设置中text_llm_provider 文本类模子提供商,现在提供 上海人工智能实验室书生(intern)、openai、aliyun、deepseek、ollama、硅基活动(siliconflow);text_llm_model 对应使用各个厂商提供的模子名称; image_llm_provider 和 image_llm_model 顾名思义就是硅基提供的文生图的模子;api key 就是设置各个厂商提供api key 就可以了。
auth 是客户端和服务端通过http哀求的鉴权账号。可以自界说,服务端设置后,客户端调用的地方须要和这个账号保持同等,否自会报401的错误。

上面客户端API 可以key 须要和服务端 保持同等。

如果是用dify 可以在调用http 哀求API key 设置

3.启动服务

  1. python main.py
复制代码
完成启动服务

4.客户端测试代码验证

服务端启动后我们使用teststoryvideo.py 可以对服务端哀求发起测试 天生短视频
  1. python teststoryvideo.py
复制代码
客户端代码如果想运行须要修改一些调用的地方
api_token
text_llm_provider
image_llm_provider
text_llm_model
image_llm_model


下面看一下运行结果服务端会返回 分镜提示词

调用API 天生绘画,接下来会天生语音

末了天生视频并上传腾讯COS 提供 视频链接地点

客户端返回视频天生 URL

视频同时在项目tasks 目次下天生最新的视频文件。

​ 演示结果

5.给dify调用

背面我们就可以在dify上设置http哀求调用该天生视频的http客户端哀求调用了。

http哀求这块 现在是写死 方便调试 ,各人也可以使用Chrome插件 调试整理json格式
chrome-extension://pkgccpejnmalmdinmhkkfafefagiiiad/json-format/index.html

通过该工具方便编写JSON,以及对JSON格式语法查抄。
4.代码实验

这个紧张的目标是为了http哀求服务端代码返回的天生的视频的URL 对这个URL举行输出转换成markdown格式输出。
实验的代码
  1. import json
  2. def main(arg1: str) -> dict:
  3.     try:
  4.         # 解析外层的 JSON 字符串
  5.         data = json.loads(arg1)
  6.         
  7.         # 检查 success 字段是否为 True
  8.         if not data.get("success", False):
  9.             return {"error": "操作失败,'success' 字段为 False"}
  10.         
  11.         # 提取 data 字段中的 video_url
  12.         video_data = data.get("data")
  13.         if not video_data or "video_url" not in video_data:
  14.             return {"error": "JSON 中缺少 'data.video_url' 字段"}
  15.         
  16.         video_url = video_data["video_url"]
  17.         
  18.         # 定义文件名(可以根据需要调整)
  19.         filename = "生成视频"
  20.         
  21.         # 生成 Markdown 格式的 HTML <video> 标签
  22.         markdown_result = f"<video controls><source src='{video_url}' type='video/mp4'>{filename}</video>"
  23.         
  24.         # 返回结果字典
  25.         return {"result": markdown_result}
  26.    
  27.     except json.JSONDecodeError:
  28.         return {"error": "无效的 JSON 字符串"}
  29.     except Exception as e:
  30.         return {"error": f"发生未知错误: {str(e)}"}
复制代码
输入参数是上个节点的body部门

返回的结果result 返回范例string

5.直接复兴

这个就比力简朴了就是对代码实验结果的表现。

以上我们就完成了整个工作流的设置。
3.验证及测试

我们首选须要把服务端代码启动起来,具体步调可以看服务端代码 启动服务(上面提到),接下来我们点击工作流右上角预览,填写相应的值。

点击右下角运行按钮实验工作流。(这个工作流实验时间会有点长大概2-3分钟各人耐心等候)

这个工作流在实验过程中会斲丧肯定额资源我之前的服务器资源不敷运行不起来。不能提供在线演示情况了,各人可以把源码下载下来本身摆设使用。
相干资料和文档可以看我开源的项目 https://github.com/wwwzhouhui/dify-for-dsl
4.总结

本日紧张带各人基于大模子实现了一个儿童故事绘本语音播报视频的工作流。具体先容了整个工作流的实现步调,工作流包罗开始节点设置、HTTP 哀求后端服务接口等部门。开始节点需设置多个输入字段,如提示词、绘天职境数量、语言、语音名称等;之后通过 HTTP 哀求将开始节点传入的参数以 JSON 格式数据提交到后端服务接口。该工作流由于天生视频流功能现在 Dify 不支持,大部门核心功能在后端代码实现,有肯定难度,但实现了将笔墨内容和图片内容合成完备儿童故事绘本视频的功能,具有较好的可扩展性。感爱好的小同伴可以动手实验,本日的分享就到这里竣事了,我们下一篇文章见。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表