zoukankan      html  css  js  c++  java
  • 【AI模型测试】【语言转文字】ASR语音转文字自动化测试阶段性成果物

     ==========================================================================================================

        写在前面:

        从20201123接触ASR到现在,刚好1个月左右的时间,今天可以把ASR部分的内容写个完整的自动化测试总结贴,方便后续查阅。

        1、最开始的需求是:提供3个供应商,需要对三个ASR供应商的结果进行测试,并从中选择1家性价比和识别结果比较好的引入到工作环节。

    由于时间紧,任务重,可能只有1天时间就要给出结果,所以没有办法去使用自动化的形式去进行比较,所以就出来了V1.0纯手工测试和比较效果。

        2、20201203又增加了两家ASR供应商,由于2个任务时间间隔有点大,而且也是一次性任务,所以第一次效果测试结束后,只是用python写了
    简单的存储Excel操作,
    后续效果比对操作是在人工操作测试的,本次的任务也是“快急”,手头也有很多事情需要做,第2次也是人工完成,而且给出了

    主观的评价分值。

        3、从2次的测试结果看,都是半自动+半人工的形式,想着希望能有一种方式,能够自动的去完成ASR人工识别和测试结果,把人工给解放出来。

    于是乎看了一些ASR语音转文字的评价标准和评价工具等,本来想写通过公式写一个评价算法,由于各种因素(可能比想象的要负责一些,增删改错位等)

    所以最后综合考虑用HTK的HResults来实现。

        所以基于此,从20201217开始,在上周搭建的python自动化测试接口框架的基础上,将读取人工结果-分析供应商ASR结果-结果转化为mlf文件-配置HResult对比-

    测试结果汇总-存储Excel等信息进行完整的业务流操作进行全自动测试。

    ==========================================================================================================

    调查和学习ASR语音转文字过程中,帮助比较多的一些信息已经汇总:

    【AI模型测试】语音转文字ASR的测试方法学习

    【AI模型测试】语音转文字ASR测试的测试点和用例设计等

    【AI模型测试】ASR语音转文字的供应商对比测试

    【AI模型测试】语音识别ASR的结果校对(帮助比较大)

    【AI模型测试】语音转文字ASR的测试评价:HTK在windows下的配置说明

    【AI模型测试】ASR语音转文字过程中遇到的问题和解决方案等

    第0步:构思

    1、搭建自动化测试框架

    2、语音转文字的手动测试流程分析,提取自动化测试点,调查测试评价方法等

    3、遇到的问题和解决方案,学习和成长

    第1步:搭建自动化测试框架

    既然想做接口自动化测试,那么首先手头没有自动化测试框架,所以需要搭建一个python的自动化测试框架,搜集学习网上的一些资料 ,加上自己javaUI自动化测试框架的经验借鉴。

    python+logging(日志模块)+Webdriver(Pageobject页面后续用)+requests(请求模块)+HTMLReport(测试报告)+email(发送测试邮件)+ddt(Excel数据读取和写入等)+output(输出结果等)

    等搭建python自动化测试框架。

    通过分层分模块,来约束下各个模块下写的内容,这样方便扩展和维护等。

    python的接口自动化测试框架和内容:(具体框架内容,回头有空写个自动化测试框架搭建的帖子汇总,该框架目前已经在团队里推广使用起来)

    最开始先搭建的Python的UI自动化测试框架,然后在UI自动化测试框架基础上,进行增删改,形成接口自动化测试框架。

      

      然后在接口自动化框架基础上,加上相关的ASR业务属性,以下为ASR的所有的版本迭代记录:

     第2步:语音转文字自动化测试流程设计

    测试流程:

    1、视频MP4素材-》FFmpeg转换为wav文件-》将文件存储到testdata文件夹

    2、封装微软、标贝、捷通、声智、云知声等供应商的ASR接口,存放到api文件夹

    3、调用(2)封装的ASR供应商接口,对(1)语音wav文件进行识别,并将结果存储到Excel和txt文件

    4、读取人工标准答案Excel文件,生成txt文件,对人工和ASR供应商生成的txt文件进行MLF处理,将文件转换为HResults需要的mlf格式

    5、使用HResults对人工mlf-asr供应商mlf进行自动化比对,并将结果存储到txt和Excel文件中

    6、汇总和分析结果,针对结果数据进行评价等后续操作

    HResults处理的核心逻辑:

    WER = (S + D + I ) / N = (S + D + I ) / (S + D + H )  

      • S 为替换的字数,常用缩写WS
      • D 为删除的字数,常用缩写WD
      • I  为插入的字数,常用缩写WI
      • H 为正确的字数,维基百科是C,但我统一改用H
      • N 为(S替换+ D删除+ H正确)的字数

    **遇到的问题

    1、MP4文件转换为wav文件时,转换完的文件无法正常提取出文本

     =》原因:转换完的格式和各供应商ASR接口需要的接口参数和码率等不一致,所以无法识别出真正的文本,就会返回随机错误的文字

    解决方案:将pcm格式改为和接口需要的参数一样,然后重新转码就可以正确提取出来

            # 视频转语音转码
            cmd_f = 'ffmpeg -i "{src_path}" -vn -acodec pcm_s16le  -ac 1 -ar 16000 "{save_path}"'
            os.system(cmd_f.format(src_path=src_path, save_path=save_path))

    2、文件分类引用遇到的问题,总是找不到相关的路径和引用地址

    =》不了解python和pycharm的机制,刚开始使用sys.path.append方式 进行切换,发现这样很不方便使用,后来发现将工程设置为source主目录后,该问题迎刃而解。

    解决方案:【Python自学】python 引用import文件夹下的py文件的方法(转)

    3、读取config文件过程中遇到的问题

    UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa6 in position 9737: ill…

    -》原因和解决方案:编码格式的问题引起的,后来将读取时加上编码格式,问题解决

    config.read(setting.CONFIG_FILE, encoding="utf-8")

    4、UI自动化启动Chrome浏览器遇到的问题

    selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 80

    =》原因和解决方案:由于本地谷歌浏览器和chromedriver的版本不一致导致的。

    https://www.jianshu.com/p/1a8e27fcf01a
    https://blog.csdn.net/weixin_44318830/article/details/103339273

    5、文件里Tab和空格混用导致的问题

    TabError: inconsistent use of tabs and spaces in indentation
    =》解决方案:在IDE设置里将空格和tab键设置下,保持一致就不会出现编译方面的错误

    https://blog.csdn.net/qq_41096996/article/details/85947560
    https://blog.csdn.net/w926498/article/details/80999707
    https://blog.csdn.net/u014657075/article/details/102812173

    6、文件中报红色提示

    import的引用总是提示:unresolved reference

    =》原因和解决方案:【python自学】python自动化测试框架搭建过程中遇到的问题-PyCharm 导包提示 unresolved reference

    7、使用os.system执行过程中,结果出现乱码

    这个问题纠结了一整天,就像陷入了死胡同一样,后来晚上5点多起床上厕所,bingo想出了解决方案。

    本身HResults可能对中文兼容并不好,既然不能直接改变他,就可以绕过他,于是用os.chdir进入要测试的目录,这样完美的屏蔽了该问题。

    =》解决方案:https://www.jb51.net/article/164763.htm 

  • 相关阅读:
    java中创建线程的方式
    idea查看一个接口的子接口或实现类的快捷键
    idea查看源码没有注释的问题
    spring中的Aop
    spring中的ApplicationListener监听器
    spring中的事务管理
    IDEA创建springboot 项目
    xiaopiu产品设计
    java 6大设计原则 一:观察者模式
    java面向对象
  • 原文地址:https://www.cnblogs.com/conquerorren/p/14185029.html
Copyright © 2011-2022 走看看