LuxTTS - 1GB VRAMで動くZipVoiceベースの軽量ボイスクローニング
オープンソースTTSモデルが毎月のように出てくる状況だが、LuxTTSは「軽さ」に全振りしているのが特徴的だった。1GB VRAMに収まるモデルでGPU 150倍リアルタイム、CPUでもリアルタイム超えの速度が出る。
- リポジトリ: ysharma3501/LuxTTS
- HuggingFace: YatharthS/LuxTTS
- デモ: HuggingFace Spaces
- 公式サイト: luxtts.com
- ライセンス: Apache 2.0(商用利用可)
ZipVoiceベースのアーキテクチャ
LuxTTSはZipVoiceをベースに、推論ステップを4ステップに蒸留(distillation)した構成。通常のTTSモデルが多段階の推論を必要とするのに対し、少ないステップ数で10倍大きいモデルと同等の品質を出すことを狙っている。
主な技術的特徴を整理した。
| 特徴 | 内容 |
|---|---|
| 4ステップ蒸留 | ZipVoiceの推論パイプラインを4ステップに圧縮 |
| 48kHzボコーダ | 多くのTTSが24kHz出力なのに対し、48kHzで出力。サンプリングレートが高い分だけクリアな音声になる |
| 改良サンプリング | 標準的なEulerサンプリングではなく独自の手法を使用 |
| 1GB VRAM | コンシューマGPUならほぼ何でも動く |
スペックと対応環境
| 項目 | 内容 |
|---|---|
| VRAM | 1GB未満 |
| 推論速度(GPU) | 150倍リアルタイム |
| 推論速度(CPU) | リアルタイム超 |
| 出力品質 | 48kHz |
| ボイスクローン | ゼロショット対応 |
| 対応デバイス | CUDA / CPU / MPS(Apple Silicon) |
| ライセンス | Apache 2.0 |
対応言語は英語と中国語が中心。公式サイトでは日本語・韓国語・フランス語も挙げているが、英語以外の品質についてはユーザー報告がまちまちで、日本語のネイティブ品質を期待するのは厳しそう。
セットアップと使い方
git clone https://github.com/ysharma3501/LuxTTS.git
cd LuxTTS
pip install -r requirements.txt
基本的な音声生成のコード。
from zipvoice.luxvoice import LuxTTS
import soundfile as sf
# モデルロード(GPU)
lux_tts = LuxTTS('YatharthS/LuxTTS', device='cuda')
# CPU: lux_tts = LuxTTS('YatharthS/LuxTTS', device='cpu', threads=2)
# Apple Silicon: lux_tts = LuxTTS('YatharthS/LuxTTS', device='mps')
# リファレンス音声をエンコード
encoded_prompt = lux_tts.encode_prompt('reference.wav', rms=0.01)
# 音声生成
text = "Hello, this is a test of LuxTTS voice cloning."
final_wav = lux_tts.generate_speech(text, encoded_prompt, num_steps=4)
# 保存
final_wav = final_wav.numpy().squeeze()
sf.write('output.wav', final_wav, 48000)
主要なパラメータは以下の通り。
| パラメータ | デフォルト | 説明 |
|---|---|---|
num_steps | 4 | 推論ステップ数。3〜4が品質と速度のバランス |
rms | 0.01 | 音量制御 |
t_shift | 0.9 | 品質と精度のバランス |
speed | - | 再生速度調整 |
ref_duration | 5秒 | リファレンス音声の使用長 |
ボイスクローンの実力
150倍リアルタイムという速度は確かに速い。ただし、ボイスクローンの品質については評価が分かれている。
HackerNoonのレビューでは「テキスト合成の品質は良いが、ボイスクローンは他のモデルに比べると見劣りする」という指摘がある。リファレンス音声の品質に大きく依存し、ノイズの多い音声だとクローン精度が落ちるとのこと。
2026年のオープンソースボイスクローンのランキングでは、Fish Speech V1.5、CosyVoice2-0.5B、IndexTTS-2がトップ3に挙がっており、LuxTTSはランク外。軽さと速度を取るか、品質を取るかのトレードオフになる。
導入コスト
LuxTTSの最大の強みはコストの低さにある。
1GB VRAMで動くため、数年前のエントリーGPUでも問題ない。CPUでもリアルタイム超えなので、GPUなしの環境でも実用的に使える。クラウドAPI不要でランニングコストゼロ。セットアップもgit cloneとpip installだけで、Docker不要、ComfyUI不要。Pythonスクリプト数行で音声が出る。ライセンスはApache 2.0なので商用利用も制限なし。
ただし、Float16最適化は未実装(開発中)で、現在はFloat32での推論。v1.5のリリースも控えている。
このブログで取り上げたTTSとの比較
| モデル | パラメータ | VRAM | 速度 | 日本語 | ボイスクローン | クローン品質 |
|---|---|---|---|---|---|---|
| LuxTTS | 非公開(軽量) | 1GB | 150x RT | △ | ✅(ゼロショット) | △ |
| Qwen3-TTS | 0.6B / 1.7B | 4〜16GB | ストリーミング97ms | ✅ | ✅(3秒) | ○ |
| KugelAudio | 7B | 不明 | AR+拡散 | ❌(欧州24言語) | ✅(5〜30秒) | ○ |
| Pocket TTS | 100M | CPU動作 | リアルタイム超 | ❌ | ✅ | △ |
| MioTTS | 0.1B〜2.6B | 可変 | llama.cpp対応 | ✅(日英) | ❌ | - |
| MimikaStudio | 複数エンジン | 可変 | エンジン依存 | エンジン依存 | ✅ | エンジン依存 |
LuxTTSの立ち位置は「とにかく軽くて速い英語TTS」。日本語品質を求めるならQwen3-TTSかMioTTS、クローン品質重視ならQwen3-TTSやKugelAudio、極限の軽さならPocket TTS(100M)という使い分けになる。英語中心でレイテンシと軽さを優先したい場面、GPUリソースが限られた環境、チャットボットの音声応答のようにリアルタイム性が重要な用途に向いている。日本語の高品質TTSやボイスクローンの忠実度を求めるなら、素直に他のモデルを使ったほうがいい。
個人的には、1GB VRAMで48kHz出力というスペックは面白いと思った。ただ、日本語が弱いのと、ボイスクローンの品質が他のモデルに追いついていないのが現状。v1.5でFloat16対応が入れば速度はさらに上がるだろうし、品質改善にも期待したいところ。