メインコンテンツへスキップ
Amazon SageMaker Jumpstart は、マネージドインフラ、オートスケーリング、統合モニタリングを備えた Cartesia セルフホストソリューションを最短でデプロイする手段です。このデプロイ方法は、セルフホスト AI を初めて利用するチームや、マネージドインフラを利用したいチームに最適です。 開始するには、AWS Marketplace の Sonic 3 on AWS Marketplace からサブスクライブしてください。

概要

SageMaker Jumpstart によるデプロイメントの特長:
  • マネージドインフラ: AWS がサーバーのプロビジョニングとメンテナンスを担当
  • オートスケーリング: 需要に応じた組み込みのオートスケーリング
  • 統合モニタリング: CloudWatch によるメトリクスとログの統合
  • 従量課金: オンデマンドリソース割り当てによるコスト最適化
  • クイックセットアップ: 事前構成済みノートブックを使って数分でデプロイ

前提条件

AWS アカウントの要件

  • SageMaker アクセス可能な AWS アカウント
  • GPU インスタンス(ml.g6e.xlarge)の十分なサービスクォータ
  • SageMaker Full Access および Marketplace サブスクリプションアクセス(ViewSubscriptions、Unsubscribe、Subscribe)を持つ IAM ロール
  • VPC 構成(プライベートデプロイ用、オプション)

はじめに

SageMaker 上で Sonic 3 の推論エンドポイントをデプロイするには、こちらのノートブックの手順を参照してください。

推論のセットアップ

Sonic 3 は SageMaker 上でリアルタイム推論のみをサポートしています。推論エンドポイントのインスタンスタイプとして ml.g6e.xlarge を選択してください。各インスタンスは 8 件の同時リクエストを処理できます。最良のパフォーマンスを得るために、SageMaker ではクライアントから SageMaker への接続を再利用することを推奨しています。これにより、接続を再確立する時間を節約できます。boto3 では max_pool_connections を設定できます。複数のリクエストが接続を再利用するため、リクエストごとに新しい TCP/TLS 接続を確立するコストを回避できます。

入出力

入力の概要

レスポンスストリーミングエンドポイントは、生成のトランスクリプト、ボイス、言語、出力フォーマットを指定する JSON オブジェクトを入力として受け取ります。

入力パラメータ

パラメータ説明必須
context_idクライアントが提供する、リクエストを識別するための一意の ID。任意の文字列値で、トラッキングやデバッグに役立ちます。stringはい
transcript音声に変換するテキスト。Sonic モデルがサポートする追加の制御(感情、速度、音量など)を含めることができます。
ドキュメント
stringはい
languageトランスクリプトテキストの言語コード。

サポートされるコード:
enfrdeesptzhjahiitkonlplrusvtrtlbgroarcselfihrmsskdataukhunovibnthhekaidteguknmlmrpa
stringはい
output_formatCartesia TTS SSE API の raw オプションに一致させる必要があります。raw のみサポートされます。
ドキュメント
stringはい
voiceCartesia TTS SSE API の voice フィールドに一致します。mode = id のみサポートされます。

例:
{ "mode": "id", "id": "voice_123" }
ドキュメント
objectはい
generation_configAPI スキーマに一致するオプションの設定オブジェクト。
ドキュメント
objectいいえ
add_timestamps出力に単語レベルのタイムスタンプを含めるかどうか。
ドキュメント
booleanいいえ
add_phoneme_timestamps出力に音素レベルのタイムスタンプを含めるかどうか。
ドキュメント
booleanいいえ
use_normalized_timestampsタイムスタンプを正規化(0〜1 の範囲)するかどうか。
ドキュメント
booleanいいえ

データサンプル

{
    "context_id": "0",
    "transcript": "The detective burst through the door. 'We've got maybe five minutes before they realize we're here, so listen carefully and listen well: <speed ratio='1.5'/> the artifact is hidden beneath the old courthouse, exactly three feet below the cornerstone, and <volume ratio='0.5'/>whatever you do, DO NOT touch it with your bare hands!' She paused, catching her breath. 'Now... here's the important part... <speed ratio='0.6'/>you need to... very slowly... very carefully... wrap it in the copper wire first... then the silk cloth... then seal it in the lead box.' <volume ratio='2.0'/> Footsteps echoed in the hallway. 'GO GO GO! They're coming up the stairs RIGHT NOW!'",
    "language": "en",
    "output_format": {
        "container": "raw",
        "sample_rate": 44100,
        "encoding": "pcm"
    },
    "voice_id": {
        "mode": "id",
        "id": "bf0a246a-8642-498a-9950-80c35e9276b5"
    }
}

出力の詳細

出力イベント

SageMaker は Response Stream でレスポンスイベントを返します。ペイロードは base64 エンコードされた blob としてクライアントに送信されます。SageMaker の制約により、1 つのイベントが複数のセグメントに分割されることがあります。当 API は各完全なイベントの末尾に改行を必ず付与するため、クライアント側で再構築できます。返される各イベントは、生成された音声チャンクと一部のメタデータを含む JSON オブジェクトです。イベントは event.type で識別される次のいずれかの型になります:
Chunk Event
chunk イベントには、指定された出力フォーマットとサンプルレートで、最大 20 ms 分の音声チャンクが含まれます。
パラメータ説明必須
typeレスポンスイベントの種類。chunk イベントの場合、この値は常に "chunk" です。stringはい
context_idレスポンスコンテキストのオプションの識別子。レスポンスとリクエストやセッションを関連付けるのに有用です。stringいいえ
status_codeチャンクイベントの成功またはエラー状態を表す HTTP ライクなステータスコード。intはい
done最終チャンクかどうか(true)、または追加のチャンクが期待されるか(false)を示します。boolはい
database64 エンコードされた音声データのチャンク。各チャンクは完全な音声出力の一部を表します。stringはい
sampling_rateこのチャンクの音声データのサンプリングレート(Hz 単位、例: 441008000)。intはい
step_timeこのチャンクの生成ステップを表す時間(秒)。同期やレイテンシー追跡に有用です。floatはい
Done Event
done イベントは生成の完了を示します。done イベントは event.type == "done" および event.done == True で識別されます。
Timestamp Event
timestamp イベントは、認識された単語またはトークンのタイミング情報を提供します。
パラメータ説明必須
typeレスポンスの種類。常に "timestamps"stringはい
context_idこのタイムスタンプイベントを対応するリクエスト/セッションと関連付けるオプションの識別子。stringいいえ
status_code成功または失敗を示すステータスコード。intはい
doneこれが最終タイムスタンプイベントかどうかを示します。boolはい
word_timestamps単語レベルのタイムスタンプを記述する辞書(形式は実装により異なる場合があります)。dict<string, any>はい
Phoneme Timestamp Event
phoneme timestamp イベントは、通常、詳細な音声分析のために音素レベルでタイミング情報を提供します。
パラメータ説明必須
typeレスポンスの種類。常に "phoneme_timestamps"stringはい
context_idこのイベントをリクエスト/セッションと関連付けるオプションの識別子。stringいいえ
status_code処理ステータスコード。intはい
doneこれが最終音素タイムスタンプイベントかどうかを示します。boolはい
phoneme_timestamps音素レベルのタイミング情報を含む辞書。dict<string, any>はい

エラーハンドリング

生成中にエラーが発生した場合、SageMaker は Model Error としてエラーを返します。エラーを処理するには、エラーオブジェクトの OriginalStatusCode フィールドを参照してください(Python でのエラーハンドリング例を参照)。

422 エラー

422 エラーは、入力の形式が正しくないことを示します。詳細は Message フィールドで確認できます。

429 エラー

429 エラーは、リクエストしているモデルコンテナが、その時点でリクエストを処理する容量がないことを示します。Cartesia のモデルは、一度に最大 4 件の同時生成リクエストを処理します。複数の推論コンテナレプリカを実行している場合、SageMaker の ProductionVariants 設定内の RoutingConfig パラメータを LEAST_OUTSTANDING_REQUESTS に設定して、ロードアウェアなルーティングを使用することを推奨します。これにより、最適な負荷分散が可能になります。

コンテナログ

CloudWatch でコンテナログを参照できます。ほとんどのログはリクエスト ID とともに発行されます。サーバー側のリクエスト ID の形式は {uuid}-{client supplied context id} です。