
人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载导读本文围绕 pil_demo_python 扩展讲解如何在 TEN Framework 中编写一个基于 Python 的 PILPython Imaging Library扩展重点剖析它如何通过on_video_frame回调接收视频帧、将VideoFrame内存缓冲直接映射为 PILImage对象并执行图像处理。读完本文你将掌握 TEN 扩展的完整生命周期实现、视频帧数据访问方式以及如何将该扩展接入自己的 TEN 应用。扩展概览这个扩展是什么pil_demo_python是 TEN Framework 提供的一个示例扩展包位于 packages/example_extensions/pil_demo_python。根据其 manifest.json 的描述它是一份使用 Python 语言编写的 TEN Framework PILPython 影像库示範擴充用来演示以下能力在 Python 中编写 TEN Framework 扩展的完整骨架初始化、启动、停止、反初始化通过on_cmd处理外部命令并返回结果通过on_video_frame接收视频帧并借助 Pillow 对帧数据做图像处理例如高斯模糊遵循 TEN 的 Addon / Extension 注册机制成为可被框架按需加载的组件。该扩展依赖 Pillowpillow11.1.0见 requirements.txt运行时依赖 TEN 的 Python 绑定ten_runtime_python版本 0.11.73见 manifest.json 中的dependencies。包结构与构建清单扩展的顶层文件结构如下packages/example_extensions/pil_demo_python/ ├── BUILD.gn # GN 构建描述声明打包资源 ├── LICENSE ├── __init__.py # 包加载入口 ├── main.py # 扩展与 Addon 的核心实现 ├── manifest.json # 扩展元数据名称、版本、依赖、多语言说明 ├── property.json # 扩展属性配置当前为空对象 ├── pyproject.toml # Python 项目元数据与依赖声明 └── requirements.txt # pip 依赖锁定从 BUILD.gn 可以看到该包通过ten_package(pil_demo_python)声明为extension类型打包时会把LICENSE、__init__.py、main.py、manifest.json、property.json、pyproject.toml、requirements.txt以及docs/下的全部多语言文档一起纳入资源并依赖//core/src/ten_runtime编译产物。启用 ten_managerten_enable_ten_manager时还会生成upload_pil_demo_python_to_server目标用于发布。pyproject.toml 声明requires-python 3.10依赖pillow11.1.0这是运行本扩展的环境前提。核心实现剖析main.py扩展类与生命周期回调main.py 定义了PilDemoExtension(Extension)实现了 TEN Python 绑定要求的标准生命周期回调on_init扩展初始化入口记录on_init日志后调用ten_env.on_init_done()通知框架初始化完成on_start扩展启动入口记录日志后调用ten_env.on_start_done()通知启动完成on_stop扩展停止入口调用ten_env.on_stop_done()on_deinit扩展反初始化入口调用ten_env.on_deinit_done()。这一整套回调是 TEN 扩展的标准生命周期契约任何自定义扩展都应遵循同样的回调 显式 done模式。命令处理on_cmddef on_cmd(self, ten_env: TenEnv, cmd: Cmd) - None: cmd_json, _ cmd.get_property_to_json() ten_env.log(LogLevel.INFO, fon_cmd json: {cmd_json}) cmd_result CmdResult.create(StatusCode.OK, cmd) cmd_result.set_property_string(detail, success) ten_env.return_result(cmd_result)on_cmd演示了命令处理的标准写法先把收到的Cmd序列化为 JSON 并记录日志再以StatusCode.OK创建CmdResult通过set_property_string(detail, success)写入返回内容最后ten_env.return_result(cmd_result)把结果回传给调用方。视频帧处理on_video_framedef on_video_frame(self, ten_env: TenEnv, video_frame: VideoFrame) - None: ten_env.log(LogLevel.DEBUG, on_video_frame) if video_frame.get_pixel_fmt() ! PixelFmt.RGBA: ten_env.log(LogLevel.ERROR, on_video_frame, not support pixel format) return im Image.frombuffer( RGBA, (video_frame.get_width(), video_frame.get_height()), video_frame.get_buf(), ) im2 im.filter(ImageFilter.BLUR) im2.save(./blur.png)这是本扩展的核心演示逻辑分为三步像素格式校验调用video_frame.get_pixel_fmt()与PixelFmt.RGBA比较非 RGBA 格式直接记录 ERROR 日志并返回避免对不支持的格式做错误处理。可见该演示扩展目前仅支持 RGBA 视频帧。零拷贝映射为 PIL 图像使用 Pillow 的Image.frombuffer(RGBA, (width, height), buf)把VideoFrame的缓冲区get_buf()返回bytearray见 libten_runtime_python.pyi 中VideoFrame的get_buf/get_width/get_height/get_pixel_fmt声明直接当作图像内存映射无需逐像素复制。图像处理与落盘对映射出的 PIL 图像应用ImageFilter.BLUR高斯模糊并将结果保存为当前工作目录下的./blur.png直观展示视频帧 → PIL → 处理后图像的完整链路。Addon 注册机制register_addon_as_extension(pil_demo_python) class PilDemoExtensionAddon(Addon): def on_create_instance(self, ten_env: TenEnv, name: str, context: object) - None: ten_env.log(LogLevel.DEBUG, on_create_instance) ten_env.on_create_instance_done(PilDemoExtension(name), context)扩展通过register_addon_as_extension(pil_demo_python)注册为 AddonAddon 的名字与 manifest.json 中的name字段一致。框架在需要实例化扩展时调用on_create_instance这里创建PilDemoExtension(name)并调用on_create_instance_done返回实例。manifest.json扩展的元数据契约manifest.json 是 TEN 扩展的元数据契约关键字段包括typeextension声明这是一个扩展包namepil_demo_python与register_addon_as_extension的名字对应version0.11.73display_name/description提供en-US、zh-CN、zh-TW、ja-JP、ko-KR五语言的显示名与描述readme.locales指定各语言 README 的import_uri繁体中文对应 docs/README.zh-TW.mddependencies依赖系统包ten_runtime_python版本 0.11.73这是运行 Python 扩展所必需的基础运行时api当前为空对象{}表示该演示扩展未声明额外的对外 API。快速开始与集成到 TEN 应用前置条件满足 manifest.json 中声明的依赖TEN 运行时会自动解析并安装ten_runtime_python满足 Python 环境要求Python 3.10并安装 Pillow可通过pip install -r packages/example_extensions/pil_demo_python/requirements.txt安装pillow11.1.0一份可运行的 TEN Framework 应用应用与扩展的通用开发方式可参考 docs/development/how_to_develop_with_ext.cn.md。安装作为 TEN 标准软件包pil_demo_python遵循 TEN Framework 的套件安装流程可通过tmanten manager从本地或远端 registry 安装到应用的ten_packages/extension/目录。仓库中的 ai_agents/agents/examples 下的多个示例 agent 也演示了在应用中声明扩展依赖、由框架自动拉取的方式。集成到应用在 TEN 应用的项目配置中把pil_demo_python声明为依赖并在应用的property.json图中将该扩展接入消息流即可。集成后上游扩展如摄像头采集、视频源将视频帧作为VideoFrame消息发送给本扩展触发on_video_frame其他组件可通过Cmd与本扩展通信on_cmd会返回detail: success的结果处理结果以./blur.png的形式落盘供后续流程或人工查看。小结pil_demo_python是一个麻雀虽小、五脏俱全的 TEN Python 扩展示例它完整展示了扩展生命周期、命令响应、视频帧回调、Addon 注册与 manifest 元数据声明。对于想在 TEN Framework 中处理视频帧或接入图像处理的开发者它是最直接的入门参考——把ImageFilter.BLUR替换成任意 PIL 图像算法即可快速验证自己的图像处理链路。该扩展属于 TEN Framework 开源项目的一部分见 packages/example_extensions/pil_demo_python/LICENSE源码可在当前仓库中直接查阅与运行。赞分享人工智能AI Agent多模态语音AI 应用【免费下载链接】ten-frameworkOpen-source framework for conversational voice AI agents项目地址https://gitcode.com/TEN-framework/ten-framework点击查看免费下载相关推荐TEN Framework 中的 AWS ASR Python 扩展基于 Amazon Transcribe 流式 API 的实时语音识别实战指南TEN Framework 中的 AWS ASR Python 扩展基于 Amazon Transcribe 流式 API 的实时语音识别实战指南 导读 本文人工智能AI Agent多模态语音AI 应用在 TEN Framework 中使用 gemini_tts_python基于 Google Gemini 2.5 的实时 TTS 扩展在 TEN Framework 中使用 gemini_tts_python基于 Google Gemini 2.5 的实时 TTS 扩展 gemini_tts人工智能AI Agent多模态语音AI 应用TEN Framework 中 OpenAI ASR Python 扩展实战基于 Realtime 转录 API 的实时语音转文本接入指南TEN Framework 中 OpenAI ASR Python 扩展实战基于 Realtime 转录 API 的实时语音转文本接入指南 本文以 opena人工智能AI Agent多模态语音AI 应用上一篇Zwift Offline本地部署指南打造专属骑行训练系统下一篇Swift-scripts性能优化指南加速大规模Swift项目的代码分析速度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考