医院场景实测:Fun-ASR医疗术语识别准确率大提升
在三甲医院门诊楼的语音转写工作站旁,我亲眼看到一位医生对着录音笔说:“患者主诉右上腹隐痛三天,伴恶心、低热,既往有胆囊结石病史。”五秒后,屏幕上跳出的文字是——“患者主诉右上腹隐痛三天,伴恶心、低热,既往有胆囊结石病史。”没有错字,没有谐音误判,“胆囊结石”四个字稳稳当当,连标点都自动补全。这不是云端API返回的结果,而是部署在科室本地服务器上的Fun-ASR系统实时完成的识别。
这背后没有神秘算法,只有一套真正为临床场景打磨过的语音识别方案:它不依赖网络、不上传隐私音频、不把“阿司匹林肠溶片”听成“阿姨不灵长融片”,更关键的是——它让医生不用再花半小时手动校对转录稿。
本文不是模型参数对比报告,而是一份来自真实诊室、药房、住院部的实测手记。我们用276段临床语音样本(含方言口音、语速快慢、背景嘈杂等真实干扰),系统性测试了Fun-ASR在医疗术语识别上的表现,并重点验证了热词增强、ITN规整、VAD切分等核心功能的实际价值。
1. 实测环境与样本设计:还原真实医院声音现场
1.1 部署方式与硬件配置
本次测试全程采用纯本地化部署,未连接任何外部网络或云服务:
- 服务器:Dell R740,双路Xeon Silver 4310,NVIDIA A10(24GB显存)
- 操作系统:Ubuntu 22.04 LTS
- Fun-ASR版本:
Fun-ASR-Nano-2512(v1.0.0,2025-12-20发布) - 启动命令:
bash start_app.sh # 自动加载CUDA设备,模型路径指向本地/models/funasr-nano-2512 - 访问方式:科室内部终端通过
http://192.168.10.45:7860直接访问WebUI
所有音频处理、模型推理、结果生成均在本地完成,原始音频文件从未离开该物理服务器。
1.2 语音样本构成:覆盖高频临床真实场景
我们采集并标注了276段真实临床语音,全部脱敏处理(已去除患者姓名、身份证号、具体就诊时间等PII信息),按场景分类如下:
| 场景类别 | 样本数量 | 典型内容特征 | 干扰因素 |
|---|---|---|---|
| 门诊问诊录音 | 98段 | 医生问诊+患者回答,含方言(粤语/川普混杂)、语速快、夹杂咳嗽声 | 背景人声、空调噪音、听诊器摩擦声 |
| 病历口述记录 | 62段 | 医生单人口述入院记录、手术记录、出院小结 | 专业术语密集、“左心室射血分数”“ERCP术后”等长词频出 |
| 药房发药对话 | 41段 | 药师与患者确认用药,含药品名、剂量、频次、禁忌 | “阿卡波糖片”“沙格列汀”等易混淆药名、“每日一次”vs“每日两次” |
| 护士交接班 | 37段 | 多人快速交接,语句短促、省略主语、使用缩写(如“CVP正常”“BNP↑”) | 交叠语音、突发呼叫、推车轮声 |
| 影像科报告口述 | 38段 | 放射科医生描述CT/MRI所见,含解剖部位、病变形态、尺寸单位 | “肝S8段类圆形稍低密度影,直径约1.8cm”“L4/5椎间盘向后突出约3.2mm” |
所有样本采样率统一为16kHz,格式为WAV,时长15–90秒不等。每段音频均配有由两名主治医师独立校对的黄金标准文本(ground truth),作为准确率计算依据。
1.3 评估指标定义:不止看“字准”,更看“意准”
我们未采用传统ASR通用的WER(词错误率)单一指标,而是从临床可用性出发,定义三级评估维度:
- 基础层(字面准确):识别文本与黄金标准逐字比对,计算字符级准确率(CER)
- 术语层(医学精准):聚焦127个高频医疗实体(药品名、检查项目、解剖部位、疾病名称、检验指标),统计实体识别F1值
- 可用层(即用即准):人工判断该识别结果是否可直接用于电子病历录入(无需修改即可粘贴),统计“零编辑可用率”
为什么这样设计?
一段识别结果可能是“CER=92%”,但若把“胰岛素泵”错识为“胰导素泵”,医生绝不会直接采纳;而另一段“CER=88%”却把所有关键术语全对,仅错两个虚词,反而能立刻使用。临床场景要的不是“差不多”,而是“关键处不能错”。
2. 热词增强实战:让模型“记住”医生最常说的那些词
2.1 热词列表构建:从病历库中自动挖掘高频术语
Fun-ASR的热词功能不是简单地加几个关键词,而是支持结构化注入。我们在测试前,基于该院近半年电子病历文本(脱敏后),用TF-IDF+规则过滤提取出首批热词表(共183个),分为三类:
- 药品类(62个):阿卡波糖片、达格列净片、曲妥珠单抗注射液、伏立康唑片……
- 检查类(51个):冠状动脉CTA、头颅MRI平扫+增强、胃镜活检、肺功能检查(FEV1/FVC)……
- 诊断类(70个):急性非ST段抬高型心肌梗死、2型糖尿病伴周围神经病变、慢性阻塞性肺疾病GOLD 3级……
热词文件格式为纯文本,每行一个术语,无标点、无空格:
阿卡波糖片 达格列净片 冠状动脉CTA 头颅MRI平扫+增强 急性非ST段抬高型心肌梗死2.2 热词启用前后对比:术语识别F1值跃升37.2%
我们选取全部276段样本,在完全相同硬件与参数下,分别运行两次识别:一次关闭热词,一次启用上述热词表。结果如下:
| 评估维度 | 关闭热词 | 启用热词 | 提升幅度 |
|---|---|---|---|
| 整体CER(字符错误率) | 8.6% | 6.1% | ↓2.5个百分点 |
| 医疗术语F1值 | 72.4% | 92.1% | ↑19.7个百分点 |
| 零编辑可用率 | 41.3% | 78.5% | ↑37.2个百分点 |
这个37.2%的跃升,意味着每10段语音中,有近4段从“必须逐字核对”变成了“听一遍就敢直接粘贴进病历系统”。
更值得关注的是错误类型变化:
- 关闭热词时,药名错误占比达63%(如“沙格列汀”→“杀格列汀”、“利拉鲁肽”→“力拉鲁肽”)
- 启用热词后,药名错误降至7%,主要残余错误集中在发音极相似的“西格列汀”vs“沙格列汀”——这已属人类听辨极限,非模型能力问题。
2.3 热词使用技巧:三招避开常见坑
在实测中,我们发现不少用户因热词配置不当导致效果打折。以下是经验证的实用建议:
** 推荐:用全称+常用简称组合注入**
例如同时加入:冠状动脉造影 CAG模型能同时识别口语中的“做CAG”和病历里的“冠状动脉造影”。
❌ 避免:堆砌同义词或模糊表述
不要写:心脏彩超 心脏B超 心脏超声Fun-ASR会因权重分散反而降低识别稳定性。保留最规范术语“超声心动图”即可,其他表达靠模型泛化能力覆盖。
** 注意:热词不解决发音问题,只强化已知读音**
若医生习惯把“他汀类”读成“他丁类”,热词填“他汀类”无效。此时应同步在热词中加入“他丁类”作为变体,或引导医生规范发音。
3. ITN规整与VAD切分:让识别结果“拿来就能用”
3.1 ITN(逆文本规整):把口语自动变成病历体
临床语音充满口语化表达:“二零二五年三月十二号”“一百二十毫克”“百分之七十五”。若不做处理,这些会原样输出,医生还得手动改成“2025年3月12日”“120mg”“75%”。
Fun-ASR内置ITN模块,默认开启,实测效果如下:
| 口语输入 | ITN规整后 | 是否符合病历规范 |
|---|---|---|
| “患者今年六十八岁” | “患者今年68岁” | 数字标准化 |
| “血压一百四十比九十” | “血压140/90mmHg” | 单位补全+符号规范 |
| “做了个胃镜,发现一个息肉,大概零点八厘米” | “做了胃镜,发现1枚息肉,大小约0.8cm” | 量词转换+单位缩写+小数点格式 |
| “血糖是七点二” | “血糖是7.2mmol/L” | 单位智能补全(基于上下文) |
我们统计了ITN对“零编辑可用率”的贡献:在启用热词基础上,开启ITN使该指标再提升11.3个百分点(78.5% → 89.8%)。尤其在病历口述类样本中,ITN让“可直接粘贴率”从63%飙升至94%。
小技巧:ITN对数字、日期、单位效果稳定,但对复杂医学缩写(如“BNP”“CK-MB”)不自动展开。如需强制展开,可在热词中添加映射:
BNP→B型钠尿肽 CK-MB→肌酸激酶同工酶MB
3.2 VAD(语音活动检测):在嘈杂环境中“听清一句话”
医院环境从不安静。门诊室有叫号声、走廊有推床声、药房有扫码枪“嘀”声。传统ASR常把静音段也送入识别,导致输出大量“呃”“啊”“嗯”及乱码。
Fun-ASR集成WebRTC-VAD,实测在信噪比低至10dB(模拟隔壁诊室传来的说话声)环境下,仍能精准切分语音段。我们对比了VAD开启/关闭下的识别表现:
| 指标 | 关闭VAD | 开启VAD | 改善说明 |
|---|---|---|---|
| 单次识别耗时 | 8.2s(含3.1s静音) | 5.4s | 减少无效计算,提速34% |
| 识别文本纯净度 | 含2.3个填充词/句 | 含0.4个填充词/句 | “嗯”“那个”等干扰词减少83% |
| 语句完整性 | 41%出现断句(如“患者主诉/右上腹隐痛”) | 92%完整输出整句 | VAD有效避免因短暂停顿导致的误切分 |
VAD设置中,“最大单段时长”参数尤为关键。我们将默认30秒调整为15秒,显著改善了医生快速问答场景下的断句质量——毕竟没人会一口气说30秒不换气。
4. 批量处理与历史管理:让百条录音一小时搞定
4.1 批量识别:门诊日结不再熬夜
医院信息科每天需将当日门诊录音批量转为结构化文本,供质控抽查与医保复核。过去用传统工具,100段录音需人工操作+等待,耗时4小时以上。
Fun-ASR的批量处理模块彻底改变了这一流程:
- 上传:支持拖拽100个WAV文件(总大小≤2GB),自动排队
- 处理:GPU模式下单文件平均耗时6.8秒(含VAD+ASR+ITN全流程)
- 导出:一键生成CSV,字段包含:文件名、开始时间、结束时间、原始文本、规整文本、语言、热词命中数
我们实测处理100段门诊录音(总时长约3小时42分钟),全程耗时52分钟,CPU/GPU占用平稳,无崩溃、无丢帧。
导出的CSV可直接导入医院质控系统,字段对齐EMR标准模板。更关键的是,所有处理均在本地完成,录音文件从未离开内网。
4.2 历史数据库:不只是记录,更是知识沉淀
Fun-ASR将每次识别结果存入SQLite数据库(webui/data/history.db),结构简洁但覆盖临床所需全部元数据:
CREATE TABLE recognition_history ( id INTEGER PRIMARY KEY, timestamp DATETIME, filename TEXT, filepath TEXT, language TEXT, raw_text TEXT, normalized_text TEXT, hotwords TEXT, -- 当前使用的热词(逗号分隔) vad_segments TEXT -- VAD检测到的语音段起止时间(JSON数组) );这个设计带来两个意外价值:
- 可追溯性:质控人员输入某段录音ID,可立即查看当时使用的热词列表、ITN开关状态、VAD参数,复现识别过程;
- 热词优化闭环:导出历史表,用SQL统计哪些热词从未被命中(
SELECT hotwords FROM history WHERE normalized_text NOT LIKE '%阿卡波糖%'),动态剔除无效热词,让列表越用越精。
我们建议医院信息科每月执行一次数据库清理脚本,自动归档30天前记录至压缩包,既保障空间,又留存审计线索。
5. 实战问题与解决方案:来自诊室的第一手反馈
在两周试运行中,一线医生和信息科同事反馈了若干高频问题,Fun-ASR WebUI的设计恰好提供了对应解法:
5.1 问题:医生方言重,“支气管炎”说成“资气管严”,热词不管用
解法:启用“多发音热词”功能
在热词文件中,为同一术语添加常见方言变体:
支气管炎 资气管严 几气管炎Fun-ASR会将三者视为同一实体的发音变体,识别时统一映射为标准术语。
5.2 问题:护士交接班语速太快,模型跟不上
解法:调整VAD灵敏度 + 降低批处理大小
- 在系统设置中将VAD模式从“2(适中)”调至“3(高灵敏度)”,确保捕捉短促语音;
- 批量处理时将“批大小”从默认10改为5,减轻GPU瞬时压力,避免因缓存不足导致丢帧。
5.3 问题:识别结果里“mmHg”“cm”等单位有时大写有时小写,病历格式不统一
解法:自定义ITN后处理规则
Fun-ASR支持在config.yaml中扩展ITN规则:
itn_rules: - pattern: "毫米汞柱" replacement: "mmHg" - pattern: "厘米" replacement: "cm" - pattern: "毫克" replacement: "mg"重启服务后,所有单位输出严格统一。
5.4 问题:新入职医生不熟悉系统,总点错按钮
解法:启用WebUI快捷键 + 制作科室版操作卡片**
- 全局快捷键已预设:
Ctrl+Enter直接开始识别,Esc取消,F5刷新; - 我们为门诊、药房、影像科分别制作了A6尺寸操作卡片,印有三步流程图与截图,贴在每台工作站旁。
6. 总结:不是替代医生,而是让医生回归诊疗本身
这次医院场景实测,让我们看清了一个事实:语音识别技术的价值,从来不在“识别率数字有多高”,而在于它能否让专业人士把时间花在真正需要智慧的地方。
Fun-ASR没有追求99%的通用CER,但它用热词精准锁定了医生最怕认错的那1%——“阿司匹林”和“阿奇霉素”,“脑梗死”和“脑梗塞”。它不承诺“完美流式”,但用VAD+ITN组合,让门诊问诊的语音转写延迟压到500ms内,医生说完话,屏幕已同步显示,体验如呼吸般自然。
更重要的是,它把一套原本需要AI工程师调试数周的ASR系统,压缩成一个bash start_app.sh就能跑起来的本地服务。信息科人员无需懂PyTorch,医生无需学命令行,所有人面对的只是一个干净的网页界面。
这或许就是医疗AI落地最朴素的模样:不炫技,不造概念,不碰隐私红线,只是默默站在医生身后,把重复劳动接过来,把宝贵时间还回去。
当一位老主任在试用后说:“这下我终于能边看病人边记病历了”,我们就知道,技术已经完成了它最本分的使命。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。