系统功能展示

系统是一款基于虚幻引擎 5与大语言模型技术的 PC 桌面端医患沟通模拟实训软件。系统旨在为医学生提供低成本、高保真、可重复、标准化的临床问诊实训平台。医生(用户)通过麦克风输入与 AI 驱动的数字人患者(以 49 岁突发胸痛的“王大爷”为典型案例)进行多轮语音对话。系统在后端对学生的沟通表现和病史采集逻辑进行记录,并提供客观的反馈,为医学教育提供标准化的训练工具

双模态流式语音与文字交互

本系统支持两种输入方式:文字输入和语音输入。用户可以通过语音和患者进行实时交互,也可以通过打字的方式进行交流。

用户输入信息后,信息通过ASR转换成文字,再经LLM输出文本,最后TTS输出语音,并传输到前端进行播放,同时患者会做出适当的动作,如打招呼、疼痛、否决等。交流的信息会实时打印在UI上。

这个工作流均采用流式输入和输出,确保一次对话延迟<=6秒

在沟通过程中,医生可以查看患者病例,若不清楚下一步问什么,可以询问AI,AI会给出引导性回复

SEGUE评分系统

当医生结束问诊后,点击结束按钮,系统可以根据医患本次的沟通生成SEGUE评分,用来衡量医生本次问诊的质量。评分系统分为成绩总览、历史回顾、问诊技巧三个方面

成绩总览:医生可以在此查看患者信息,本次问诊的总得分,以及各个阶段各个评分细则的得分情况

历史回顾:可以查看本次问诊的每轮对话以及得分情况

问诊技巧:可以分阶段查看具体的得分情况,并且AI给出评价和得分证据

核心技术要点

本系统在技术架构上经历了几轮重构与深度调优,解决了多线程安全冲突、文件读写死锁、网络拦截延迟等多项底层瓶颈。其核心技术实现如下

全内存零磁盘语音处理链路 

传统的“录音存本地->发送路径->后端读取”方案存在严重的文件读写锁冲突和硬盘磨损延迟。本项目通过以下设计实现了全内存字节流周转:

前端:前端通过AudioCapture捕获音频后,将音频文件(.wav)转化为Base64编码格式,并将Base64的二进制文件通过Http发给后端

后端:接收到前端Base64的二进制文件后,调用阿里云ASR的API,返回语音识别后的文本

再将文本传给Deepseek LLM,进行prompt调整后将患者的回复以及表情输出

经过测试,由于Deepseek和阿里云TTS均是流式输出,但如果单Chunk返回,频繁调用TTS生成语音会生成断裂感很强的话,遂改成在流式返回LLM内部拼接Chunk,直到正则表达式匹配到一个标点符号后返回。

同理TTS也是,若单Chunk发送给前端,由于时长过短,前端播放出来是噪音,所以改进方法是在后端开辟了一段内存,拼接成一句话的语音后,再转码发给前端。

为什么TTS不用非流式?经过测试非流式比流式快(可能是IO时间),但也没快多少(零点零几秒),改成流式就懒得该回去了

前端收到音频的Base64后,通过RuntimeImporter插件进行音频的播放,以及传输给Oculus Lipsync进行唇形同步。

整个过程基本没有硬盘读写,整个语音对话的延迟从十余秒降低到不高于六秒。

唇形同步

这是本项目区别于其他医患沟通项目的亮点之一,患者可以根据语音调动唇形的变化,实现真实感动画。网上有现成的插件,但是动辄上千元,Evidia有一个Audio2Face插件,但是需要Evidia显卡,且对性能要求极高。因此我们基于Oculus Lipsync开发了一个纯CPU端运行的唇形同步功能。

前端收到音频后,需要对音频文件进行逐帧切分,以适配Oculus Lipsync插件。插件将音频转化为16个Float类型的数组(下简称Viseme),通过Viseme,我们需要制作16种唇形,来实现Viseme和唇形的一一对应。

16唇形的制作,参照了国外一个博主的思路,通过Metahuman官方给出的面部表情动画序列,定位到每个唇形所主要控制的曲线,然后通过Viseme数组控制曲线。

这种方法可以在笔记本电脑上流畅运行,且没有延迟,配合动画使用基本看不出缺陷。

核心Prompt工程

一、模拟患者角色 Prompt

存储设计患者人设不硬编码,统一存数据库。Scenario 表存病例通用基础信息;ScenarioScene 表通过外键关联病例,patient_prompt存放场景专属患者人设,配套存储患者文化程度等参数。

组装调用逻辑:get_chat_response接口根据 scene_key 读取场景配置,无会话历史时拼接三层提示词:数据库病例基础信息、数据库场景专属患者人设、代码内置统一输出约束,组装成系统提示词调用大模型生成患者对话。数据联动:表内患者文化程度参数同步送入规则检测、评分模块,低学历患者出现未解释医学术语直接强制扣分,实现模拟对话、违规检测、自动评分数据同源闭环。

对话评分 Prompt(evaluate_dialogue)

    采用五层递进约束设计,规避模型主观偏差:

    1. 传入完整对话 + 代码规则层检测的违规硬证据;
    2. 限定模型为专业评分师,仅对场景启用条目打分,遵循 SEGUE 25 项 0/1 分量表;
    3. 标注强制 0 分条目,要求模型严格遵循机器检测结果;
    4. 拆分五大问诊阶段与全部评分细则,统一判定标准;
    5. 强制固定 JSON 输出格式,规范证据填写规则,所有评分有据可查。

    三、医生实时指导 Prompt(get_doctor_advice_stream)

    以正向培训、合规风控为核心,分六部分约束:

    1. 定位模型为沟通培训专家,仅输出下一步正向建议,不诊断、不批判;
    2. 注入病例、人设、考核条目,建议贴合当前问诊场景;
    3. 任务核心:优先补全未覆盖评分项,术语违规必须提醒;
    4. 固定三段式简短输出格式,方便医生直接使用;
    5. 多层合规禁令,禁止推导病情、使用专业术语,搭配示例规范话术;

    实时动态注入术语违规提醒,实现规则检测与指导建议闭环

    Logo

    脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

    更多推荐