CTranslate2が、文章を音声に変えるDrama 3モデルの実験的なオフライン実行機能を追加した。音声合成をローカルサービスに組み込みたい開発者は、一般的なプロセッサーだけで始め、必要に応じてGPUで一部の演算を高速化できる。
公式モデルファイルを変換して用意すれば、合成時に別途大規模なフレームワークは必要ない。モデルの準備段階と実際の音声生成段階を分け、既存のCTranslate2実行環境でローカル音声合成を試すための手段となる。
1. 実験機能はオーディオコード生成から波形復元までを担う
CTranslate2 4.8.4は2026年10月25日に公開された。この機能はテキストから音の中間表現であるオーディオコードを生成し、それを単一チャンネル、つまり1系統の音声信号の波形に復元する。モデル変換だけでなく、実際に聴ける音声を作る工程まで提供する。
リリースには、オーディオモデルで使う演算のCPU・GPU実装も追加された。公式ガイドはCPUを標準の実行経路とし、任意のアクセラレーションとしてCUDAとROCmを挙げている。アクセラレーターなしでも音声合成を始められる構成だ。
2. 公式チェックポイントを変換してローカルモデルを用意する
Drama 3のチェックポイント、つまり学習結果を保存したモデルファイルの変換には、Transformers変換器を使う。以下は、名前と位置の対応付けであるマッピングと、多軸の数値配列であるテンソルの形状を確認するシミュレーションコマンドだ。モデルが学習で得た数値である重みを読み込まず、出力ディレクトリも作成しない。実際の変換では--dry-runを外す。
ct2-transformers-converter \
--model /path/to/drama-3-official \
--output_dir /path/to/drama-3-ct2 \
--quantization float32 --dry-run変換処理はファイルをダウンロードしないため、ローカルに用意したチェックポイントを使う。Pythonからも標準のCTranslate2変換器インターフェースを利用できる。実際の変換では、保存前にモデルと波形復元用の重みがメモリに読み込まれる。
3. テキストプロンプトを作成して合成を呼び出す
合成の呼び出しには、変換済みモデルのローカルトークナイザーを使ってテキストを数値配列に変える準備が必要だ。トークナイザーは文章をモデルの入力単位に分割するツールを指す。各テキスト区間を個別にエンコードしてトークン境界を保ち、最初の列にトークナイザーIDを、残りのオーディオコード列に0を入れる。
この配列がモデルへの入力となり、生成結果は単一チャンネルのPCM16 WAVファイルとして保存できる。これは音量を16ビットで記録する音声形式だ。開発者は、テキスト入力を準備する部分と音声ファイルとして保存する部分をアプリケーションにつなぐことになる。
4. GPUは一部のモデル演算を高速化し、波形はCPUが処理する
CPUでは、合成と波形復元に32ビット浮動小数点演算を使う。浮動小数点は小数を近似して表す数値方式だ。重みを圧縮保存した標準のFP8チェックポイントをそのまま使え、別途INT8モデルを用意する必要はない。FP8は浮動小数点数を8ビット、INT8は整数を8ビットで保存する形式だ。入力に応じて一部のエキスパート重み群、つまりモデル内部の計算グループを選んで計算するが、全グループはRAMに残る。
NVIDIAデバイスではCUDA、AMDデバイスではROCmに対応するようビルドして利用できる。GPUはモデルの中核部と出力変換の演算を担い、残りの演算と最終的な波形復元はCPUが処理する。エキスパート重みは初回使用時にGPUへ転送され、頻繁に使うデータの一時保管領域であるキャッシュに残るため、新たなグループが選ばれるほどGPUメモリ使用量が増える。
5. ローカル実行の利点と実験段階の対応範囲
ローカル実行では、合成時にPyTorchやTransformersのような大規模フレームワークを必要とせず、実行環境の依存関係を減らせる。一方で、メモリ容量の検討が必要だ。例えば、FP8の重みにINT8実行を選ぶと変換済みテンソルが追加メモリを使うため、保存形式と実行精度は併せて決めるのがよい。
独立したリクエストは、別々に稼働する同一モデルのインスタンスである複数の実行レプリカに分散して処理できる。各レプリカは一度に1つの数列、つまり順に並んだ値を生成する方式なので、複数のレプリカにリクエストを振り分けて並行処理を構成する。
現在の対応範囲はオフライン合成と波形復元であり、参照録音から声を複製したり、長文を自動分割してストリーミングしたりする機能には対応していない。GPUのエキスパートキャッシュのサイズを制限しても、GPUメモリ全体の上限が定まるわけではない。
今回のリリースの実用的な価値は、CPUでローカル音声合成を始め、必要に応じてモデル演算の一部にGPUを追加する選択肢を提供した点にある。
