Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 | 亚马逊网络服务

Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 | 亚马逊网络服务

今天,我们很高兴地宣布 OpenAI Whisper 基础模型可供客户使用 亚马逊SageMaker JumpStart。 Whisper 是用于自动语音识别 (ASR) 和语音翻译的预训练模型。 Whisper 模型经过 680 万小时的标记数据训练,表现出强大的泛化能力,无需进行微调即可推广到许多数据集和领域。 Sagemaker JumpStart 是 SageMaker 的机器学习 (ML) 中心,除了内置算法和端到端解决方案模板之外,还提供对基础模型的访问,以帮助您快速开始使用 ML。

您还可以使用 ASR 亚马逊转录 ,全面管理且持续训练的自动语音识别服务。

在这篇文章中,我们将向您展示如何部署 OpenAI 耳语 模型并调用模型来转录和翻译音频。

OpenAI Whisper 模型使用 拥抱脸-pytorch-推理 容器。 作为 SageMaker JumpStart 模型中心客户,您可以使用 ASR,而无需在 SageMaker SDK 之外维护模型脚本。 SageMaker JumpStart 模型还通过支持网络隔离的端点改善安全状况。

SageMaker 中的基础模型

SageMaker JumpStart 提供对流行模型中心(包括 Hugging Face、PyTorch Hub 和 TensorFlow Hub)中的一系列模型的访问,您可以在 SageMaker 的 ML 开发工作流程中使用这些模型。 机器学习的最新进展催生了一类新的模型,称为 基础模型,它们通常经过数十亿个参数的训练,可以适应广泛的用例,例如文本摘要、生成数字艺术和语言翻译。 由于这些模型的训练成本很高,因此客户希望使用现有的预先训练的基础模型并根据需要对其进行微调,而不是自己训练这些模型。 SageMaker 提供了精选的模型列表,您可以在 SageMaker 控制台上进行选择。

现在,您可以在 SageMaker JumpStart 中找到来自不同模型提供商的基础模型,从而使您能够快速开始使用基础模型。 SageMaker JumpStart 提供基于不同任务或模型提供商的基础模型,您可以轻松查看模型特征和使用条款。 您还可以使用测试 UI 小部件来尝试这些模型。 当您想要大规模使用基础模型时,您可以使用模型提供商提供的预构建笔记本,而无需离开 SageMaker。 由于模型在 AWS 上托管和部署,因此您相信您的数据(无论是用于评估还是大规模使用模型)都不会与第三方共享。

OpenAI Whisper 基础模型

Whisper 是用于 ASR 和语音翻译的预训练模型。 论文中提出了 Whisper 通过大规模弱监督实现鲁棒语音识别 由 OpenAI 的 Alec Radford 等人撰写。 原始代码可以找到 在此 GitHub 存储库中.

Whisper 是一种基于 Transformer 的编码器-解码器模型,也称为 序列到序列 模型。 它接受了 680 万小时的标记语音数据的训练,这些数据使用大规模弱监督进行注释。 Whisper 模型表现出强大的泛化能力,无需进行微调即可推广到许多数据集和领域。

这些模型是根据纯英语数据或多语言数据进行训练的。 仅英语模型接受了语音识别任务的训练。 多语言模型接受了语音识别和语音翻译的训练。 对于语音识别,该模型预测 语言作为音频。 对于语音翻译,该模型预测转录为 不同 语言到音频。

Whisper 检查点有五种不同型号尺寸的配置。 最小的四个接受纯英语或多语言数据的训练。 最大的检查站仅支持多种语言。 所有十个预先训练的检查点都可以在 抱脸枢纽。 下表总结了检查点,并提供了中心模型的链接:

型号名称 参数数量 多种语言
耳语般的小 39 M 支持
耳语基础 74 M 支持
小耳语 244 M 支持
轻声细语 769 M 支持
耳语大 1550 M 支持
低语-大-v2 1550 M 支持

让我们探索如何在 SageMaker JumpStart 中使用 Whisper 模型。

OpenAI Whisper 基础模型 WER 和延迟比较

不同 OpenAI Whisper 模型的字错误率 (WER) LibriSpeech 测试清理 如下表所示。 WER 是语音识别或机器翻译系统性能的常用指标。 它根据错误数量衡量参考文本(真实情况或正确转录)与 ASR 系统输出之间的差异,包括将 ASR 输出转换为参考所需的替换、插入和删除文本。 这些数字取自 拥抱脸 网站。

型号 错误率(百分比)
耳语般的小 7.54
耳语基础 5.08
小耳语 3.43
轻声细语 2.9
耳语大 3
低语-大-v2 3

在本博客中,我们采用了以下音频文件,并比较了不同耳语模型的语音识别延迟。 延迟是指从用户发送请求到应用程序指示请求已完成的时间量。 下表中的数字表示使用同一音频文件以及 ml.g100xlarge 实例上托管的模型发出的总共 5.2 个请求的平均延迟。

型号 平均延迟时间 模型输出
耳语般的小 0.43 我们生活在机器照明非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但你不会达到我们在未来几年赢得的最终状态。 除非我们真的让每个人都更容易使用这些模型。
耳语基础 0.49 我们生活在机器学习非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但你不会达到我们在未来几年赢得的最终状态。 除非我们真的让每个人都更容易使用这些模型。
小耳语 0.84 我们生活在机器学习非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但是,除非我们真正让每个人都更容易使用这些模型,否则在未来几年内您将无法达到我们想要的最终状态。
轻声细语 1.5 我们生活在机器学习非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但是,除非我们真正让每个人都更容易使用这些模型,否则在未来几年内您将无法达到我们想要的最终状态。
耳语大 1.96 我们生活在机器学习非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但是,除非我们真正让每个人都更容易使用这些模型,否则在未来几年内您将无法达到我们想要的最终状态。
低语-大-v2 1.98 我们生活在机器学习非常激动人心的时代。 机器学习模型开发的速度确实会提高。 但是,除非我们真正让每个人都更容易使用这些模型,否则在未来几年内您将无法达到我们想要的最终状态。

解决方案演练

您可以使用 Amazon SageMaker 控制台或 Amazon SageMaker Notebook 部署 Whisper 模型。 在这篇文章中,我们演示如何使用 SageMaker Studio 控制台或 SageMaker Notebook 部署 Whisper API,然后使用部署的模型进行语音识别和语言翻译。 这篇文章中使用的代码可以在 这个 GitHub 笔记本.

让我们详细展开每个步骤。

从控制台部署 Whisper

  1. 要开始使用 SageMaker JumpStart,请打开 Amazon SageMaker Studio 控制台并转到 SageMaker JumpStart 的启动页面并选择 开始使用 JumpStart.
  2. 要选择 Whisper 模型,您可以使用顶部的选项卡或使用右上角的搜索框,如以下屏幕截图所示。 对于本示例,使用右上角的搜索框并输入 Whisper,然后从下拉菜单中选择适当的 Whisper 型号。
    Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  3. 选择 Whisper 模型后,您可以使用控制台部署模型。 您可以选择一个实例进行部署或使用默认实例。
    Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

从 Sagemaker Notebook 部署基础模型

首先部署然后使用部署的模型解决不同任务的步骤是:

  1. 成立
  2. 选择型号
  3. 检索工件并部署端点
  4. 使用 ASR 的部署模型
  5. 使用部署的模型进行语言翻译
  6. 清理端点

成立

此笔记本已在具有 Python 3(数据科学)内核的 SageMaker Studio 中的 ml.t3.medium 实例以及具有以下功能的 Amazon SageMaker Notebook 实例中进行了测试: conda_python3 核心。

%pip install --upgrade sagemaker --quiet

选择预训练模型

使用 Boto3 设置 SageMaker 会话,然后选择要部署的模型 ID。

model_id = "huggingface-asr-whisper-large-v2"

检索工件并部署端点

使用 SageMaker,您可以对预先训练的模型执行推理,甚至无需先在新数据集上对其进行微调。 要托管预训练模型,请创建一个实例 sagemaker.model.模型 并部署它。 以下代码使用默认实例 ml.g5.2xlarge 用于 Whisper-large-v2 模型的推理端点。 您可以通过传递将模型部署到其他实例类型上 instance_type ,在 JumpStartModel 班级。 部署可能需要几分钟时间。

#Deploying the model from sagemaker.jumpstart.model import JumpStartModel
from sagemaker.serializers import JSONSerializer my_model = JumpStartModel(model_id=dropdown.value)
predictor = my_model.deploy()

自动语音识别

接下来,您从 SageMaker Jumpstart 公共站点读取示例音频文件sample1.wav 亚马逊简单存储服务(Amazon S3) 位置并将其传递给 预测因子 用于语音识别。 您可以将此示例文件替换为任何其他示例音频文件,但请确保 .wav 文件以 16 kHz 采样,因为这是自动语音识别模型所需的。 输入的音频文件必须少于 30 秒。

from scipy.io.wavfile import read
import json
import boto3
from sagemaker.jumpstart import utils # The wav files must be sampled at 16kHz (this is required by the automatic speech recognition models), so make sure to resample them if required. The input audio file must be less than 30 seconds.
s3_bucket = utils.get_jumpstart_content_bucket(boto3.Session().region_name)
key_prefix = "training-datasets/asr_notebook_data"
input_audio_file_name = "sample1.wav" s3_client = boto3.client("s3")
s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name ) with open(input_audio_file_name, "rb") as file: wav_file_read = file.read() # If you receive client error (413) please check the payload size to the endpoint. Payloads for SageMaker invoke endpoint requests are limited to about 5MB
response = predictor.predict(wav_file_read)
print(response["text"])

该模型在执行推理时支持许多参数。 他们包括:

  • max_length:模型生成文本直到输出长度。 如果指定,它必须是正整数。
  • 语言和任务:在此处指定输出语言和任务。 该模型支持转录或翻译任务。
  • max_new_tokens:生成的最大令牌数量。
  • num_return_sequences:返回的输出序列数。 如果指定,它必须是正整数。
  • num_beams:贪婪搜索中使用的光束数量。 如果指定,它必须是大于或等于的整数 num_return_sequences.
  • no_repeat_ngram_size:该模型确保单词序列 no_repeat_ngram_size 在输出序列中不重复。 如果指定,它必须是大于 1 的正整数。
  • 温度:这控制输出的随机性。 较高的温度导致具有低概率词的输出序列,而较低的温度导致具有高概率词的输出序列。 如果温度接近 0,则会导致贪婪解码。 如果指定,它必须是正浮点数。
  • early_stopping:如果 True,当所有束假设到达句子标记的末尾时,文本生成完成。 如果指定,则它必须是布尔值。
  • do_sample:如果 True,对下一个单词进行采样以获得可能性。 如果指定,则它必须是布尔值。
  • top_k:在文本生成的每个步骤中,仅从 top_k 最有可能的话。 如果指定,它必须是正整数。
  • top_p:在文本生成的每一步中,以累积概率从尽可能小的单词集合中进行采样 top_p。 如果指定,它必须是 0 到 1 之间的浮点数。

您可以在调用端点时指定上述参数的任意子集。 接下来,我们向您展示如何使用这些参数调用端点的示例。

语言翻译

要使用 Whisper 模型展示语言翻译,请使用以下法语音频文件并将其翻译为英语。 文件必须以 16 kHz 采样(根据 ASR 模型的要求),因此请确保根据需要对文件重新采样,并确保采样不超过 30 秒。

  1. 下载 sample_french1.wav 来自公共 S3 位置的 SageMaker JumpStart,因此可以将其传递到有效负载中,以便由 Whisper 模型进行翻译。
    input_audio_file_name = "sample_french1.wav" s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )

  2. 将任务参数设置为 translate 和语言作为 French 强制 Whisper 模型执行语音翻译。
    with open(input_audio_file_name, "rb") as file: wav_file_read = file.read() payload = {"audio_input": wav_file_read.hex(), "language": "french", "task": "translate"} predictor.serializer = JSONSerializer()
    predictor.content_type = "application/json"

  3. 使用 预测因子 来预测语言的翻译。 如果您收到客户端错误(错误 413),请检查端点的负载大小。 SageMaker 调用端点请求的有效负载限制为约 5 MB。
    response = predictor.predict(payload)
    print(response["text"])

  4. 从法语音频文件翻译成英语的文本输出如下:
    [' Welcome to JPBSystem. We have more than 150 employees and 90% of sales. We have developed about 15 patents.']

清理

测试端点后,删除 SageMaker 推理端点并删除模型以避免产生费用。

结论

在这篇文章中,我们向您展示了如何测试和使用 OpenAI Whisper 模型,以使用 Amazon SageMaker 构建有趣的应用程序。 立即尝试 SageMaker 中的基础模型,并让我们知道您的反馈!

本指南仅供参考。 您仍应进行自己的独立评估,并采取措施确保遵守您自己的特定质量控制实践和标准,以及适用于您、您的内容和内容的当地规则、法律、法规、许可和使用条款。本指南中引用的第三方模型。 AWS 对本指南中引用的第三方模型没有控制权或权力,也不对第三方模型的安全性、无病毒性、可操作性或与您的生产环境和标准兼容做出任何声明或保证。 AWS 不就本指南中的任何信息将导致特定结果或后果做出任何陈述、保证或保证。


关于作者

Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。赫曼特·辛格 是一位应用科学家,拥有 Amazon SageMaker JumpStart 经验。 他在库朗数学科学研究所获得硕士学位,并在印度理工学院德里分校获得学士学位。 他在自然语言处理、计算机视觉和时间序列分析领域内处理各种机器学习问题方面拥有丰富的经验。

Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。拉奇纳查达 是 AWS 战略客户的首席解决方案架构师 AI/ML。 Rachna 是一个乐观主义者,他相信以合乎道德和负责任的方式使用 AI 可以改善未来的社会并带来经济和社会繁荣。 在业余时间,Rachna 喜欢与家人共度时光、徒步旅行和听音乐。

Amazon SageMaker JumpStart 现已提供用于自动语音识别的 Whisper 模型 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。Ashish Khetan 博士 是 Amazon SageMaker 内置算法的高级应用科学家,帮助开发机器学习算法。 他在伊利诺伊大学香槟分校获得博士学位。 他是机器学习和统计推理领域的活跃研究者,在 NeurIPS、ICML、ICLR、JMLR、ACL 和 EMNLP 会议上发表了多篇论文。

时间戳记:

更多来自 AWS机器学习