「Amazon SageMaker JumpStartで利用可能な自動音声認識のWhisperモデル」

「Amazon SageMaker JumpStartで利用可能な自動音声認識のWhisperモデルの魅力」

今日は、Amazon SageMaker JumpStartを使用するお客様向けに、OpenAI Whisperファウンデーションモデルが利用可能であることをお知らせできることを嬉しく思います。Whisperは、自動音声認識(ASR)と音声翻訳のための事前訓練モデルです。ラベリングされたデータの合計680,000時間でトレーニングされ、Whisperモデルは微調整の必要なく、多くのデータセットやドメインに対して強力な汎化能力を示すことができます。SageMaker JumpStartは、組み込みアルゴリズムやエンドツーエンドのソリューションテンプレートに加えて、ファウンデーションモデルへのアクセスを提供するSageMakerの機械学習(ML)ハブです。MLの素早い開始をサポートします。

Amazon Transcribeも使用して自動音声認識(ASR)ができます。完全に管理された継続的にトレーニングされるASRサービスです。

この記事では、OpenAI Whisperモデルをデプロイし、モデルを呼び出してオーディオを転写および翻訳する方法を紹介します。

OpenAI Whisperモデルは、huggingface-pytorch-inferenceコンテナを使用します。SageMaker JumpStartモデルハブのお客様は、SageMaker SDK外でモデルスクリプトを維持する必要なく、ASRを利用することができます。SageMaker JumpStartモデルは、ネットワーク分離を可能にするエンドポイントにより、セキュリティのポストを向上させます。

SageMakerにおけるファウンデーションモデル

SageMaker JumpStartでは、Hugging Face、PyTorch Hub、TensorFlow Hubなどの人気モデルハブからさまざまなモデルにアクセスできます。これらのモデルは、SageMakerでのML開発のワークフロー内で使用できます。MLの最新の進歩により、テキスト要約、デジタルアート生成、言語翻訳など、様々なユースケースに適応できる、数十億パラメータでトレーニングされたファウンデーションモデルと呼ばれる新しいクラスのモデルが登場しました。これらのモデルはトレーニングにコストがかかるため、お客様は既存の事前訓練済みのファウンデーションモデルを使用し、必要に応じて微調整することを望んでいます。SageMakerは、SageMakerコンソール上で選択できるモデルの厳選リストを提供します。

SageMaker JumpStartでは、ファウンデーションモデルを素早く始めることができるよう、さまざまなタスクやモデルプロバイダーに基づいたファウンデーションモデルを提供しています。モデルの特性と使用条件を簡単に確認することもできます。テストUIウィジェットを使用してこれらのモデルを試すこともできます。スケールでファウンデーションモデルを使用したい場合は、モデルプロバイダーからの事前構築済みノートブックを使用することができます。モデルはAWS上でホストおよびデプロイされているため、評価やスケールでのモデルの使用において、データは第三者と共有されないことに信頼ができます。

OpenAI Whisperファウンデーションモデル

Whisperは、ASRと音声翻訳のための事前訓練モデルです。Whisperは、OpenAIのAlec Radford などによる論文「Robust Speech Recognition via Large-Scale Weak Supervision」で提案されました。元のコードはこのGitHubリポジトリで見つけることができます。

Whisperは、Transformerベースのエンコーダーデコーダーモデル、またはシーケンスツーシーケンスモデルとも呼ばれています。大規模な弱教師有り学習を使ってラベル付けされた音声データの合計680,000時間でトレーニングされました。Whisperモデルは、微調整の必要なく、多くのデータセットやドメインに対して強力な汎化能力を示すことができます。

モデルは、英語のみのデータまたは多言語データでトレーニングされました。英語のみのモデルは音声認識のタスクでトレーニングされました。多言語モデルは音声認識および音声翻訳でトレーニングされました。音声認識では、モデルは音声と同じ言語で転写を予測します。音声翻訳では、モデルは音声を異なる言語への転写を予測します。

Whisperチェックポイントは、さまざまなモデルサイズの5つの設定で提供されています。最小の4つは英語のみのデータまたは多言語データでトレーニングされました。最大のチェックポイントは多言語のみです。10個の事前訓練済みチェックポイントはすべてHugging Face Hubで利用可能です。以下の表では、チェックポイントへのリンクを含めたモデルへのリンクが要約されています。

モデル名 パラメータ数 多言語対応
whisper-tiny 39 M はい
whisper-base 74 M はい
whisper-small 244 M はい
whisper-medium 769 M はい
whisper-large 1550 M はい
whisper-large-v2 1550 M はい

さて、SageMaker JumpStartでWhisperモデルを使用する方法を探ってみましょう。

OpenAI WhisperファウンデーションモデルのWERおよびレイテンシ比較

LibriSpeech test-cleanに基づくOpenAI Whisperモデルの単語誤り率(WER)は、以下の表に示します。WERは、音声認識または機械翻訳システムの性能を評価する一般的な指標です。WERは、ASR(Automatic Speech Recognition)の出力を参照テキスト(正しい転写)に変換するために必要なエラー数(置換、挿入、削除を含む)を測定します。これらの数値は、Hugging Faceウェブサイトから取得されました。

Model WER(パーセント)
whisper-tiny 7.54
whisper-base 5.08
whisper-small 3.43
whisper-medium 2.9
whisper-large 3
whisper-large-v2 3

このブログでは、以下のオーディオファイルを使用して、さまざまなWhisperモデルの音声認識のレイテンシを比較しました。レイテンシは、ユーザがリクエストを送信してからアプリケーションがリクエストの完了を示すまでの時間のことです。以下の表の数値は、ml.g5.2xlargeインスタンス上で同じオーディオファイルを使用して100回のリクエストの平均レイテンシを表しています。

Model 平均レイテンシ(秒) モデルの出力
whisper-tiny 0.43 We are living in very exciting times with machine lighting. The speed of ML model development will really actually increase. But you won’t get to that end state that we won in the next coming years. Unless we actually make these models more accessible to everybody.
whisper-base 0.49 We are living in very exciting times with machine learning. The speed of ML model development will really actually increase. But you won’t get to that end state that we won in the next coming years. Unless we actually make these models more accessible to everybody.
whisper-small 0.84 We are living in very exciting times with machine learning. The speed of ML model development will really actually increase. But you won’t get to that end state that we want in the next coming years unless we actually make these models more accessible to everybody.
whisper-medium 1.5 We are living in very exciting times with machine learning. The speed of ML model development will really actually increase. But you won’t get to that end state that we want in the next coming years unless we actually make these models more accessible to everybody.
whisper-large 1.96 We are living in very exciting times with machine learning. The speed of ML model development will really actually increase. But you won’t get to that end state that we want in the next coming years unless we actually make these models more accessible to everybody.
whisper-large-v2 1.98 We are living in very exciting times with machine learning. The speed of ML model development will really actually increase. But you won’t get to that end state that we want in the next coming years unless we actually make these models more accessible to everybody.

ソリューションの手順

Amazon SageMakerコンソールまたはAmazon SageMakerノートブックを使用してWhisperモデルを展開することができます。この記事では、SageMaker StudioコンソールまたはSageMakerノートブックを使用してWhisper APIを展開し、展開されたモデルを音声認識と言語翻訳に使用する方法を実演します。この記事で使用されるコードは、このGitHubノートブックで見つけることができます。

詳細については、各ステップを展開しましょう。

コンソールからWhisperを展開する

  1. SageMaker JumpStartを開始するには、Amazon SageMaker Studioコンソールを開き、SageMaker JumpStartの起動ページに移動し、「JumpStartを始める」を選択します。
  2. Whisperモデルを選択するには、上部のタブを使用するか、以下のスクリーンショットに示すように右上の検索ボックスを使用できます。この例では、右上の検索ボックスを使用してWhisperと入力し、ドロップダウンメニューから適切なWhisperモデルを選択します。
  3. Whisperモデルを選択した後、コンソールを使用してモデルを展開することができます。デプロイメントにはインスタンスを選択するか、デフォルトを使用することができます。

Sagemaker Notebookから基盤モデルを展開する

さまざまなタスクを解決するために、最初にモデルを展開し、展開されたモデルを利用する手順は次のとおりです:

  1. セットアップ
  2. モデルの選択
  3. アーティファクトの取得とエンドポイントの展開
  4. ASR用の展開されたモデルの使用
  5. 言語翻訳用の展開されたモデルの使用
  6. エンドポイントのクリーンアップ

セットアップ

このノートブックは、SageMaker Studioのml.t3.mediumインスタンスおよびAmazon SageMakerノートブックインスタンスのconda_python3カーネルでテストされました。

%pip install --upgrade sagemaker --quiet

事前学習済みモデルの選択

Boto3を使用してSageMakerセッションをセットアップし、展開するモデルのモデルIDを選択します。

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

アーティファクトの取得とエンドポイントの展開

SageMakerを使用して、事前学習済みモデルでの推論を行うことができます。新しいデータセットでのファインチューニングを行わずに、事前学習済みモデルをホストするためには、sagemaker.model.Modelのインスタンスを作成し、デプロイします。以下のコードは、ホイスパーラージ-v2モデルの推論エンドポイントにデフォルトのml.g5.2xlargeインスタンスを使用しています。他のインスタンスタイプでモデルを展開するには、JumpStartModelクラスにinstance_typeを渡すことができます。デプロイメントには数分かかる場合があります。

#Deploying the modelfrom sagemaker.jumpstart.model import JumpStartModelfrom sagemaker.serializers import JSONSerializermy_model = JumpStartModel(model_id=dropdown.value)predictor = my_model.deploy()

自動音声認識

次に、SageMaker JumpstartのパブリックAmazon Simple Storage Service (Amazon S3)の場所からサンプルオーディオファイル(sample1.wav)を読み込み、音声認識用の予測子に渡します。別のサンプルオーディオファイルでこのサンプルファイルを置き換えることもできますが、.wavファイルが16 kHzでサンプリングされていることを確認してください。入力オーディオファイルの長さは30秒以下である必要があります。

from scipy.io.wavfile import read
import json
import boto3
from sagemaker.jumpstart import utils

# wavファイルは16kHzのサンプリングである必要があります(自動音声認識モデルで必要です)、必要に応じてリサンプリングしてください。入力オーディオファイルは30秒未満である必要があります。
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()

# エンドポイントへのペイロードサイズがクライアントエラー(413)を受け取った場合は、ペイロードサイズを確認してください。SageMakerの呼び出しエンドポイントリクエストのペイロードは、約5MBに制限されています。
response = predictor.predict(wav_file_read)
print(response["text"])

このモデルでは、推論を行う際に多くのパラメータをサポートしています。以下のようなものがあります:

  • max_length: 出力の長さを指定します。指定している場合、正の整数でなければなりません。
  • languageとtask: 出力言語とタスクを指定します。このモデルは、転写または翻訳のタスクをサポートしています。
  • max_new_tokens: 生成するトークンの最大数です。
  • num_return_sequences: 返される出力シーケンスの数です。指定している場合、正の整数でなければなりません。
  • num_beams: グリーディサーチに使用するビーム数です。指定している場合、num_return_sequences以上の整数でなければなりません。
  • no_repeat_ngram_size: 出力シーケンスの中でno_repeat_ngram_sizeの単語のシーケンスが繰り返されないようにモデルが保証します。指定している場合、1より大きい正の整数である必要があります。
  • temperature: 出力のランダム性を制御します。高い温度は、低確率の単語を含む出力シーケンスを生成し、低い温度は、高確率の単語を含む出力シーケンスを生成します。温度が0に近づくと、グリーディデコーディングを生成します。指定している場合、正の浮動小数点数でなければなりません。
  • early_stopping: Trueの場合、すべてのビームの仮説が文末のトークンに到達した時点でテキストの生成が終了します。指定している場合、真偽値でなければなりません。
  • do_sample: Trueの場合、次の単語を尤度に基づいてサンプリングします。指定している場合、真偽値でなければなりません。
  • top_k: テキスト生成の各ステップで、top_kの最も確率の高い単語からサンプリングします。指定している場合、正の整数でなければなりません。
  • top_p: テキスト生成の各ステップで、累積確率top_pの最小の単語セットからサンプリングします。指定している場合、0以上1以下の浮動小数点数でなければなりません。

エンドポイントを呼び出す際に、上記のパラメータの任意のサブセットを指定できます。次に、これらの引数を使用してエンドポイントを呼び出す例を示します。

言語翻訳

Whisperモデルを使用して言語翻訳を示すために、次のフランス語のオーディオファイルを英語に翻訳します。ファイルは16 kHzでサンプリングされている必要があります(ASRモデルで必要です)、必要な場合はファイルをリサンプリングし、サンプルが30秒を超えないようにしてください。

  1. 以下の公開S3ロケーションからsample_french1.wavをSageMaker JumpStartからダウンロードし、Whisperモデルに渡すためのペイロードに使用します。
  2. input_audio_file_name = "sample_french1.wav"
    s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )
  3. taskパラメータをtranslate、言語をFrenchに設定し、Whisperモデルにスピーチ翻訳を実行させます。
  4. 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"
  5. predictorを使用して言語の翻訳を予測します。クライアントエラー(エラー413)を受け取った場合は、エンドポイントへのペイロードサイズを確認してください。SageMakerの呼び出しエンドポイントリクエストのペイロードは、約5MBに制限されています。
  6. response = predictor.predict(payload)
    print(response["text"])
  7. フランス語のオーディオファイルから英語に翻訳されたテキスト出力は次のようになります:
  8. [' Welcome to JPBSystem. We have more than 150 employees and 90% of sales. We have developed about 15 patents.']

クリーンアップ

エンドポイントをテストした後、SageMakerの推論エンドポイントとモデルを削除して、料金を発生させないようにしましょう。

結論

この記事では、Amazon SageMakerを使用してOpenAI Whisperモデルをテストして利用する方法を紹介しました。今日からSageMakerで基礎モデルを試してみて、フィードバックをお知らせください!

このガイダンスは情報提供の目的のみです。独自の独立した評価を行い、自身の品質管理プラクティスや規則、法律、規制、ライセンス、利用条件などに準拠するための措置を取るべきです。また、このガイダンスに示されるサードパーティモデルや関連するローカルの規則、法律、規制、ライセンス、利用条件にも準拠する必要があります。AWSはこのガイダンスに示されるサードパーティモデルに対して制御権や権限を持っておらず、そのモデルが安全でウイルスフリーで動作し、製品環境や標準と互換性があることを保証する表明や保証を行っていません。AWSはこのガイダンスの情報が特定の結果や成果をもたらすことを保証する表明、保証、または保証を行っていません。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

あなたのビジネスに適応型AIを実装する方法

人工知能は、多様な産業においてビジネスの大きな変革をもたらすことができる強力な技術として現れましたしかし、従来の機械...

コンピュータサイエンス

「AIイノベーションのためのニューロエボリューションの活用」

イントロダクション ニューロエボリューションは、AIがニューラルネットワークと進化アルゴリズムを組み合わせて創造力を育む...

機械学習

CLIP基礎モデル

この記事では、CLIP(対照的な言語画像事前学習)の背後にある論文を詳しく解説しますキーコンセプトを抽出し、わかりやすく...

AIニュース

「チャンドラヤーン3の着陸:AIとセンサーがISROの壮大な月探査を支援」

宇宙探査の魅惑的な広がりの中で、すべてのミッションは未知へのサイコロのような賭けです。インドの国立宇宙機関であるイン...

データサイエンス

「データサイエンティストが読むべきトップ7のNLP(自然言語処理)の本」

はじめに 自然言語処理(NLP)の最近の進歩は、データサイエンティストが最新の情報を把握するために不可欠です。NLPの書籍は...

データサイエンス

「バリー・ディラー対生成AI:著作権法的な戦い」

メディアの大物であるバリー・ディラー氏と一部の著名な出版社は、人工知能(AI)システムのトレーニングで公開された作品の...