メインコンテンツへスキップ
Cartesia のセルフホストサービスは、TTS と STT の両方のデプロイメントにおいて、レイテンシーとスループットの間で設定可能なトレードオフをサポートしています。
セルフホストアーキテクチャ

コアコンポーネント

API Server

API Server は、セルフホスト Cartesia サービスへのすべてのリクエストのエントリポイントです。REST API リクエストと WebSocket 接続を処理します。

PubSub Controller (NATS)

API サーバーとモデルコンテナの間で非同期通信プロトコルを活用し、スムーズで低レイテンシーなリクエスト処理を実現しています。この設計により、以下が可能になります:
  • モデルコンテナが自由にクラスタに参加・離脱できる。
  • 長時間にわたるリクエストライフサイクルを効率的にステートフル管理できる。
  • API サーバーとモデルコンテナ間の調整により、リクエストに対して最も低レイテンシーな経路を提供できる。

Model Workers (Engine)

Cartesia は TTS および STT の両方に対してバッチ処理されたエンジンワーカーを提供しています。ここでカスタマイズする中核的なパラメータは batch_size (B) です。このパラメータやその他のパラメータのトレードオフについては、Performance Tuning のセクションで説明します。

License Proxy Server

セルフホストデプロイメントの認証とライセンス有効性の確認のために、Cartesia のクラウド環境と通信する単一のサービスをデプロイします。これにはいくつか理由がありますが、主な目的は、このサービスが唯一のアウトバウンド通信を行うサービスとなり、ネットワークセキュリティポリシーの設定を容易にするためです。 Proxy では、希望する分離レベルを選択できます:
  • Connected: デプロイメントが定期的に Cartesia のクラウドに ping を送信してライセンスを検証し、利用状況に関するテレメトリを送信します。
  • Air-gapped: 完全に分離されたモードで、オフラインライセンスを使用して動作します。エアギャップモードでは、監査ログを通じて利用情報を取得するため、お客様と直接連携します。
ほとんどのお客様には Connected モードでのデプロイをおすすめしますが、完全に分離されたデプロイメントが必要な場合は、GTM チームがセットアップを支援します。 ConnectedAir-gapped のいずれのモードでも、接続が切れたりライセンスが期限切れになったりした場合に即座に運用を停止しないよう、猶予期間が設定されています。

ネットワークトポロジーとポート

以下の値は、cartesia-kube で配布される Helm チャートに基づいています。

サービス間ポート

コンポーネントポートプロトコル
API server5000HTTP / WebSocket
API metrics8080HTTP (Prometheus)
NATS4222NATS protocol (TCP)
NATS monitoring8222HTTP
License proxy8080HTTP
Worker metrics8080HTTP (Prometheus)

サービス間トラフィック

FromTo目的
クライアントIngress → API 5000REST および WebSocket リクエスト
APINATS 4222TTS および STT ジョブの発行
APILicense proxy 8080 (LICENSE_PROXY_URL)リクエストごとの認可チェック
WorkersNATS 4222推論ジョブのサブスクライブ
License proxyCartesia ライセンスエンドポイント認証および監査ログの転送(エアギャップモードでは両方ともローカルで実行)
API および WorkersGoogle Cloud Storageボイス、LoRA、マイグレーションの同期
PrometheusAPI 8080、Worker 80805 秒ごとのメトリクススクレイプ

アウトバウンド egress (Connected モード)

connected モードでは、クラスタが以下の宛先へのアウトバウンドアクセスを必要とします。ファイアウォールで許可リストに追加してください:
宛先ポート理由
us-docker.pkg.dev443Pod 起動時のコンテナイメージの取得
storage.googleapis.com443GCS からのボイス、LoRA、マイグレーションの同期
api.cartesia.ai443License-proxy の認証(connected モード)
DNS53 (UDP + TCP)標準的な名前解決
エアギャップモードでは、これらの egress 経路は一切不要で、クラスタはローカル発行のライセンスファイルを使って完全にオフラインで動作します。

クラスタの egress を制限する

Helm チャートには、DNS、RFC1918 のプライベートレンジ(10.0.0.0/8172.16.0.0/12192.168.0.0/16)、およびクラウドメタデータの IP(169.254.169.254/32)以外のすべてのクラスタ外 egress をブロックする、オプトイン方式の NetworkPolicy が同梱されています。values.yaml で有効にできます:
networkPolicy:
  denyExternalEgress: true
別ゲートウェイ経由ですべてのインターネット egress を仲介する場合や、エアギャップデプロイメントの場合に使用してください。

サービス間のトラフィック

クラスタ内のすべてのサービス間通信は暗号化されていません。 クラスタネットワークへのアクセスは、クラウドプロバイダーのネットワーキング、および適用した NetworkPolicy リソースによって制限されます。チャートには、クラスタ外への egress をすべてブロックするオプトインポリシーが同梱されています(前述の クラスタの egress を制限する を参照)。 ingress 用 TLS の設定(EKS の ACM、GKE の Managed Certificates、セルフマネージドクラスタの BYO 証明書)については、Managed Kubernetes を参照してください。