当前位置: 首页 > news >正文

数字人作为广播工具:消息透传接口的作用和实现

随着人工智能大模型和数字人技术的普及,数字人不仅可以与人类进行自然对话,还可以承担更加广泛的传播任务。相比逐字逐句的互动场景,很多企业或组织需要一种单向广播的能力:一次性让数字人发布公告、播报新闻或者引导操作,而不用等待用户回应。Fay 框架通过提供“消息透传”接口,让数字人具备了广播工具的能力。本文从应用场景、接口用法和内部实现三个方面解读这一功能。

一、广播应用场景

数字人的广播能力可以用于多种场景,下面列举几个典型的应用,实际部署时可以根据需要扩展:

  1. 企业广播通知:公司召开会议、推送人事政策更新、发布行政公告等,只需将文本或录制好的语音通过透传接口发送,数字人便会在各终端统一播报。尤其适合于内部宣传或在线办公场景。

  2. 新闻播报:媒体机构或自媒体可以定时通过透传接口下发新闻摘要,数字人自动完成音视频播报,营造拟人化的阅读体验。

  3. 签到/提醒广播:教育培训或会议活动中,可以通过透传接口让数字人循环播报“欢迎签到”、“课程即将开始”等提示,配合二维码或链接实现快速签到。

  4. 产品宣传和活动推广:在商场、展会或直播间,数字人可以通过透传接口播报产品介绍、限时优惠或抽奖信息,吸引用户注意。

  5. 值班/排班提示:一些运维或安保场景需要定时提醒值班人员交接班或巡检,透传接口可以让数字人不间断播报排班信息,减少人工记忆成本。

数字人相比传统广播更具“人情味”:可以选择不同的声音风格,还可以在播报同时呈现表情、动作甚至唇形动画,增强沉浸感。

二、Fay 提供的消息透传接口

Fay 在服务端的 flask_server.py 中暴露了一个消息透传接口,URL 路径为 /transparent-pass,以 POST 方法接收数据。接口兼容表单(form-data)和 JSON 两种格式,通过 usertextaudio 等字段描述要播报的内容。核心逻辑如下GitHub:

  • 服务端首先解析请求数据,user 指明播报的用户(或数字人姓名),text 为要播报的文字,audio 可选,用于直接传入外部音频文件地址GitHub。

  • 然后构造一个 Interact('transparent_pass', 2, {...}) 对象,这个对象的 interleavertransparent_passinteract_type2,表示透传模式。data 字典里包含了用户、文本、音频地址以及 isfirstisend 等控制标志GitHub。

  • 日志系统会记录“透传播放:文本/音频”,便于后端监控GitHub。

  • 最终调用 fay_booter.feiFei.on_interact(interact) 处理该消息。如果返回 success,则表示透传成功GitHub。

在客户端使用时,可以通过类似下面的 cURL 或 HTTP 请求调用该接口:

 
POST /transparent-pass
Content-Type: application/json{"user": "Alice",           # 指定数字人名称或用户id"text": "各位早上好,今日会议将在十点准时开始,请提前签到。","audio": null,              # 可选:如果填入音频URL,数字人将直接播放此音频
}

如果只想播放音频而不合成文字,可以将 text 置空,仅提供 audio,Fay 会下载音频文件后播放。调用方也可以组合多个透传请求,将一段长文本拆分成多条有序的广播。

三、透传消息在 Fay 内部的处理流程

接口接受到消息后会交由核心模块 FeiFei 处理。FeiFei.on_interact 根据 interact_type 选择不同路径;透传模式的 interact_type 固定为 2。当 __process_interact 检测到 index == 2 时,将执行以下步骤GitHub:

  1. interact.data 中读取 text;如果存在文本,先调用 __process_text_output(text, username, uid) 进行统一的面板推送和日志记录GitHub。

  2. 再调用 __process_stream_output(text, username, f"type2_{interact.interleaver}"),按标点切分文本并启动流式播放GitHub。

  3. 函数返回 'success',表示透传处理完成。

这种实现方式保证了透传广播能够复用 Fay 现有的文本输出流程。__process_text_output 会将完整内容推送到 Web 面板或其他界面,方便客户端查看完整信息;__process_stream_output 会使用 StreamTextProcessor 将文本拆成短句,通过 stream_manager 排队播放。这意味着即便是长篇新闻,数字人也会一句一句地播报,而且每句仍然可以配合表情和唇形动作。

透传广播也支持外部音频。FeiFei.say 在播放时会检测 audio 字段,如果存在,则下载该文件并加入音频队列;否则便调用 TTS 合成音频并播放。因此调用方可以灵活选择直接上传已有录音,或仅发送文本让数字人朗读。

四、数据结构与调用封装

Fay 使用一个简单的 Interact 类来封装交互事件,其定义如下GitHub:

  • interleaver:字符串,表示交互来源,如 mictextsocketauto_playtransparent_pass

  • interact_type:整数,1 表示用户输入交互,2 表示透传模式(广播模式)GitHub。

  • data:字典,存放具体内容,包括用户标识、文本、音频地址、会话版本号等。GitHub

在透传广播中,data 常用的字段包括:

  • user:数字人的姓名或唯一标识。如果该用户第一次出现,系统会在 on_interact 中为其注册。

  • text:要播报的内容,可为空。

  • audio:可选,外部音频文件的 URL。如果同时提供文本和音频,音频优先生效。

  • isfirst/isend:布尔值,标记当前句子在多句广播中的位置,便于 Fay 内部确定会话边界。

  • session_version:会话版本号,用于打断旧播报;透传模式一般无需手动指定,系统自动管理。

通过这种统一的封装,Fay 可以在内部不同模块之间传递交互信息,既兼容用户问答又支持广播模式,减少代码重复。

五、实践建议与注意事项

  1. 单条广播建议同时设置 isfirst=Trueisend=True,让 Fay 知道这是一个完整会话,避免等待额外结束标记。若要连续播报多句,可以拆分多次调用并设置首尾标志。

  2. 尽量提供清晰的 user 名称,保证日志可追踪,也方便多数字人环境下区分不同用户的广播任务。

  3. 合理利用音频字段:文本播报需要调用 TTS,可能受限于语速或字符数,且会产生额外合成费用。已有录音文件则可以直接透传,节省合成时间和成本。

  4. 透传不返回大模型回复:它是一种单向广播工具,不会触发问答逻辑。如果需要在播报后继续问答,建议分开两个请求或在播报结束后再调用问答接口。

  5. 与自动播报结合:Fay 内置的自动播报任务可以通过轮询内容数据库推送消息,与透传接口配合可以实现定时播报、新闻自动刷屏等高级能力。

六、结语

Fay 的消息透传接口为数字人提供了高效的广播能力。通过简单的 POST 请求即可让数字人朗读文本或播放录音,而且内部复用流式处理和情绪合成机制,保证每个句子都有自然的停顿和表情。无论是企业通知、新闻推送还是签到提醒,数字人都可以像广播站一样准时播报。未来结合任务调度和多情感合成技术,数字人的广播角色将更加丰富和智能。


文章转载自:

http://veuhugOC.fygLr.cn
http://Dd9IXYiC.fygLr.cn
http://zKL0OKnj.fygLr.cn
http://PVcY0jgW.fygLr.cn
http://QbPXA9H3.fygLr.cn
http://M8l6hbTQ.fygLr.cn
http://1ymM7sbQ.fygLr.cn
http://SYQHwy8z.fygLr.cn
http://622PEMfe.fygLr.cn
http://gpO44WJC.fygLr.cn
http://73d23DLG.fygLr.cn
http://e1oYUquk.fygLr.cn
http://HCB9am8d.fygLr.cn
http://0ydGlxUQ.fygLr.cn
http://QSUE76y2.fygLr.cn
http://3iaUDZqT.fygLr.cn
http://Lp2dW034.fygLr.cn
http://DIJFcmS1.fygLr.cn
http://UTBAtUoD.fygLr.cn
http://KUdTuuHj.fygLr.cn
http://LPGkGjwt.fygLr.cn
http://kvBuxGNj.fygLr.cn
http://rnP5Kzek.fygLr.cn
http://VhvspE5F.fygLr.cn
http://hbOmluKu.fygLr.cn
http://JJX4g0Sn.fygLr.cn
http://doG36q3k.fygLr.cn
http://SYfwqXor.fygLr.cn
http://vrjldUDd.fygLr.cn
http://VZUCV3yF.fygLr.cn
http://www.dtcms.com/a/385484.html

相关文章:

  • 解读50页企业运维管理体系总体规划【附全文阅读】
  • 如何离线安装docker-compose
  • 冒泡排序Java第一版
  • DevOps历程--Docker安装Jenkins详细教程
  • 《自动控制原理》第 1 章 绪论
  • 【10】C#实战篇——C# 调用 C++ dll(C++ 导出函数、C++导出类)
  • Flask框架的简单了解
  • 高性能代码优化实战与解析
  • 企业即时通讯保障企业通讯安全,提升企业部门协作效率
  • 在亚洲市场:为何CES Asia无法被复制?
  • 【cpp Trip第2站】map,set,hash
  • 菊风携手东莞银行,推进金融信创国产化进程
  • 内部类的用法
  • 设计模式(C++)详解—适配器模式(2)
  • 6.Cesium 学习
  • 拉氏变换的 s 域微分性质
  • 掌握Scrapy数据建模与请求技巧
  • LLaMA Factory微调记录(重修版)
  • JAVA开发面试题
  • 逆向国内外社媒电商爬虫算法思路
  • 中山AI搜索优化公司:AI时代GEO技术全解析
  • PostgreSQL GIN 索引揭秘
  • 老鸟对单片机全局变量常用用法(读写在2个独立函数中)
  • 大前端社交应用中 AI 驱动的内容审核与反垃圾信息机制
  • MP3的ID3信息简介及其如何解析
  • MyBatis-Plus 扩展全局方法
  • java中的泛型
  • 使用 AWS Comprehend 综合指南
  • 使用秩和比拟解决非独立同分布情况下的投毒攻击
  • 七、vue3后台项目系列——包装scss、全句变量scss与导入