AI Avatar 多智能体交互系统技术报告
AI Avatar 多智能体交互系统技术报告 1. 项目概述 这是一个面向游戏角色交互的集中式多智能体调度系统。UE5 负责采集场景内角色状态、发送结构化请求并执行动作;Python / FastAPI 负责协议校验、LLM Function Calling 调度、动作归一化和几何换算;LLM 本身只负责理解语义、拆解任务、选择角色,再生成动作调用。 说到底,我想解决的并不是“让 AI 能说话”这么简单,而是“怎么把一条自然语言指令,稳定地变成游戏世界里多个角色的可执行动作”。 这个项目要解决的核心问题主要有三个: 单轮自然语言指令需要同时调度多个场景角色,传统单 Agent 对话链路很难稳定覆盖。 LLM 直接生成 UE5 世界坐标时很容易出现空间幻觉,尤其是“向前走 15 米”“跟着她一起走”这类相对位移任务,稳定性会明显下降。 UE5 侧需要一条可验证、可扩展、后续还能平滑迁移到 C++ 原生模块的消息协议和执行链路,而不是继续依赖自由文本解析。 技术栈:Unreal Engine 5、C++、Blueprint、Python、FastAPI、Pydantic...
MoeASR技术报告
MoeASR 技术报告 0. 概述 MoeASR 是一套面向困难日语长音频字幕场景的工程化 ASR 系统。它不追求“单模型一次识别就结束”的理想路径,而是把多阶段流水线、风险驱动重试、对齐容灾和可审计产物组织成一个完整闭环。 说得更直接一点,我要解决的不是“能不能出字”,而是“面对长音频、脏音频和困难样本时,系统还能不能稳定地交付一份可播放、可复盘的 SRT 字幕”。 1. 项目定位 1.1 项目要解决什么问题 传统 ASR Demo 往往只覆盖“干净音频 + 单模型 + 单次推理”的 happy path,但真实字幕交付场景里,麻烦通常都出在下面这些地方: 长音频切分不稳定,一旦切坏,整段识别质量就会被拖下来。 强制对齐在困难样本上很容易出现时间戳坍塌、零时长字符簇和时间逆跳。 单一模型很难覆盖不同音频条件,模型切换和策略切换成本也比较高。 失败案例很难复盘,缺少结构化调试产物和稳定的回归验证抓手。 所以,MoeASR 的核心目标从来不是“再写一个语音识别脚本”,而是搭一条可以持续优化的字幕生产流水线: 输入是原始音频。 输出是可播放、可交付的 SRT...
光栅化(三角形的离散化)
在之前的视图变换之后就要进行光栅化 视锥 视锥定义 从摄像机出发,看到的第一个平面是近平面,那么我们要给近平面定义一个宽高度,就类似于显示器一样的宽高比。 也就是可以看到的角度范围:fov,一般分为fovY和fovX。 foxY就是垂直可视角度;fovX也就是水平可视角度。 一般定义宽高比和fovY,直接就可以推出fovX。 具体可以看下图: 视锥计算 确定fovY之后,就可以知道上面角度就是fovY/2,假定近平面上中点坐标是(0,t,n). 就可以列出等式:fovY2=t∣n∣\frac{fovY}{2} = \frac{t}{|n|}2fovY=∣n∣t 宽高比:aspect = rt\frac{r}{t}tr 这些概念都可以相互转换 光栅化(三角形的离散化) 做完MVP(模型、视图、投影变换) 参考本篇文章:变换(模型、视图、投影) 做完上述变换之后,所有的物体都会停留在 [−1,1]3[-1,1]^3[−1,1]3...
变换(模型、视图、投影)
补充知识 众所周知(): Rθ=[cosθ,−sinθsinθ,cosθ]R_{\theta} = \begin{bmatrix} cos\theta , -sin\theta \\ sin\theta , cos\theta \end{bmatrix}Rθ=[cosθ,−sinθsinθ,cosθ] 那问题来了,那我问你,那我问你!如果我要反着转呢?顺时针旋转 θ\thetaθ 角,怎么表示? 嗯?回答我!! 那是不是可以表示为 R−θ=[cosθ,sinθ−sinθ,cosθ]R_{-\theta} = \begin{bmatrix} cos\theta , sin\theta \\ -sin\theta , cos\theta \end{bmatrix}R−θ=[cosθ,sinθ−sinθ,cosθ] 嗯?你回答我,是不是可以把 −θ-\theta−θ 进去! 那是不是也可以看出来:R−θ=[cosθ,sinθ−sinθ,cosθ]=RθTR_{-\theta} = \begin{bmatrix} cos\theta , sin\theta \\...
线性代数:矩阵变换
二维矩阵变换 缩放变换(Scaling) 均匀缩放 将矩阵进行缩放,例如将一个矩阵大小均匀缩放变成原来的一半 那么,我们记这个过程为 S0.5S_{0.5}S0.5 可以写作: [x′y′]=[s,00,s][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s ,0\\ 0 ,s \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′]=[s,00,s][xy] 不均匀缩放 现在缩放不均匀,比如x缩放0.5.y不缩放,也就是y不变,x变为0.5非均匀缩放 其实也一样,我们记这个过程为 S0.5,1.0S_{0.5,1.0}S0.5,1.0 可以写作: [x′y′]=[sx,00,sy][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} s_x ,0\\ 0 , s_y \end{bmatrix}...
线性代数:向量与基础矩阵
向量 向量加法 不多说,直接加就是了 平行四边形法则或者三角形法则 向量点乘 也没什么好说的,高中数学 有什么用 可以通过向量点乘来判断向量间的夹角,两向量的方向关系 向量叉乘* 叉乘和点乘是完全不一样的计算,向量叉乘仅在三维空间中有定义。对于两个向量a = (a1,a2,a3a_1, a_2, a_3a1,a2,a3)和b=(b1,b2,b3b_1, b_2, b_3b1,b2,b3),它们的叉乘 a×b\mathbf{a} \times \mathbf{b}a×b 的结果垂直于 a\mathbf{a}a 和 b\mathbf{b}b。 1.几何意义 垂直性:叉乘的结果向量垂直于原向量,并且其方向由右手(螺旋)法则(四指从前乘绕向后乘,大拇指方向即为所得叉乘向量方向)决定。 模长:叉乘的模长等于两个向量所构成的平行四边形的面积,即: ∣a×b∣=∣a∣∣b∣sinθ|\mathbf{a} \times \mathbf{b}| = |\mathbf{a}||\mathbf{b}| \sin\theta∣a×b∣=∣a∣∣b∣sinθ 其中 θ\thetaθ...
Windows下VScode配置Eigen
Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。 缘由 最近在学计算机图形,所以要用到线性代数相关的算法,就自己装了个Eigen,其实用Linux装会简单一些,但是本人懒得搞虚拟机或者双系统了,索性直接在windows装,搞了有些时间,避免后来者碰壁,就自己写一篇教程吧 开始 如果之前没有在Vscode配置过C/C++,请先自行配置 在官网下载Eigen3.4.0 解压到你自己想放的地方,我个人推荐和Mingw32放在一起(别放到子类文件夹去了) 打开VScode在c_cpp_properties.json中设置包含头文件的路径 在”includePath”中加入Eigen的文件路径(注意上一行加逗号) 注意斜杠,要跟图片内一致,不是反斜杠哦 在tasks.json中,修改如下: 同样需要注意上一行后面加逗号。 12"-I","C:\\...\\eigen-3.4.0\\Eigen"...
个人Blog正式上线
个人Blog基本99%完成上线! 本Blog主要展示个人技术栈和日常有趣的事情以及部分教学内容 目前功能 文章发布 音乐播放器 自定义css 最新文档显示 多样个性化标签外挂 留言板 友链 smooth丝滑动画 标签分类与归档 模块窗口划分 评论系统 未来新增功能 开发历程 2025-03-15 ...







