remsky/Kokoro-FastAPI

Dockerized OpenAI-compatible wrapper for Kokoro-82M text-to-speech w/multiplatform CPU, AMD, NVIDIA GPU PyTorch; multi-speaker, clone-tuning, caption timestamps, SSML, optional readalong web UI

Kokoro-FastAPI – Docker 化された OpenAI 互換 TTS サービス

概要 – Kokoro-82M テキスト読み上げモデル(8200 万パラメータの多言語 TTS モデル)をラップした、すぐに実行可能な FastAPI サーバーです。このサーバーは OpenAI の audio/speech エンドポイントを模倣しているため、既存の OpenAI クライアントライブラリをそのまま使用できます。マルチアーキテクチャの Docker イメージ(CPU、NVIDIA-CUDA、AMD-ROCm、Apple-Silicon)として提供されており、uv を使用して直接起動することも可能です。

主な機能

  • OpenAI 互換音声 API – POST /v1/audio/speech は OpenAI と同じ JSON フィールド(model、voice、input、response_format、speed など)を受け入れ、mp3、wav、opus、flac、aac、または raw PCM 形式で音声を返します。
  • ストリーミング – OpenAI クライアントと標準の requests の両方で音声をチャンク単位で受信でき、低レイテンシ(GPU で約 300ms、最新の M シリーズ CPU で約 1s)でのリアルタイム再生が可能です。
  • 多言語音声 – 英語(米国/英国)、スペイン語、フランス語、ヒンディー語、イタリア語、日本語、ブラジルポルトガル語、中国語(北京語)。
  • 音声ミキシングとエイリアス – 複数のボイスパックを重み付けして組み合わせたり(af_bella(2)+af_sky(1))、複雑なミックスに対して短いエイリアスを定義したりできます。
  • インライン SSML スタイルタグ – [voice:…]、[pause:1.5s]、[rate:1.5]、および IPA 発音タグをテキストに直接埋め込むことができます。
  • マルチスピーカー対話 – 音声タグや専用の /dev/dialogue エンドポイントを使用して、ターンごとに異なる声で会話をスクリプト化できます。
  • カスタムボイスパック生成 – Inno-Clone-Tuner (/dev/tune) を介して、短い参照クリップに基づいて音声を微調整し、結果として得られる .pt ボイスパックを保存できます。
  • タイムスタンプ付き字幕 – 字幕生成用に、単語ごとまたはチャンクごとのタイムスタンプをオプションで取得できます。
  • Web UI – テスト、音声ミックスのプレビュー、長文読み上げ用の組み込みブラウザ UI (/web) が付属しています。
  • Kubernetes / DigitalOcean デプロイ – Helm チャートとデプロイメントドキュメントが提供されています。

実行方法

  1. Docker – 適切なイメージ(例: ghcr.io/remsky/kokoro-fastapi-gpu:latest)をプルし、ポート 8880 を公開します。
  2. Docker-Compose – リポジトリをクローンし、docker/gpu(または cpu/rocm)フォルダを選択して docker compose up --build を実行します。
  3. 直接実行 – uv とシステム依存関係をインストールし、./start-gpu.sh または ./start-cpu.sh を実行します。

すべてのイメージにはモデルが組み込まれています。手動でダウンロードする必要がある場合は、ヘルパースクリプトが提供されています。

典型的な使用例 (Python)

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8880/v1", api_key="not-needed")
resp = client.audio.speech.create(
    model="kokoro",
    voice="af_bella+af_sky",
    input="Hello world!",
    response_format="mp3",
)
resp.stream_to_file("out.mp3")

生の HTTP を好む場合は、requests でも同様の呼び出しが可能です。

このプロジェクトの意義

  • セルフホスト可能な OpenAI 互換 TTS バックエンドを提供し、外部の有料 API への依存を排除します。
  • Kokoro-82M モデルは、コンシューマーグレードの GPU や CPU でも動作するほど軽量でありながら、オープンソースの TTS スタックでは珍しい多言語対応や音声ミキシング機能を備えています。
  • 豊富な API(ストリーミング、音声タグ、チューニング、タイムスタンプ)により、音声アシスタント、オーディオブック、インタラクティブゲームなど、高速で制御可能な音声合成を必要とするあらゆるアプリケーションに適しています。

リンク

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト