概要
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 | トランスクリプトテキストの言語コード。 サポートされるコード: en、fr、de、es、pt、zh、ja、hi、it、ko、nl、pl、ru、sv、tr、tl、bg、ro、ar、cs、el、fi、hr、ms、sk、da、ta、uk、hu、no、vi、bn、th、he、ka、id、te、gu、kn、ml、mr、pa | string | はい |
output_format | Cartesia TTS SSE API の raw オプションに一致させる必要があります。raw のみサポートされます。ドキュメント | string | はい |
voice | Cartesia TTS SSE API の voice フィールドに一致します。mode = id のみサポートされます。例: { "mode": "id", "id": "voice_123" }ドキュメント | object | はい |
generation_config | API スキーマに一致するオプションの設定オブジェクト。 ドキュメント | object | いいえ |
add_timestamps | 出力に単語レベルのタイムスタンプを含めるかどうか。 ドキュメント | boolean | いいえ |
add_phoneme_timestamps | 出力に音素レベルのタイムスタンプを含めるかどうか。 ドキュメント | boolean | いいえ |
use_normalized_timestamps | タイムスタンプを正規化(0〜1 の範囲)するかどうか。 ドキュメント | boolean | いいえ |
データサンプル
出力の詳細
出力イベント
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 | はい |
data | base64 エンコードされた音声データのチャンク。各チャンクは完全な音声出力の一部を表します。 | string | はい |
sampling_rate | このチャンクの音声データのサンプリングレート(Hz 単位、例: 44100、8000)。 | 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} です。