自定义语音模型

重要

由于Azure 媒体服务停用公告,Azure AI 视频索引器会宣布 Azure AI 视频索引器功能调整。 请参阅 与 Azure 媒体服务(AMS)停用 相关的更改,了解 Azure AI 视频索引器帐户的含义。 请参阅 AMS 停用准备:VI 更新和迁移指南

注意

语音模型自定义(包括发音训练)仅在视频索引器 Azure 试用帐户和资源管理器帐户中受支持。 经典帐户不支持它。 有关如何以无成本更新帐户类型的指南,请参阅 更新 Azure AI 视频索引器帐户。 有关使用自定义语言体验的指导,请参阅 “自定义语言模型”。

通过 Azure AI 视频索引器与 Azure AI 语音服务的集成,通用语言模型用作使用 Microsoft 拥有的数据训练并反映常用口语的基本模型。 此基础模型使用了代表各常见地域的方言和发音进行了预先训练。 基础模型在大多数语音识别场景中都效果良好。

但是,有时基本模型的听录无法准确处理某些内容。 在这些情况下,自定义语音模型可用于通过提供文本数据来训练模型来提高对特定于域的词汇或发音的识别。 通过创建和调整语音自定义模型的过程,可以正确转录内容。 使用视频索引器语音自定义无需额外付费。

何时使用自定义语音模型?

如果你的内容包含行业特定的术语,或者在查看视频索引器听录结果时,你注意到不准确,则可以创建和训练自定义语音模型来识别术语并改善听录质量。 仅当相关字词和名称应重复显示在计划编制索引的内容中时,才值得创建自定义模型。 训练模型有时是一个迭代过程,你可能会发现,在初始训练之后,结果仍然可以使用改进,并受益于其他训练,请参阅 “如何改进自定义模型 ”部分以获取指导。

但是,如果你注意到脚本中转录了一些字词或名称不正确,则可能不需要自定义语音模型,尤其是在你计划在将来编制索引的内容中通常使用单词或名称时。 只需编辑和更正视频索引器网站中的脚本(请参阅 Azure AI 视频索引器网站中的查看和更新听录),无需通过自定义语音模型对其进行处理。

有关支持自定义模型和发音的语言列表,请参阅 Azure AI 视频索引器语言支持表中语言支持的自定义和发音列。

训练数据集

为视频编制索引时,可以使用自定义语音模型来改进听录。 模型通过加载 包含纯文本数据和发音数据的数据集 来训练模型。

用于测试和训练自定义模型的文本应包含一组不同内容和方案的示例,你希望模型能够识别这些示例。 创建和训练数据集时,请考虑以下因素:

  • 包含涵盖用户与模型交互时所做语言陈述类型的文本。 例如,如果内容主要与运动相关,请使用包含与运动相关的术语和主题的内容来训练模型。
  • 包含你希望模型识别的所有语音差异。 许多因素可能会改变语音,包括口音、方言和语言混合。
  • 仅包含与计划转录的内容相关的数据。 包括其他数据可能会整体损害识别质量。

数据集类型

有两种数据集类型可用于自定义。 若要确定用于解决问题的数据集,请参阅下表:

使用案例 数据类型
提高特定于行业的词汇和语法(例如医疗术语或 IT 行话)的识别准确度。 纯文本
定义发音不标准的字词或术语(例如产品名或首字母缩写)的语音和显示形式。 发音数据

用于训练的纯文本数据

数据集(包括相关文本的纯文本句子)可用于改进域特定字词和短语的识别。 相关文本句子可通过在上下文中显示常见字词和领域特定字词,来减少与错误识别这些字词相关的替换错误。 特定领域的字词可能不太常见或者属于杜撰的字词,但其发音必须易于识别。

纯文本数据集的最佳做法

  • 在单个文本文件中提供与领域相关的句子。 可以上传字词列表,而不是使用完整句子。 然而,虽然这会将它们添加到词汇中,但它不教系统如何通常使用单词。 通过提供完整或部分语句(用户很可能会说事物的句子或短语),语言模型可以学习这些新字词及其用法。 自定义语言模型不仅适用于向系统中添加新字词,还适用于调整应用程序已知字词的概率。 提供完整话语可帮助系统更好地学习。
  • 使用接近预期话语的文本数据。 话语不需要是完整的或语法正确的,但必须准确反映此模型预期能够识别的语音输入。
  • 尝试在单独的行中为每个句子或关键字 (keyword)。
  • 若要增加某个术语(如产品名称)的权重,请添加多个包含该术语的句子。
  • 对于内容中使用的常见短语,提供许多示例非常有用,因为它告知系统侦听这些术语。 
  • 避免将不常见的符号 (~, # @ % &) 作为 dis卡。 他们出现的句子也变得不屑一卡。
  • 避免放置太大的输入(如数十万个句子),因为这样做会稀释提升的效果。

参考下表来确保正确设置纯文本数据集文件的格式:

属性
文本编码 UTF-8 BOM
每行的话语数 1
文件大小上限 200 MB

请尝试在纯文本文件中遵循以下准则:

  • 避免重复字符、字词或单词组超过三次,例如“是是是是”,因为服务可能会删除重复次数过多的行。
  • 不要使用 U+00A1 以上的特殊字符或 UTF-8 字符。
  • URI 被拒绝。
  • 对于某些语言(例如日语或韩语),导入大量文本数据可能需要很长时间,或者可能会超时。请考虑将数据集拆分为多个文本文件(每个文件最多 20,000 行)。

用于训练的发音数据

可以向自定义语音模型添加自定义发音数据集,以提高识别错误发音的字词、短语或名称。

发音数据集需要包括单词或短语的口语形式以及已识别的显示形式。 口语形式是拼音序列,如“三重 A”。 它可以由字母、单词、音节或全部三者的组合组成。 识别的显示形式是希望单词或短语显示在听录中的方式。 下表包含一些示例:

已识别的显示形式 口头形式
3CPO three c p o
CNTK c n t k
AAA 三重 A

在单个文本文件中提供发音数据集。 包含口述言语以及每个言语的自定义发音。 文件中的每一行都应以已识别的形式开始,接着是制表符,然后是空格分隔的语音序列。

3CPO    three c p o 
CNTK    c n t k 
IEEE    i triple e 

创建和训练发音数据集时,请考虑以下事项:

不建议使用自定义发音文件来更改常见单词的发音。

如果单词或名称的听录方式存在一些变体,请考虑在训练发音数据集时使用部分或全部单词。 例如,如果罗伯特在视频中提及五次,并转录为 Robort、Ropert 和强盗。 可以尝试在文件中包括所有变体,如以下示例所示,但在使用抢劫犯等实际字词进行训练时,请谨慎,就像在视频中提及抢劫者一样,它被转录为 Robert。

Robert Roport
Robert Ropert
Robert Robbers

发音模型不打算解决首字母缩略词问题。 例如,如果希望医生被转录为 Dr.,则无法通过发音模型实现此目的。

请参阅下表,确保发音数据集文件有效且格式正确。

属性
文本编码 UTF-8 BOM(英语还支持 ANSI)
每行的发音数 1
文件大小上限 1 MB(在免费层中为 1 KB)

如何改进自定义模型

训练发音模型可能是一个迭代过程,因为你在对模型结果进行初始训练和评估后,可能会更多地了解主题的发音。 由于无法编辑或修改现有模型,因此以迭代方式训练模型需要创建和上传包含其他信息的数据集,以及基于新数据集训练新的自定义模型。 然后,使用新的自定义语音模型重新编制媒体文件索引。

示例:

假设你计划对运动内容编制索引,并预测特定运动术语以及运动员和教练姓名的脚本准确性问题。 在编制索引之前,你已创建一个语音模型,其中包含包含相关体育术语的内容的纯文本数据集,以及一些玩家和教练姓名的发音数据集。 使用自定义语音模型为几个视频编制索引,并在查看生成的脚本时发现,虽然术语正确听录,但许多名称都没有。 可以执行以下步骤来改进将来的性能:

  1. 查看脚本并记下所有错误转录的名称。 它们可能分为两个组:

    • 发音文件中的名称。
    • 发音文件中的名称,但它们仍然被错误地转录。
  2. 创建新的数据集文件。 下载发音数据集文件或修改本地保存的原始文件。 对于组 A,请将新名称添加到文件中,以及它们被错误转录的方式(迈克尔·米克尔)。 对于组 B,请添加具有正确名称的每行的其他行,以及正确转录方式的唯一示例。 例如:

    Stephen Steven
    Stephen Steafan
    Stephen Steevan

  3. 将此文件上传为新的数据集文件。

  4. 创建新的语音模型,并添加原始纯文本数据集和新发音数据集文件。

  5. 使用新的语音模型重新编制视频索引。

  6. 如果需要,请重复步骤 1-5,直到结果令人满意。