1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オープンなTTS「Qwen3-TTS」を手元のGPUで動かして日本語をしゃべらせてみた

1
Last updated at Posted at 2026-11-01

はじめに

Alibaba の Qwen チームが公開しているオープンな音声合成(TTS)モデル Qwen3-TTS を、手元の GPU で動かしてみました。試したのは次の2パターンです。

  1. 用意された基本の声(プリセット話者)で日本語を読ませる(CustomVoice)
  2. 声のトーンを文章で指定して読ませる(VoiceDesign)

実際に生成した音声と、合成にかかった時間を載せます。

使ったモデル

モデル 内容
Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice 9種類のプリセット話者で読み上げるモデル。今回は日本語ネイティブ話者の Ono_Anna を使用
Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice 上の小型版
Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign 「どんな声で、どんな調子で話すか」を自然文で指定して読み上げるモデル

いずれも QwenLM/Qwen3-TTS で公開されており、重みは初回実行時に Hugging Face から自動でダウンロードされます。

使ったハードウェア・環境

項目 内容
OS Windows 11
CPU Intel Core i7-14700KF
メモリ 96GB
GPU NVIDIA GeForce RTX 4060 Ti(VRAM 8GB)
Python / PyTorch 3.12 / 2.11.0+cu128
パッケージ qwen-tts 0.1.1(bfloat16、flash-attn なし)

セットアップ

mkdir qwen3-tts-test
cd qwen3-tts-test
uv venv --python 3.12
.venv\Scripts\activate
uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
uv pip install qwen-tts

先に CUDA 版の PyTorch を入れてから qwen-tts を入れます。

パターン1:基本の声(プリセット話者)で読ませる

tts_custom.py
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel

model = Qwen3TTSModel.from_pretrained(
    "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",  # 0.6B 版は 0.6B-CustomVoice
    device_map="cuda:0",
    dtype=torch.bfloat16,
)

wavs, sr = model.generate_custom_voice(
    text="こんにちは。今日はQwen3-TTSを使って、手元のGPUで日本語の音声合成を試してみます。",
    language="Japanese",
    speaker="Ono_Anna",
)
sf.write("sample1_customvoice.wav", wavs[0], sr)

生成された音声(1.7B-CustomVoice)
「こんにちは。今日はQwen3-TTSを使って、手元のGPUで日本語の音声合成を試してみます。」

生成された音声(0.6B-CustomVoice、同じ文)

パターン2:声のトーンを文章で指定する(VoiceDesign)

VoiceDesign モデルでは、instruct に声の特徴や話し方を自然文で書きます。日本語で書いてもちゃんと効きました。同じ文章のまま、instruct だけを変えて3種類作ってみました。

instruct(トーンの指定)
A 落ち着いた低めの声の30代男性。技術解説をするように、ゆっくり、はっきりと話す。
B 明るく元気な20代の女性。新機能を紹介するように、テンション高めで楽しそうに話す。
C 眠そうな若い男性。小さめの声で、だるそうに、ゆっくりぼそぼそと話す。
tts_design.py
import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel

model = Qwen3TTSModel.from_pretrained(
    "Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign",
    device_map="cuda:0",
    dtype=torch.bfloat16,
)

text = "ビルドが通らないときは、まずエラーメッセージを最後まで落ち着いて読んでみましょう。"
tones = {
    "calm": "落ち着いた低めの声の30代男性。技術解説をするように、ゆっくり、はっきりと話す。",
    "bright": "明るく元気な20代の女性。新機能を紹介するように、テンション高めで楽しそうに話す。",
    "sleepy": "眠そうな若い男性。小さめの声で、だるそうに、ゆっくりぼそぼそと話す。",
}

for name, instruct in tones.items():
    wavs, sr = model.generate_voice_design(text=text, language="Japanese", instruct=instruct)
    sf.write(f"design_{name}.wav", wavs[0], sr)

読ませた文章:「ビルドが通らないときは、まずエラーメッセージを最後まで落ち着いて読んでみましょう。」

A:落ち着いた男性

B:明るく元気な女性

C:眠そうな男性

性別や年齢、テンションの指定は聞いてすぐわかるくらい素直に反映され、同じ文章でもまったく別人の読み上げになりました。

合成にかかった時間

モデル読み込み後の生成部分だけを、各3回生成した平均で測りました。RTF = 生成時間 ÷ 音声の長さで、1 より小さければリアルタイムより速く生成できています。

パターン モデル 生成時間 RTF VRAM ピーク
1 1.7B-CustomVoice 17.8 秒 2.09 4.3 GiB
1 0.6B-CustomVoice 26.6 秒 2.51 2.5 GiB
2-A 落ち着いた男性 1.7B-VoiceDesign 16.6 秒 2.10 4.2 GiB
2-B 明るい女性 1.7B-VoiceDesign 12.0 秒 2.12 4.1 GiB
2-C 眠そうな男性 1.7B-VoiceDesign 19.9 秒 2.12 4.4 GiB
  • VRAM 8GB の RTX 4060 Ti で、1.7B モデルも余裕を持って動きました
  • ただし公式パッケージのままだと、どれも音声の長さの約2倍の時間がかかります
  • 0.6B にしても速くはなりませんでした

高速化:faster-qwen3-tts

コミュニティ製の faster-qwen3-tts を使うと高速化できます。仮想環境を分けて入れます。

uv venv --python 3.12 .venv-fast
.venv-fast\Scripts\activate
uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
uv pip install faster-qwen3-tts "transformers==5.15.1"

transformers は 5.15.1 に固定しないと、検証時点ではモデル読み込みでエラーになりました。

tts_fast.py
import soundfile as sf
from faster_qwen3_tts import FasterQwen3TTS

model = FasterQwen3TTS.from_pretrained("Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice")

wavs, sr = model.generate_custom_voice(
    text="こんにちは。今日はQwen3-TTSを使って、手元のGPUで日本語の音声合成を試してみます。",
    language="Japanese",
    speaker="ono_anna",
)
sf.write("sample1_fast.wav", wavs[0], sr)

VoiceDesign も同様に、VoiceDesign モデルを読み込んで generate_voice_design(text=..., instruct=..., language=...) を呼ぶだけです。

モデル 生成時間 RTF 公式比
1.7B-CustomVoice 3.96 秒 0.45 約4.6倍速
0.6B-CustomVoice 3.29 秒 0.37 約6.8倍速
1.7B-VoiceDesign 2.98 秒 0.46 約4.6倍速
  • RTF 0.37〜0.46 で、すべてリアルタイムより速くなりました
  • ストリーミング生成(generate_custom_voice_streaming)では、最初の音声が出るまで約0.3〜0.4秒でした

まとめ

  • Qwen3-TTS は、プリセット話者での読み上げも、文章でのトーン指定も数行の Python で試せる
  • 文章でのトーン指定は素直に効き、同じ文章でも別人のような読み上げを作れた
  • RTX 4060 Ti(VRAM 8GB)で 1.7B モデルが動作。公式パッケージでは RTF 約2だが、faster-qwen3-tts を使うと RTF 0.37〜0.46 まで速くなった

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?