语音识别在移动医疗app中的应用 ——病历夹与珍立拍的语音识别效果测试比较
作者Dr.2,珍立拍股份公司董事长
Introduction(引言):
以医生为入口的小众移动医疗市场,杏树林的病历夹与医库软件的珍立拍是目前市场上两款以提高医生工作效率为目的的医疗app,并都对语音识别医学术语做了应用性研究,其中珍立拍在2013年8月份推出了语音识别记录病历,但一直只在其官网下载应用,每2周迭代更新一次,截止13年底,真实有效用户为1173个(包括公司的全体员工),没有上app store和发力推广。病历夹于近期上架更新了语音识别模块,并投入了各种资源和钱财进行了广泛的宣传,让更多医生和行业从业人员知晓。因为医学语音识别的探索和应用国内有不少信息科的同仁和医科大学都在做,我一共检索到有用中文文献10篇左右,目前超声科和影像科使用相对成熟一些,并且记录的多为格式化病历信息,所以病历夹近期对语音识别模块的更新不可能夸张到什么重大突破,也谈不上首次,虽然这只是具体的应用层面,不过进行有效宣传对整个移动医疗行业来说,是一件好事。
下面来详细介绍一下这两款软件在语音识别领域与病历记录领域内各自的探索及测试比较。作为医生临床工作的助手软件,经常要识别一些药物名称和疾病名称,这些拗口的专有名词,对语音识别系统提出了很大的挑战。
Materials
and Methods (材料和方法):
测试时间:2014年1月13日
测试机型:
IOS:2个iphone5C,ios7.0.4系统
Android:2个小米2,android4.0系统
随机抽取76种药物名,68种疾病名,由一个人发音测试,相同的手机分别安装两种软件,并隔着相同的距离,进行双盲测试,把手机屏幕正面朝下,使发音人不能看见是哪个机器测试哪种软件。如果可以正确识别的就一遍过去,遇到错误识别时,重新测试一次并换其他人发音识别一次,只要有一次完全正确就算正确。
Result(测试结果):
病历夹:对疾病名称的识别度较高,达到89%;但对药物名称的识别度差一些,准确率为44%。
珍立拍: 对药物名称的识别度较高,准确率为58%;但对一些疾病的识别度比较差,只有54%。
综合来看,目前病历夹领先。
下面将测试的情况一一罗列,并举其中的两个例子进行对比:
药物名称识别情况:
疾病名称识别情况:
识别例子:
① 创伤止痛乳膏(左图为珍立拍识别界面,右图为病历夹识别界面)
识别结果:珍立拍正确,病历夹错误
② 髂骨致密性骨炎(左图为珍立拍识别界面,右图为病历夹识别界面)
识别结果:珍立拍错误,病历夹正确
Discussion(讨论):
我来介绍一下语音识别在医学应用的技术路线。首先这两家公司都没有技术实力去做自己的语音识别系统,均采用第三方的SDK。珍立拍在早期的时候采用云知声的识别引擎,现在android和ios分别采用云知声和科大讯飞的引擎,病历夹可能采用其它引擎或以上中的一个。从技术实现来说,只是一个应用而已,没有任何技术含量和壁垒。那么我们可以做哪些工作呢?
第一阶段 扩充自定义词库
如果只是为了解决无法识别某些词汇的问题,只需要扩充自己的词库即可。相当于自定义词库,从而提高识别率。(附件以android为例,来进行实际编码方案的说明)目前病历夹主要在这个方向进行了努力,输入了大量的自定义词库,并将其定义为医学数据库。这个工作珍立拍目前也在进行中,需要时间和工作量的积累,是一项重复性高的脏活累活。
第二阶段 搭建第三方素材库
目前的语音识别只能单纯识别中文或者英文,但实际临床工作中包括实际病历书写时,有时中文中有英文缩写或者单词,比如“患者施行ERCP术”等,那么系统就无法识别这部分内容。就整个中英文混合识别而言,目前即使再有20年的技术积累也无法实现,但是对少量参杂在医学用语中的中英文混排识别中,可以和语音识别公司深度合作了。MediCool公司近期完工了自己的录音棚,准备录制大批高质量的素材,加入到识别引擎的比对数据库内,或者制作自己的第三方素材库,可以配合多个语音识别公司。也就是说,把整个中文加少量英文的一些固定搭配变成一个新的词,整体识别。这个工作量是非常大的,只能先从最常用最基本的做起,同时还要避免手机端处理能力有限,数据包过重的问题(如果装一个 APP要下载1个G,我想90%的用户都会跑掉)。整个实现过程中需要的人力物力也很多,目前我们仅有70人的团队捉襟见肘,只能尽力而为,还在不断摸索中。但这个内容采集工作本身也是有价值的(其实业内的语音识别公司无论如何优化算法和查找比对引擎,这个基础工作也是要有人去做的,并且这个样本数据越多越好),借助云计算的威力可以快速精准识别。
此外,我们会免费将第三方素材库开放给行业内其他移动医疗创业企业,共同构建医学语音识别生态链,避免重复投资,减少整个社会资源的浪费。
以下是广告时间:MediCool医库软件目前还在照片文字识别及云服务上进行了持续投入。春节后,我们将开始进行测试,医生上传手机拍照的文字照片至云端后,我们进行识别后转成文档,并人工修订部分错误后自动发回,以给用户更好的体验。该服务并不仅限于医疗领域,各行各业都有需要。同时我们 2次500VIP活动的用户群终身免费,一直以来不停有人询问VIP和普通用户的区别,现在可以做一部分回答了。
附件:语音识别自定义用户词库的技术路线实例(android)
根据科大讯飞sdk使用规范说明,申请的APPID和下载的SDK具有一致性!即android跟ios所使用的sdk key是不一样,珍立拍开发中确实也如此。
所以如果要使用自定义词汇的话,android、ios是必须分别做上传自定义词汇操作。
以android为实例
1、在web端后台管理系统中增加一个自定义词汇录入界面,把数据存储在服务器数据库中,统一管理android跟ios自定义词汇;
2、php服务提供自定义词汇接口;
3、android端使用语言识别的时候调用php接口获取自定义词汇;
4、android调用科大讯飞语言识别api,具体参数设置如下:
mIat.setParameter(SpeechConstant.LANGUAGE,
"zh_cn");// zh_cn 中文;en_us 英文
mIat.setParameter(SpeechRecognizer.GRAMMAR_ENCODEING,
"utf-8");
mIat.updateLexicon("contact", "张叁 李肆 王武", lexiconListener);//张叁
李肆 王武 就是从服务器获取的
mIat.setParameter(SpeechConstant.DOMAIN,
"iat");
mIat.setParameter(SpeechConstant.PARAMS,
"asr_ptt=1");
注意点:以上参数必须在SpeechRecognizer的初始化监听onInit回调成功之后设置才有效!具体代码:
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(ISpeechModule module, int code) {
if (code == ErrorCode.SUCCESS) {
setParameters(); //设置参数
}else if(code == 21001){//没有安装语言插件
}else {
}
}
};
测试结果:说张三、李四的时候,识别结果是张叁、李肆,达到预想结果;并且当自定义词汇更改的时候会使用最新的词汇,即第一次是‘张叁’,改为‘张三’之后,再次识别会是‘张三’。
(欢迎转载,注明作者和来源即可,愿意与Dr.2交流的请加微信号:2823095726)
浏览次数:7280次