KaniTTS:GPUと呼べるかぎりぎりの環境でリアルタイム音声生成
テキストと録音を、聴ける作品に
ナレーション、ステム分離、カバー、効果音を、ブラウザだけで。
- テキスト読み上げも、ボイスクローンも
- ステムを分離、またはカバーを生成
- 登録して試聴。聴いてから決められる
現代の音声LLM型TTSモデルの多くは、自由に使える本格的なGPUがあることを前提にしています。こちらは8GB、あちらは16GBといった具合です。NineNineSix.aiのKaniTTSは、はるかに小さな前提から作られました。コンシューマー向けRTX 3060や4050が確保できる程度の3GBのVRAMがあれば、自然な音声をリアルタイムで生成できるという前提です。この効率は、機能を削って妥協した結果ではありません。モデルに不要な重荷を背負わせないために、意図的にコンパクトに設計されたアーキテクチャから生まれています。
KaniTTSとは?
KaniTTSは、2段階のパイプラインで構成されたオープンソースのテキスト読み上げシステムです。バックボーンの大規模言語モデルがテキストから圧縮されたトークン表現を生成し、効率的なニューラル音声コーデックがそのトークンを実際の波形へすばやく展開します。バックボーンはLiquidAIのLFM2で、同等の能力を持つ標準的なTransformerよりも効率が高いことから選ばれた3億5,000万パラメータのモデルです。音声側にはNVIDIAのNanoCodecを組み合わせています。この「音声を言語として扱う」という考え方、つまりチャットモデルが単語を予測するのと同じように音声生成をトークン予測タスクとして扱う発想は、Orpheus TTSとSesame CSMから直接影響を受けています。ただしKaniTTSは、同じ中核的な発想を、どちらよりも明確に小さなリソース占有量へ落とし込んでいます。
KaniTTSの機能上の利点
- 本当に少ないVRAM要件。Kani-TTS-2リリースはわずか3GBで動作し、専用のワークステーション向けカードを必要とせず、エントリークラスのコンシューマーGPUに対応します。
- 高速な生成。リアルタイムファクターは約0.2で、約10秒の音声をおよそ2秒で生成できます。ストリーミングモードでは、最初の音声チャンクまでのレイテンシが300ms未満と記録されています。
- 話者埋め込みによるゼロショット音声クローン。Kani-TTS-2リリースでは、短い参照クリップだけで声の特徴を抽出してすぐに適用でき、ファインチューニングは必要ありません。
- 複数言語のチェックポイントと複数話者への対応。1つのモデルをあらゆる言語へ無理に広げるのではなく、英語、アラビア語、韓国語などを個別に扱う専用モデルが用意されています。
- Apache 2.0ライセンス。別途契約を結ばずに商用利用できます。
- vLLMによる本番対応のサービング。他のLLMベースのサービスと同じように導入したいチーム向けに、OpenAI互換のAPIサーバーがすぐに使える状態で提供されています。
2段階パイプラインがこの効率を実現する仕組み
効率性に関する中核的な判断は、LFM2をバックボーンに選んだことです。Liquid Foundation Modelsは、同程度の能力を持つ従来型のTransformerよりも計算負荷を抑えるよう設計されています。純粋な容量を最大化するのではなく、リソース占有量を最小化することが目的なら、これは大きな利点です。この軽量なバックボーンで圧縮トークン表現を生成し、続いてNanoCodecへ渡して波形にすばやく展開することで、大規模言語モデルから音声波形を直接生成する際の、より重い計算オーバーヘッドを回避します。ほかの音声LLMシステムと同じ大枠の2段階ロジックですが、最大の出力品質だけを追うのではなく、各段階で占有量の小ささを意図的に重視して選んだコンポーネントから構成されています。
学習データにも、用途に合った効率を重視する同様の姿勢が表れています。多くのTTSモデルが学習するオーディオブック風の正式な朗読コーパスではなく、KaniTTSはEmilia(LAIONによる大規模な多言語・感情ラベル付きデータセット)やExpresso-Conversational(自然な会話録音)などを使用しています。そのため、出力はナレーターが段落を音読する声よりも、くつろいだ会話に近くなる傾向があります。特にアシスタント型や会話型の用途に適している理由の一つです。
KaniTTSの始め方
- パッケージをインストールし、必要なtransformersのバージョンを固定します。
pip install kani-ttsを実行し、続いてpip install -U "transformers==4.57.1"を実行します。この特定バージョンへの固定はLFM2との互換性に必要で、省略すると読み込みに失敗することが文書化されています。 - Hugging Faceから言語別チェックポイントを読み込みます。 英語には
nineninesix/kani-tts-400m-enを使用し、ほかの対応言語には同等のチェックポイントを使います。アラビア語、韓国語などは個別の専用モデルとして提供されています。1つのチェックポイントがすべてをカバーすると考えず、対象言語に合わせて選んでください。 - 数行のコードで音声を生成します。
from kani_tts import KaniTTSを実行し、次にmodel = KaniTTS('nineninesix/kani-tts-400m-en')とaudio, text = model("Hello, world!")を実行すると、波形を直接取得できます。model.save_audio(audio, "output.wav")でディスクへ書き出せます。 - 本番規模のサービングには
kanitts-vllmリポジトリを使用します。 この別プロジェクト(GitHubのnineninesix-ai/kanitts-vllm)は、OpenAI互換エンドポイントを備えたFastAPIサーバーでモデルをラップし、vLLMの非同期エンジンとKVキャッシュ最適化を利用します。ローカルテストを超える用途について文書化された導入方法です。 - 利用する導入方法に応じたハードウェア要件を確認します。 コアモデルは3GBのVRAMで無理なく動作しますが、vLLMベースの本番サーバーの文書では、大規模環境で十分な余裕を確保するために、CUDA 12.8以降と12GB以上のVRAMを推奨しています。最小値があらゆる状況に当てはまると考える前に、実際の用途に合う構成を確認してください。
- 別のワークフローには、GGUF量子化版やComfyUIノードを試します。 llama.cppベースの導入とノードベースのクリエイティブパイプラインの両方について、コミュニティが保守する選択肢があります。ベースのPythonパッケージよりも既存のツールに合うなら、そちらを利用できます。
より良い結果を得るためのヒント
- 英語を既定値にせず、対象言語に合うチェックポイントを選びます。 KaniTTSは1つの汎用多言語チェックポイントではなく、言語ごとの専用モデルを提供しています。コンテンツに合うモデルを使う方が、英語向けに調整されたモデルへ英語以外のテキストを無理に入力するより優れた結果になります。
- 正式なナレーションより、会話らしい自然な言い回しを活用します。 学習データが会話に重点を置いているため、KaniTTSは劇的で格式ある朗読調の文章を読ませるより、アシスタント型や対話型のコンテンツで最も自然に聞こえる傾向があります。
- 音声クローンが必要なら、必ずKani-TTS-2を使います。 話者埋め込みによるゼロショットクローンは、その特定リリースの機能です。特定の参照音声を再現することがプロジェクトに含まれるなら、正しいチェックポイントを使っていることを確認してください。
- ローカルでの実験を終えたら、vLLMサーバー方式を選びます。 ベースのPythonパッケージはテストに適していますが、実際のユーザートラフィックを処理する用途では、専用の
kanitts-vllmサーバーが文書化された、より堅牢な方法です。 - プロジェクトが明記する倫理的な利用制限を守ります。 KaniTTSのライセンス条件では、同意なしに他人になりすます欺瞞的なコンテンツの生成を、ほかの有害または違法な用途とともに明確に禁止しています。読み飛ばす決まり文句ではなく、導入時の実際の制約として扱ってください。
KaniTTSとほかの音声LLM型モデルの比較
| KaniTTS | Orpheus TTS | Chatterbox | |
|---|---|---|---|
| バックボーン | LiquidAI LFM2(350M) | Llama-3B | 拡散ベース |
| 最小VRAM | 約3GB(Kani-TTS-2) | 約8GB(GGUF量子化) | より少ないが、主な重点ではない |
| リアルタイムファクター | 約0.2 | 主な公表指標ではない | 主な公表指標ではない |
| 音声クローン | 対応、話者埋め込みによるゼロショット(Kani-TTS-2) | 対応、ゼロショット | 対応、ゼロショット |
| 設計上の優先事項 | 最小限のリソース占有量 | クローズドな商用システムと競える表現力 | 感情の誇張度制御 |
| ライセンス | Apache 2.0 | Apache 2.0 | MIT |
KaniTTSの具体的なトレードオフは、Orpheus TTSのような大規模で重いモデルが備える感情表現の細やかさや劇的な表現幅の一部と引き換えに、本当に控えめなハードウェアでリアルタイムの信頼性を得ることです。最大限の表現幅よりもレイテンシと導入しやすさが重要な場合に適しています。
よくある質問
KaniTTSが実際に必要とするVRAMの最小量は?
Kani-TTS-2リリースはわずか3GBのVRAMで動作するため、RTX 3060や4050のようなエントリークラスのコンシューマーGPUに対応します。ただし、vLLMベースのサーバー文書では、本番規模で余裕のあるスループットを得るため、より多くの容量(12GB以上)を推奨しています。
KaniTTSは音声クローンに対応していますか?
はい。Kani-TTS-2リリースでは、短い参照クリップから抽出した話者埋め込みを使用します。対象音声の特徴を再現するためのファインチューニングは必要ありません。
KaniTTSの速度は?
報告されているリアルタイムファクターは約0.2です。約10秒の音声をおよそ2秒で生成し、ストリーミングモードでは最初の音声チャンクまでのレイテンシが300ms未満です。
KaniTTSは商用でも無料で使えますか?
はい。別途ライセンス契約を結ばずに商用利用できるApache 2.0ライセンスで公開されています。ただし、なりすましや有害なコンテンツに関するプロジェクトの明示的な倫理的利用制限は引き続き適用されます。
KaniTTSはどの言語に対応していますか?
言語ごとに独立した専用チェックポイントとして提供されています。英語が中心で最も堅牢な選択肢であり、アラビア語、韓国語などの追加モデルがそれぞれ用意されています。1つの汎用多言語モデルではありません。
Echoraでテキストを音声に変換
テキストから一人の話者による音声を作る同様のワークフローをブラウザで利用したい場合は、Echoraのテキスト読み上げを使えます。最大5,000文字を入力し、内蔵音声または保存したカスタム音声を選び、必要に応じて対応している話し方タグを追加して安定性を調整できます。生成結果はプレビューしてMP3でダウンロードできます。