人工智能,应该如何测试?(五)ASR 效果测试介绍

简介: ASR是自动语音识别技术,将语音转化为文本,涉及多学科知识。数据收集是关键,包括特定人/非特定人、词汇量大小、发音方式、方言和情感等多种类别,高质量数据成本高。ASR流程包括数据收集、标注、输入算法得到文本输出并评估。常用评估指标有字错率(WER)、字正确率及插入/删除/替换率。数据标注需严格遵循规范,工作量大,而Levenshtein库可用于自动化效果评测。在AI领域,大部分时间投入在数据处理上。

什么是 ASR

ASR 是自动语音识别(Automatic Speech Recognition)的缩写,是一种将人的语音转换为文本的技术。这项技术涉及声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等多个学科。ASR 系统的性能受到识别词汇表的大小和语音的复杂性、语音信号的质量、单个说话人或多个说话人以及硬件等因素的影响。

数据收集

经过之前的介绍我们知道在评估模型的效果时,最重要的是收集到符合场景的测试数据。ASR 系统通常可以分为特定人和非特定人识别,以及小词汇量、中词汇量和大词汇量系统。根据语音的输入方式,可以分为孤立词、连接词和连续语音系统等。此外,还可以根据输入语音的发音方式(如朗读式和口语式)、方言背景(如普通话、方言背景普通话和方言语音识别系统)以及情感状态(如中性语音和情感语音识别系统)进行分类。 所以其实大家可以看出来,要收集这么多类别的语音素材,也是非常麻烦的。我们之前这里有个兄弟,为了收集到足够的数据,专门申请下来一笔经费在平台上发布悬赏 – 给定特定的文本,悬赏不同年龄,性别,方言等条件下的人来朗读这些文本,把语音文件发送给这位兄弟来换取钱财。 所以高质量数据的成本是不低的,记得我们前两个月有个项目, 项目上准备了 20W 的预算来采买数据。 这种数据比较难有取巧的方式,要不怎么说高质量数据是国内外模型最大的差距呢。

效果流程

  • 数据收集
  • 标注音频数据
  • 将音频输入 ASR 算法模块得到输出结果(一个文本)
  • 计算模型评估指标

评测数据集构建

这个我们上面说过,我们需要收集各种类别的数据,这部分工作十分重。不同的项目有不同的要求, 比如我这里列一个可以从网络上下载到的数据的样例:

  • 新闻类数据: 覆盖 40 个综合新闻以及 31 个省市的 44 个主要综合类新闻数据,每一类节目挑选一个视频,每个视频时长大约为 30-60 分钟。
  • 融媒体类数据:覆盖日报和电视台类输出的 app35 个,其中主要包含了下载超百万的 app,包含有(人民日报,大众日报,北京日报,湖北日报,广州日报,河北日报,工人日报,河南日报,光明日报,中国青年报,南方都市报,新华社,南方周末,新民,羊城派,,荔枝新闻),这一类 app 每个挑选 100 个视频素材,其余低下载量的选择 20 个素材(主要依据下载量的比例来确定挑选的测试数据比例)
  • 体育类,综艺类,影视剧类等等。。。。要搞数据太难了, 好在我们团队有专门的数据组。

数据标注规范

主要需要标注的内容有:文本转写,标点符号转写,说话人区间分离,无效数据区间标注。 这里还是只给一些规范上的样例:

  • 转写内容与实际发音内容一致,转写的字正确率要达到 99%;但是,对于因为口音或者个人习惯导致的音变,仍按照原内容转写。(比如把 “银行”,读成了 ying 2 hang2,按照 “银行” 转写;另外,对于多音字或实际生活中易混淆的字,按照原内容转写:比如办公室的 “室”,有的人读 shi3 ,有的人读 shi4 ,请按照正确的字 “办公室” 转写即可)

  • 转写内容的完整性要与实际发音一致,不得删减;(如发音为:我是北北京人;“北” 字有重复现象,那转写的时候要写成:我是北,北京人。)

  • 转写遇到人名时,按照常用字词表示即可,没有特定的字词规定。如:李珊、李山、李姗等;

  • 遇到数字,按照数字的汉字写法 “一二三” 形式,而不是 “123” 阿拉伯数字形式;(如果有电报读法,如幺幺零等,按照电报读法进行转写;)

  • 遇到网络用语时,如实际发音是 “灰常”“孩纸”“童鞋”,也应该写成 “灰常”“孩纸”“童鞋”,不能写成 “非常”“孩子”“同学”。

  • 儿化音:

    • 原音频有儿化音,则转写中应带有 “儿”,以 “哪儿” 为例,如果读出了儿化,则转写为 “哪儿”;
    • 原音频无儿化音,则转写中不应带有 “儿” -仍然以 “哪儿” 为例,如果发音人没读出儿化音,则转写为 “哪”;
  • 语气词: 音频中说话人清楚地讲出的语气词,如 “呃 啊 嗯 哦 唉” 等,要按照正确发音进行转写。

  • 英文:

    • 对于拼读格式(包括拼出的字母,首字母缩写词或者一些缩写),每一个被拼出的字母都应大写加空格。例如:M A R Y 而不是 mary 或者 MARY
    • 商标、品牌、注册名等都应以其原有、专有的格式出现, 例如: Hotmail dot com 而不是 hot mail dot com
  • 个别字词不确定的,在有意义的情况下,尽量用同音字代替。实在无法转写的,这句话切出无效。 -多人说话重叠部分,若能写出主说话人的内容,在这部分前后标记出/multi 标签。若无法转写主说话人的内容,这整句切出来无效标/unk 标签

因为规范比较多, 我就列一些规范上的样例, 所以大家也看到了, 数据标注的工作量也很高, 还好可以申请标注组的人力。

模型评估指标的计算

WER 字错率

WER(Word Error Rate)指的是机器翻译或者语音识别系统中,系统输出的单词与原始单词之间错误的比例。这个指标通常用于评估机器翻译或语音识别系统的性能。WER 的计算方式是将系统错误翻译的单词数除以总的单词数。

计算公式: WER 字错率=识别文本相对标注文本的编辑距离/标注文本总字数

代码示例:

import Levenshtein

text1 = "我是谁,我是一种测试人员啊"
text2 = "我是谁,我是一个研发人员啊"
distance = Levenshtein.distance(text1, text2)
print(f"The Levenshtein distance between '{text1}' and '{text2}' is {distance}.")
wer = distance/len(text1)
print(f"The wer is {wer}.")

字正确率

字正确率=识别正确的字数/标注文本总字数

插入/删除/替换率

插入率 = 插入操作的次数/标注文本总字数
删除率 = 删除操作的次数/标注文本总字数
替换率 = 替换操作的次数/标注文本总字数

代码示例:

import Levenshtein

def calculate_error_rates(ref, hyp):
    # 计算Levenshtein距离和编辑操作
    editops = Levenshtein.editops(ref, hyp)

    # 计算插入率、删除率和替换率
    insertions = 0
    deletions = 0
    substitutions = 0

    for op in editops:
        if op[0] == 'insert':
            insertions += 1
        elif op[0] == 'delete':
            deletions += 1
        elif op[0] == 'replace':
            substitutions += 1

    # 计算总字符数
    total_chars = len(ref) + len(hyp)

    # 计算插入率、删除率和替换率
    insertion_rate = insertions / total_chars
    deletion_rate = deletions / total_chars
    substitution_rate = substitutions / total_chars

    return insertion_rate, deletion_rate, substitution_rate

# 示例
ref = "我喜欢吃苹果"
hyp = "我欢吃橙子啊"

insertion_rate, deletion_rate, substitution_rate = calculate_error_rates(ref, hyp)

print(f"Insertion rate: {insertion_rate:.2%}")
print(f"Deletion rate: {deletion_rate:.2%}")
print(f"Substitution rate: {substitution_rate:.2%}")

总结

可以看到通过 Levenshtein 库我们可以比较容易的把效果的评测自动化起来, 当然前提是数据和标注都准备好~。 所以还是那句话,在人工智能领域中工作的人, 大部分时间都是花在数据上。

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
4天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能,应该如何测试?(六)推荐系统拆解
该文介绍了推荐系统的基本概念和实现思路。推荐系统通过预处理筛选候选集合,然后利用二分类模型预测用户对内容的喜好概率,再按概率排序选择Top N内容推荐给用户。文中提供了一个使用Spark ML库的简单模型训练DEMO,涉及数据预处理、特征工程和逻辑回归模型。此外,还提及了词向量在处理文本特征中的重要性,它能捕捉词与词之间的关联性。推荐系统的实际应用远比示例复杂,但这个例子有助于理解其核心流程。
28 0
|
4天前
|
机器学习/深度学习 人工智能 安全
中国信通院联合金橙果科技等十七家单位发起人工智能大模型安全基准测试
2024年2月20日下午,AIIA“SafetyAI Bench”(人工智能大模型安全基准测试)线上研讨会成功举办。来自中国信息通信研究院(以下简称“中国信通院”)、厦门大学、北京大学、北京交通大学、360、百度、蚂蚁集团、VIVO、西门​子、小鹏汽车、马上消费、浪潮科技、海信视像、交通银行、商汤科技、邮储银行、普华永道、科大讯飞、金橙果科技、万商天勤律所、中兴通讯、博特智能、开源网安、云天励飞等单位40余位科研机构专家及企业代表参加了本次会议。
|
4天前
|
人工智能 测试技术
测试数据不再难,人工智能批量生成给你用!
本文介绍了如何利用ChatGPT生成测试数据。测试数据是验证功能和触发异常场景的关键,设计时需全面考虑等价类、边界值和正交法。实践中,先明确数据类型、格式和需求,然后向ChatGPT提供相关信息。例如,对于只能输入中国手机号的输入框,初始提示可能只包含正常手机号,但应进一步补充异常场景,如非数字、长度错误、非中国号码、特殊字符、空输入等。此外,可通过指定yaml格式来满足代码使用需求。总结来说,生成测试数据需清晰定义需求,拆分任务,并系统测试各种变化。
25 2
|
4天前
|
人工智能 测试技术
探索人工智能在测试领域的新纪元:AI编写测试用例的前景
本文介绍了测试用例的重要性及其基本组成元素,如模块、标题、前置条件等。通过实践演练展示了如何利用ChatGPT自动生成测试用例,包括关键词精确匹配、模糊匹配、异常输入和搜索结果为空的场景。通过向ChatGPT提供详细需求和格式规范,可以得到Markdown格式的测试用例,然后导入Excel进行归档。关键在于清晰阐述需求、逐步细化任务,并对ChatGPT的回复进行调整优化。
43 3
|
4天前
|
人工智能 数据可视化 测试技术
精准高效测试计划,人工智能帮你制定
测试计划文档包括测试范围、方法、资源和进度,涉及测试项、特性、任务、执行者和风险控制。测试经理需制定文档大纲,细化测试任务,如用例编写、执行、资源分配及风险管理。2周测试周期内,5名测试人员将进行单元、集成、功能、性能和安全测试,以及缺陷验证和总结报告。在实际操作中,需注意人员匹配、任务平衡和沟通协调。由于ChatGPT输出的甘特图有误,需手动修正,最终完成测试计划的可视化表示。实践中,明确需求、拆分任务和校验输出是关键。
21 0
|
4天前
|
人工智能 自然语言处理 搜索推荐
人工智能,应该如何测试?(八)企业级智能客服测试大模型 RAG
大模型如GPT虽表现出众,但在特定领域和实时信息方面表现不足,易产生“幻觉”即编造答案。其能力受限于训练数据,无法提供超出数据范围的专业知识。为解决此问题,采用意图识别模型预判问题归属,结合检索增强生成(RAG)技术,通过检索相关信息注入大模型以提升回答质量。测试人员利用RAG评估模型效果,有时借助GPT进行自动化评分,尤其是在非专业领域,但GPT评分的准确性仍有限,人工评估更为可靠。
26 0
|
4天前
|
人工智能 搜索推荐 算法
人工智能,应该如何测试?(七)大模型客服系统测试
这篇文稿讨论了企业级对话机器人的知识引擎构建,强调了仅靠大模型如 GPT 是不够的,需要专业领域的知识库。知识引擎的构建涉及文档上传、解析、拆分和特征向量等步骤。文档解析是难点,因文档格式多样,需将内容自动提取。文档拆分按语义切片,以便针对性地回答用户问题。词向量用于表示词的关联性,帮助模型理解词义关系。知识引擎构建完成后,通过语义检索模型或问答模型检索答案。测试环节涵盖文档解析的准确性、问答模型的正确率及意图识别模型的性能。整个过程包含大量模型组合和手动工作,远非简单的自动化任务。
262 0
|
4天前
|
机器学习/深度学习 数据采集 人工智能
人工智能,应该如何测试?(四)模型全生命周期流程与测试图
本文补充了完整的业务和测试流程,包括生命周期流程图,强调测试人员在模型测试中的角色。主要测试活动有:1) 离线模型测试,使用训练集、验证集和测试集评估模型;2) 线上线下一致性测试,确保特征工程的一致性;3) A/B Test,逐步替换新旧模型以观察效果;4) 线上模型监控,实时跟踪用户行为变化;5) 数据质量测试,验证新数据质量以防影响模型效果。
27 0
|
4天前
|
人工智能 分布式计算 Kubernetes
人工智能,应该如何测试?(三)数据构造与性能测试篇
本文探讨了人工智能场景中的性能测试,区别于传统互联网测试,其复杂性更高。主要关注点包括两类AI产品——业务类和平台类,后者涉及AI全生命周期,测试难度更大。测试重点是模型训练的性能,特别是数据模拟。需要构造大量结构化数据,如不同规模、分布、分片和特征规模的数据,以评估算法效率。此外,还涉及模拟设备规模(如视频流)和节点规模(边缘计算),以测试在大规模负载下的系统性能。文中提到了使用工具如Spark、ffmpeg、流媒体服务器和Kubernetes(K8S)的扩展项目,如Kubemark,来模拟大规模环境。最后,文章介绍了使用Golang进行异步IO操作以构建海量小文件,优化IO性能。
229 0
|
4天前
|
机器学习/深度学习 数据采集 人工智能
人工智能,应该如何测试?(二)数据挖掘篇
在AI模型开发中,数据起着决定性作用,模型的性能往往受限于数据的质量和量级。建模工程师大部分时间都在与数据打交道,而中国在AI发展上与国外的主要差距并不在于计算能力,而是高质量的数据。测试人员不仅需要评估模型效果,也需要处理数据,包括数据采集、质量监控、构造、ETL(提取、转换、加载)和特征工程等。
43 0

热门文章

最新文章