之前的问题:
现在的改进:
使用体验:
点击 "🎤 语音输入"
↓
按钮变成 "⏹️ 停止录音 (60s)" + 红色背景
↓
开始说话,按钮倒计时 "⏹️ 停止录音 (59s)" ... (58s)" ...
↓
可以随时点击按钮停止,或等60秒自动结束
↓
自动调用后端接口并填写表单
之前的问题:
现在的改进:
使用场景示例:
第1次录音: "患者张三,35岁,男"
填写结果:
- 姓名: 张三
- 年龄: 35
- 性别: 男
第2次录音: "患者有咳嗽发烧3天"
填写结果:
- 姓名: 张三 (保持)
- 年龄: 35 (保持)
- 性别: 男 (保持)
- 主诉: 咳嗽发烧3天 (新增)
第3次录音: "实际患者年龄是36岁"
填写结果:
- 姓名: 张三
- 年龄: 36 (覆盖:35→36)
- 性别: 男
- 主诉: 咳嗽发烧3天
日志输出:
[医疗语音助手] 已填写字段: patientName = 张三
[医疗语音助手] 已填写字段: patientAge = 35
[医疗语音助手] 覆盖字段: patientAge = "36"(原值: "35")
[医疗语音助手] 已填写字段: chiefComplaint = 咳嗽发烧3天
警告信息:
Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider
影响:
如果想消除警告:
在 pom.xml 的 WebFlux 依赖中添加排除:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns-native-macos</artifactId>
</exclusion>
</exclusions>
</dependency>
完整的交互流程:
初始状态
按钮显示:🎤 语音输入
按钮颜色:绿色
状态:待机
点击开始录音
按钮显示:⏹️ 停止录音 (60s)
按钮颜色:红色
提示消息:🎤 正在录音...请说话(再次点击按钮结束录音)
录音进行中
按钮显示:⏹️ 停止录音 (59s) → (58s) → ... → (1s)
提示消息:🎤 正在录音...已识别 25 字(45s 后自动结束)
停止方式(3种)
处理中
提示消息:🤖 正在分析医疗信息...
自动填表
提示消息:✍️ 正在填写表单...
高亮显示填写的字段
完成
提示消息:✅ 填写完成!(3秒后消失)
按钮恢复:🎤 语音输入
工作原理:
首次提交
{patientName: "张三", patientAge: 35}filledFields = {patientName: "张三", patientAge: 35}第二次提交
{patientAge: 36, chiefComplaint: "咳嗽"}{patientName: "张三", patientAge: 36, chiefComplaint: "咳嗽"}第三次提交
{chiefComplaint: "咳嗽发烧"}{patientName: "张三", patientAge: 36, chiefComplaint: "咳嗽发烧"}日志示例:
第1次: [医疗语音助手] 已填写字段: patientName = 张三
第1次: [医疗语音助手] 已填写字段: patientAge = 35
第2次: [医疗语音助手] 已填写字段: patientName = 张三 (保持)
第2次: [医疗语音助手] 覆盖字段: patientAge = "36"(原值: "35")
第2次: [医疗语音助手] 已填写字段: chiefComplaint = 咳嗽
第3次: [医疗语音助手] 已填写字段: patientName = 张三 (保持)
第3次: [医疗语音助手] 已填写字段: patientAge = 36 (保持)
第3次: [医疗语音助手] 覆盖字段: chiefComplaint = "咳嗽发烧"(原值: "咳嗽")
步骤1:录入基本信息
说话:"患者张三,35岁,男性"
→ 填写:姓名、年龄、性别
步骤2:录入主诉
说话:"咳嗽发烧3天"
→ 填写:主诉(其他字段保持)
步骤3:补充现病史
说话:"3天前受凉后开始发烧"
→ 填写:现病史(所有字段保持)
最终结果:
步骤1:录入信息
说话:"患者年龄35岁"
→ 填写:年龄 = 35
步骤2:发现错误,修正
说话:"患者实际年龄36岁"
→ 覆盖:年龄 = 36(原值35被覆盖)
最终结果:
打开扩展管理页面
chrome://extensions/
刷新扩展
测试功能
🎤 更自然的交互
🔄 支持分次录入
📊 智能覆盖
🎯 提高准确率
推荐方式:
第1次:基本信息(姓名、年龄、性别)
第2次:主诉和现病史
第3次:既往史和过敏史
优点:
建议:
避免:
方法:
示例:
错误:年龄填成了 30
修正:说话 "患者年龄35岁"
结果:年龄自动从 30 改为 35
所有问题都已修复:
使用体验大幅提升:
现在开始使用新功能吧!重新加载扩展后即可体验! 🚀