短い録音と台本から声を複製し、セリフの間に笑いやため息を加える音声合成モデルが公開された。Lure TTSは生成完了前に音声を出力するエンジンも提供し、音声コンテンツ開発者が参照音声と演技指示を組み合わせたサービスを作れるようにした。
1. 短い参照音声から声を複製
Lureはパラメータ数6億の英語専用テキスト音声合成モデルだ。パラメータはモデルが学習時に調整する数値を指す。3~12秒の参照音声とその録音の台本を与えると、新しい文をその声で生成する。出力は24kHzで音声チャンネルが1つのモノラル音声だ。
モデルカードの単語誤り率指標Seed-TTS WERは、Lure(6億パラメータ)が1.51、Fish Drama 3(350億パラメータ・混合エキスパート構造)が1.54だ。自然さを評価するLibriSpeech-PC UTMOSはLureが4.43で比較表の最高値となり、Qwen3-TTS(6億~17億パラメータ)は4.41だ。開発陣は各評価の公式スクリプトと、生成結果を決める方式であるデフォルトのサンプリングで各文を1回ずつ生成し、比較対象には各開発陣の公表値を掲載した。
2. 発話中の効果と演技指示
ユーザーはセリフ中で音が必要な箇所に丸括弧のタグを入れる。例えば(sigh)はため息、(sharp inhale)は鋭い吸気を表し、モデルはこれを読み上げずに音で表現するよう設計されている。モデルカードは1文にタグを1つか2つ入れることを推奨する。
別途短い演技指示で感情、速度、音の高さ、呼吸を調整する。俳優に台本と一緒に演技メモを渡す方法に似ている。指示は任意で、省略するとセリフとタグを基に演技する。
3. 複数の環境で使えるストリーミングエンジン
同時に公開されたエンジンは、Mac、NVIDIA GPU、CPU用の実行部を1つのPython APIとコマンドラインツール、OpenAI互換サーバーにまとめる。サーバーはPOST /v1/audio/speechを提供し、既存のOpenAIクライアントから利用できる。
音声は生成中に約0.32秒単位で出力され、長い入力は文ごとに分割して順番にストリーミングする。NVIDIA用の実行部は同時リクエストを最大8件までまとめて処理する。
簡単なPythonの使用例は次のとおりだ。
from lure_tts import Lure
tts = Lure.load("models/lure")
voice = tts.make_voice("reference.wav", "Transcript of the reference clip.", name="me")
tts.speak("Wait, you're staying? (sharp inhale) Since when?", voice,
instruct="Sudden, bright shock, then a caught breath.", out="out.wav")
for pcm in tts.stream("(sigh) Fine. I'm in.", "me"): # float32 chunks at 24 kHz
...4. H100の性能とTurboの速度
リポジトリではH100でウォームアップ後、デフォルトのデコードコンテキスト72フレームで単一リクエストを測定した。最初の音声までの時間(TTFA)は、一度に送信する音声の断片である最初のチャンクに集めるフレーム数で変わる。バッチスロットはリクエストを収める枠の数で、両方のスロット設定が単一リクエスト試験に使われた。
表:H100で測定したストリーミング性能
条件:H100、ウォームアップ後、デフォルトのデコードコンテキスト72フレーム、一度に1リクエスト
単位:TTFAは秒、フレーム当たりの時間はミリ秒
| モデル・バッチスロット数 | 最初のチャンク4フレームのTTFA | 最初のチャンク1フレームのTTFA | 最初のフレーム以降のフレーム当たり時間 | RTF |
|---|---|---|---|---|
| Lure·1 | 0.283 | 0.229 | 18.4 | 0.23 |
| Lure·8 | 0.331 | 0.266 | 19.6 | 0.25 |
| Turbo·1 | 0.168 | 0.149 | 11.4 | 0.14 |
| Turbo·8 | 0.200 | 0.167 | 12.4 | 0.15 |
RTFは生成時間と音声の長さの比率で、1未満なら再生時間より速く生成する。H100の表では、同じスロット数でTurboの最初の音声までの待ち時間とフレーム当たりの処理時間がともに短い。
Turboは、フレームごとに音声コードを逐次予測する回数を15回から3回に減らした派生版だ。音声コードは音の情報を符号化した値を指す。リポジトリの発表によると、L4で8ストリームをまとめた場合、コード予測段階が約3.4倍速くなる。
別の機器で短文を測定した結果、M5 16GBはMLX実行部でRTF 0.79、16 vCPU環境のCPUビルドは6.64を記録した。vCPUは仮想的に割り当てられた処理単位だ。前者はリアルタイム再生に追従でき、後者はオフライン生成に適した結果となった。
リポジトリが同じ声とシードで13例を2回ずつ生成した検査では、話者類似度(ECAPA)はM5のMLXが0.533、cpp Metalが0.527で、基準実行(qwen-tts、L4)の0.575と合格基準の0.545を下回った。MLXはリアルタイムの速度を出せるが、話者の保持では基準に届かず、類似度低下の原因はまだ確認されていない。
5. 開発段階で考慮すべき点
短い録音から声と表現を同時に構成できるが、入力の準備と結果の確認には手間がかかる。参照音声は1人が話す雑音のない録音を選び、台本は実際の発話に正確に合わせる必要がある。出力が参照音声のマイクや部屋の残響まで引き継ぐためだ。モデルカードは実在する人物の音声を複製する際に同意を得るよう案内している。
まれな音のタグが抜け落ちた場合は、生成の初期値であるシードを変えて再生成する方法が推奨される。指示によってアクセント・年齢・性別を変える能力は、大規模な指示学習モデルより弱い。
Lure TTSの実用的な変化は、声の複製とセリフ内の音の演出を1つの入力フローにまとめ、結果をストリーミングで届ける点にある。
