你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

实现自定义语音转文本

Azure AI 服务
Azure AI 语音
Azure 机器学习

本指南由两部分组成,介绍了高效实现高质量语音感知应用程序的各种方法。 它侧重于扩展和自定义 AI 语音服务提供的语音转文本功能的基线模型。

本文介绍设计解决方案时的问题空间和决策过程。 第二篇文章部署自定义语音转文本解决方案提供了应用这些说明和建议做法的用例。

预生成的自定义 AI 范围

预生成和自定义 AI 范围表示多个 AI 模型自定义和开发工作层,从即用型预生成模型到完全自定义的 AI 解决方案。

显示自定义层范围的示意图。

在范围的左侧,Azure AI 服务可通过预先训练的模型将 AI 功能快速、顺利地实现到应用程序中。 Microsoft 会策展大量数据集来训练和生成这些基线模型。 因此,可以使用基线模型,而无需额外的训练数据。 它们通过提升了安全性的编程 API 调用使用。

Azure AI 服务包括:

  • 语音。 语音转文本、文本转语音、语音翻译和说话人识别
  • 语言。 实体识别、情绪分析、问答、对话语言理解和翻译
  • 视觉。 计算机视觉和人脸 API
  • 决策。 异常检测器、内容审查器和个性化体验创建服务
  • OpenAI 服务。 高级语言模型

当预生成的基线模型对数据的性能不够准确时,可以通过添加相对于问题域的训练数据来自定义它们。 此自定义需要额外的工作来收集足够的数据用于训练和评估可接受的模型。 可自定义的 Azure AI 服务包括自定义视觉自定义翻译器自定义语音CLU。 扩展预生成的 Azure AI 服务模型位于该范围的中心。 本文的大部分内容都集中在该中心区域。

或者,当模型和训练数据侧重于特定方案并需要专有训练数据集时,Azure 机器学习提供自定义解决方案资源、工具、计算和工作流指南,以支持生成完全自定义的模型。 此方案显示在范围的右侧。 这些模型是从头开始生成的。 使用 Azure 机器学习开发模型通常包括使用 AutoML 等可视化工具,以及使用笔记本以编程方式开发模型。

Azure 语音服务

Azure 语音服务将语音转文本、文本转语音、语音翻译、语音助理和说话人识别功能统一到基于 Azure AI 服务的单个订阅中。 可以通过易于使用的 SDK 和 API 与语音服务集成来启用语音应用程序。

Azure 语音转文本服务实时或异步分析音频,以将口语听录为文本。 现成的 Azure 语音转文本使用通用语言模型作为反映常用口语的基线。 此基线模型是使用代表各种常见域的方言和语音预先训练的。 因此,使用基线模型不需要额外的配置,并且在大多数情况下都运行良好。

但请注意,如果音频包含环境噪声或包含大量行业和领域特定术语,则基线模型可能不够用。 在这些情况下,生成自定义语音模型是有意义的。 为此,可以使用与特定域关联的其他数据进行训练。

根据自定义域的大小,训练多个模型并为单个应用程序划分模型可能也有意义。 例如,奥运解说员报道各种运动,每项运动都有自己的行话。 由于每项运动的词汇与其他词汇明显不同,生成特定于某项运动的自定义模型可以通过限制与该特定运动相关的语句数据来提高准确度。 因此,该模型可以从一组精确且有针对性的数据中学习。

因此,可通过三种方法实现 Azure 语音转文本:

  • 基线模型适用于音频没有环境噪声且听录的语音由常用语言组成的情况。
  • 自定义模型增强了基线模型,包含在自定义域的所有区域之间共享的域特定词汇。
  • 当自定义域具有多个区域,而每个区域使用特定的词汇时,多个自定义模型才有意义。

汇总了实现 Azure 语音转文本的三种方法的示意图。

可能的用例

下面是自定义语音转文本有用的一些通用方案和用例:

  • 特定域的语音听录,如医疗听录或呼叫中心听录
  • 实时听录,如在应用中或为实时视频流提供字幕

Microsoft SDK 和开源工具

在使用语音转文本时,以下资源可能会非常有用:

设计注意事项

本部分介绍生成基于语音的应用程序的一些设计注意事项。

基线模型与自定义模型

Azure 语音包括支持各种语言的基线模型。 这些模型是通过大量的词汇和领域预先训练的。 但是,你可能有一个需要识别的专用词汇。 在这些情况下,基线模型可能不足。 确定基础模型是否足够的最佳方法是分析从基线模型生成的听录,并将其与同一音频的人工生成听录进行比较。 本指南中的部署文章介绍如何使用 Speech Studio 来比较听录并获取字词错误率 (WER) 分数。 如果结果中存在多个不正确的字词替换,建议训练自定义模型来识别这些字词。

一个自定义模型与多个自定义模型

如果方案将从自定义模型中受益,则接下来需要确定要生成的模型数。 如果语句与一个区域或域密切相关,则一个模型通常就足够了。 但是,如果跨域区域的词汇表明显不同,则最好使用多个模型。 在此方案中,还需要各种训练数据。

让我们返回到奥运会的示例。 假设你需要包括多种运动的音频解说听录,包括冰球、滑冰、单板滑雪、高山滑雪等。 为每个运动构建自定义语音模型可以提高准确性,因为每项运动都有独特的术语。 但是,每个模型必须具有不同的训练数据。 由于过于严格且不可扩展,因此不能为每项运动的每个解说员创建一个模型。 更实用的方法是为每项运动建立一个单一的模型,但包括来自一组不同口音、性别和不同年龄的解说员的音频。 不同解说员捕获的与这项运动相关的所有领域特定短语都位于同一模型中。

还需要考虑要支持的语言和区域设置。 按区域设置创建这些模型可能有意义。

声学和语言模型适应

Azure 语音提供了三个用于训练自定义模型的选项:

语言模型适应是最常用的自定义。 语言模型有助于训练某些字词在特定上下文或特定域中如何一起使用。 生成语言模型也相对简单和快速。 首先,通过为特定域提供各种语句和短语来训练模型。 例如,如果目标是生成高山滑雪的听录,请收集多个滑雪项目的人工生成听录。 清理并组合它们以创建一个包含约 5 万个短语和句子的训练数据文件。 有关自定义语言模型训练的数据要求的更多详细信息,请参阅训练和测试数据集

发音模型自定义也是最常用的自定义之一。 发音模型可帮助自定义模型识别没有标准发音的不常见字词。 例如,高山滑雪中的一些术语借用了其他语言,如术语直下和猫跳。 这些字词非常适合使用发音数据集进行训练。 有关使用发音文件提高识别能力的更多详细信息,请参阅用于训练的发音数据。 有关使用 Speech Studio 生成自定义模型的详细信息,请参阅什么是自定义语音识别?

声学模型适应提供有关某些字词发音的语音训练,以便 Azure 语音可以正确识别它们。 若要生成声学模型,需要音频样本和随附的人工生成听录。 如果识别语言与常见区域设置(如 en-US)匹配,则使用当前基线模型就足够了。 基线模型具有多种训练,使用母语和非母语为英语的人的声音来涵盖大量的英语词汇。 因此,在 en-US 基础模型上生成声学模型适应可能不会提供太大的改进。 训练自定义声学模型也需要更多时间。 有关自定义声学训练的数据要求的详细信息,请参阅训练和测试数据集

最终的自定义模型可以包含使用本部分中所述的所有三个自定义项组合的数据集。

训练自定义模型

训练自定义模型的方法有两种:

  • 使用域中的多个短语和语句示例进行训练。 例如,包括已清理和标准化的高山滑雪赛事音频听录以及以前赛事的人工生成听录。 确保听录包含高山滑雪中使用的术语和解说员如何发音的多个示例。 如果遵循此过程,生成的自定义模型应能够识别域特定的字词和短语。

  • 使用侧重于问题区域的特定数据进行训练。 当没有太多训练数据时,此方法非常有效,例如,如果在高山滑雪赛事期间使用了新的俚语术语,并且需要包含在模型中。 这种类型的训练使用以下方法:

    • 使用 Speech Studio 生成听录,并将其与人工生成听录进行比较。
    • 从解说员的说话风格中识别问题区域。 识别:
      • 应用问题字词或语句的上下文。
      • 字词或语句的不同变化和发音。
      • 字词或语句的任何特定于解说员的唯一应用程序。

使用特定数据训练自定义模型可能很耗时。 步骤包括仔细分析听录差距、手动添加训练短语以及多次重复此过程。 但是,最终,此方法为以前听录错误的问题区域提供重点训练。 并且可以通过有选择地训练关键区域,然后按重要性顺序继续列表来迭代生成此模型。 另一个好处是,即使经过多次迭代生成训练数据,数据集大小也会包含几百个语句,而不是几千个语句。

生成模型后

生成模型后,请记住以下建议:

  • 请注意词法文本与显示文本之间的差异。 Speech Studio 基于词法文本生成 WER。 但是,用户看到的是标点符号、大写字母和以数字形式表示的数字字词的显示文本。 下面是词法文本与显示文本的示例。

    词法文本:速度快,德语的速度更快,只用了 57063 秒

    显示文本:速度很棒, 德国人的成绩更好, 为 57063 秒。

    预期(隐含)是:速度很棒。 德国人的成绩更好, 为 57.063 秒

    自定义模型的 WER 率较低,但这并不意味着用户感知的错误率(显示文本中的错误)较低。 此问题主要发生在字母数字输入中,因为不同的应用程序可以使用替代方法来表示输入。 不应仅依赖 WER。 还需要查看最终识别结果。

    当显示文本看起来错误时,请查看 SDK 的详细识别结果,其中包括拼出了所有内容的词法文本。如果词法文本正确,则识别准确。 然后,可以通过添加后处理规则来解决显示文本(最终识别结果)中的错误。

  • 管理数据集、模型及其版本。 在 Speech Studio 中,创建项目、数据集和模型时,只有两个字段:名称和说明。 以迭代方式生成数据集和模型时,需要遵循良好的命名和版本控制方案,以便轻松识别数据集的内容以及哪个模型反映数据集的版本。 有关此建议的更多详细信息,请参阅部署自定义语音转文本解决方案

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤