メインコンテンツまでスキップ

LongCat AudioDiT 連携

Libre WebUI には、公式の meituan-longcat/LongCat-AudioDiT-1B および meituan-longcat/LongCat-AudioDiT-3.5B チェックポイントに対応する JSON プラグインと、 ローカル HTTP アダプターが同梱されています。アップストリームのプロジェクトは HTTP サーバーではなく Python API を提供するため、examples/longcat-audiodit-server のアダプターが、モデル検出、 JSON 形式の音声生成、multipart 形式の音声クローニング用エンドポイントを提供します。

AudioDiT はストリーミング音声レスポンスではなく、完全な 24 kHz モノラル WAV ファイルを返します。 そのため Libre WebUI は長い応答を文や句の境界で分割し、上限付きのバッチを先行生成して、 デコード済みの音声を順番にスケジュールすることで連続再生します。

要件​

実用上は NVIDIA CUDA GPU が対象です。まず 1B チェックポイントから始めてください。 3.5B チェックポイントは大幅に多くの VRAM を必要とし、読み込みにも時間がかかります。 検証目的なら CPU も利用できますが、対話的な速度は期待できません。

アダプターを起動する​

公式実装をクローンし、分離された環境を作成します。

git clone https://github.com/meituan-longcat/LongCat-AudioDiT.git
python3 -m venv .venv
source .venv/bin/activate
pip install -r examples/longcat-audiodit-server/requirements.txt
export PYTHONPATH="$PWD/LongCat-AudioDiT"

次に、いずれかのチェックポイントを起動します。

python examples/longcat-audiodit-server/server.py \
--model meituan-longcat/LongCat-AudioDiT-1B \
--device cuda:0

サーバーは既定で 127.0.0.1:8300 にバインドします。ローカル利用のため意図的に認証を備えていないので、 信頼できないネットワークへ直接公開しないでください。Libre WebUI とアダプターを別のホストで実行する場合は、 認証付き HTTPS ゲートウェイを使用してください。再利用可能な音声では、Speech の各バッチごとに、 復号された参照録音がそのエンドポイントへ送信されます。CUDA Docker の例とヘルスチェックについては、 examples/longcat-audiodit-server/README.md を参照してください。

プラグインを有効にする​

Settings → Plugins → LongCat AudioDiT を開いて有効化し、アダプターを別の場所で実行していない限り、 ローカルエンドポイントの既定値をそのまま使用します。モデル検出で通知されるのは、そのサーバープロセスに 常駐しているチェックポイントだけです。1B と 3.5B のモデルを切り替えるには、アダプターを再起動します。

llama-swap などのゲートウェイをアダプターの前段に置く場合は、Models API Endpoint に、 そのゲートウェイを経由するアダプターの GET /v1/models ルートを設定します。 モデル検出先を POST /v1/audio/speech にしないでください。検出に失敗すると manifest にある 両方のチェックポイントへフォールバックし、アダプターが読み込んでいないチェックポイントを UI で選択できてしまう可能性があります。

チャット再生に LongCat を使用するには、Settings → Text-to-Speech で選択します。 自然なバッチ再生は既定で有効です。プロバイダー共通の 140 文字という上限により、密度の高い中国語テキストも 1B チェックポイントの短い継続時間ウィンドウ内に収まります。長い応答では Libre WebUI が自動的に複数のバッチを作成します。

音声クローニング​

Imagine → Audio を開いて LongCat の音声モデルを選択し、Clone a reference voice を有効にします。 ノイズの少ない録音をアップロードし、その中で話されている言葉を正確に入力してください。背景雑音が少なく、 話者が 1 人だけの 3~10 秒のクリップが最適です。15 秒または 10 MiB を超えるクリップはアダプターが拒否します。

クローニングは 1 回限りの生成として利用できます。または Save as a reusable voice を選択し、 音声に非公開の名前を付け、話者が保存に同意したことを明示的に確認できます。保存した音声は、同じ LongCat モデルの Settings → Text-to-Speech で選択できるようになります。チャットの読み上げと自動再生では、 Libre WebUI が文の境界を考慮して作るバッチ全体で、その音声が再利用されます。

参照音声は AudioDiT の継続時間ウィンドウの一部を消費します。要求した音声が残り時間に収まらない場合、 アダプターは音声を黙って切り詰めず、明確なクライアントエラーを返します。参照音声または生成する文章を短くして、 もう一度試してください。

音声をクローニングするのは、話者から明示的な許可を得た場合に限ってください。1 回限りの生成では、Libre WebUI は 参照音声をメモリ内に保持し、アダプターはリクエスト後に一時デコードファイルを削除します。再利用可能な音声を 明示的に保存した場合、Libre WebUI は元の参照音声と正確な文字起こしを、ユーザー単位の AES-GCM 暗号化プロファイルに 保存します。生成された模倣音声を正式な参照音声として代用することはありません。AudioDiT は移植可能な話者埋め込みを 公開していないため、生成バッチごとに元の音声と文字起こしのペアが復号され、設定済みのプロバイダーへ送信されます。 プロファイルは Text-to-Speech 設定から完全に削除できます。プラグインで許可されたルーティングまたはエンドポイントが 変更された場合、保存済みプロファイルは安全側に停止します。新しい送信先を確認してから、プロファイルを再作成してください。

生成された音声は、ユーザーの暗号化されたメディアギャラリーに別途保存されます。ギャラリーの生成結果を削除しても 保存済み音声プロファイルは削除されず、音声プロファイルを削除しても以前に生成したギャラリー音声は削除されません。

プロバイダーは WAV、FLAC、MP3、Ogg の参照音声に対応しています。文書で最も強く対応が示されている言語は、 英語と標準中国語です。LongCat には名前付きのプリセット音声が公開されていないため、通常の合成ではモデルの既定音声を使用します。

推論コントロール​

プラグインは、ODE steps、guidance strength、CFG/APG guidance method、seed について、範囲を制限した 高度な変数を公開します。Libre WebUI が音声生成とクローニングの両方のエンドポイントへ転送するのは、 manifest で宣言されたコントロールだけです。既定値はアップストリームの推論例と一致しており、適切な出発点になります。

AudioDiT は再生速度の制御を公開していません。OpenAI の音声リクエスト形式との互換性のため、アダプターは 0.25 から 4.0 までの speed 値を受け付けますが、意図的に無視します。実際の発話タイミングはモデルが決定し、 別の速度を選んでも生成された WAV がタイムストレッチされることはありません。

直接の curl リクエスト、Docker コマンド、正確な制限値、オフライン検証コマンドについては、この例の README を参照してください。