パソコンで動く無料の声クローンAI ── Qwen3-TTSの再現度が怖いくらい高い
執筆:株式会社JQIT(技術広報)
Qwen3-TTS を使い、手元の Mac で動く音声合成と声のクローンを試しました。37秒のサンプルからどこまで本人に近い声が作れるのか、導入手順とあわせて検証しています。
前回の記事で、Macに話しかけたらAIが答えてくれる音声チャットを作りました。でも、あの時点ではテキストで返ってくるだけ。最後の「声」の部分が欠けていました。
今回、Qwen3-TTSというツールを導入して、ついにAIが声で応答するようになりました。
しかも、自分の声でクローンして喋らせることもできます。37秒の音声サンプルを渡したら、本人と区別がつかないレベルのクローン音声が生成されて、正直ちょっと鳥肌が立ちました。
この記事では、初めてTTS(音声合成)を触る方にも分かるように、環境構築から実際に動かすところまで丁寧に解説していきます。
今回作るもの
前回の記事では、こんな構成の音声AIを目指していました。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ マイク │────▶│ STT │────▶│ LLM │────▶│ TTS │
│ 入力 │ │ (Qwen3-ASR) │ │ (Ollama) │ │ (Qwen3-TTS) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
① ② ③ ④
声を入力 文字に変換 返答を生成 声で出力
前回までで①②③が完成していて、今回は最後の④ TTS(Text-to-Speech) を追加しました。
これで完全ローカルの音声対話AIが完成です。クラウドを使わず、自分のMacだけで全部動きます。
TTS(Text-to-Speech)って何?
一言で言うと
TTSは「Text-to-Speech」の略で、文字を声に変換する技術です。日本語では「音声合成」とも呼ばれます。
テキスト入力 → TTS → 音声出力
「こんにちは」 → → 「こんにちは」と聞こえる声
身近な例
実は普段の生活でもたくさん使われています。
- Siri・アレクサ:質問に答えてくれる声
- カーナビ:「300m先、右折です」
- YouTubeの実況動画:ゆっくり音声、ずんだもんなど
- 駅のアナウンス:電車の案内放送(一部)
これらはすべてTTS技術を使っています。
ローカルTTSのメリット
今回使うQwen3-TTSは、クラウドを使わず自分のPCだけで動く「ローカルTTS」です。
クラウドTTS | ローカルTTS | |
|---|---|---|
例 | Google Cloud TTS, AWS Polly | Qwen3-TTS, VOICEVOX |
速度 | ネット環境に依存 | PCスペック依存 |
プライバシー | 音声データがサーバーに送られる | 完全にローカルで完結 |
コスト | 従量課金(使った分だけ料金) | 無料(電気代のみ) |
オフライン | 使えない | 使える |
特に「会話内容を外に出したくない」という場合、ローカルTTSは最適です。
Qwen3-TTSの3つのモード
Qwen3-TTSは、Alibaba(アリババ)のQwenチームが開発した最新のTTSモデルです。
面白いのは3つの使い方ができること。
モード比較表
モード | 難易度 | できること |
|---|---|---|
CustomVoice | ★☆☆ 簡単 | あらかじめ用意された9種類の声から選ぶ |
VoiceDesign | ★★☆ 中級 | 「優しい声で」など言葉で指定 |
VoiceClone | ★★★ 上級 | 誰かの声をコピーして使う |
それぞれ詳しく見ていきましょう。
1. CustomVoice(プリセット音声)
一番シンプルなモード。9種類の声から選ぶだけで使えます。
利用可能な声:
aiden, dylan, eric, ono_anna, ryan, serena, sohee, uncle_fu, vivian
日本語なら vivian や serena がおすすめ。女性の声で自然に聞こえます。
2. VoiceDesign(音声デザイン)
ちょっと変わったモードで、「どんな声か」を言葉で説明すると、それに合った声を生成してくれます。
例えば:
- 「優しく穏やかな若い女性の声で、ゆっくり丁寧に話す」
- 「元気いっぱいの少年の声で、ハキハキと話す」
- 「落ち着いた大人の男性の声で、低めのトーンで話す」
こんな感じで指定できます。プロンプト(指示文)を工夫するのが楽しいモードです。
3. VoiceClone(音声クローン)
これが今回のメイン!誰かの声をサンプルから学習して再現します。
必要なのは:
- 3秒〜1分程度の音声ファイル(参照音声)
- その音声の文字起こし(何を話しているか)
これだけで、その人の声でどんな文章でも読み上げられるようになります。
実際に環境構築してみよう
必要なもの
- Mac(Apple Silicon: M1/M2/M3/M4)
- Python 3.12
- 約16GB以上のメモリ(Unified Memory)
Step 1: SoXをインストール
まず、音声処理に必要な「SoX」というツールを入れます。
brew install sox
補足: brew はMacのパッケージ管理ツール「Homebrew」のコマンドです。もし brew: command not found と出たら、Homebrewの公式サイトからインストールしてください。
Step 2: Python環境を作成
TTS用の専用環境を作ります。他のPythonプロジェクトと分けることで、ライブラリの衝突を防げます。
# Python 3.12の仮想環境を作成
python3.12 -m venv .venv-qwen-tts
# 仮想環境を有効化
source .venv-qwen-tts/bin/activate
補足: venv は「仮想環境」を作るPythonの標準機能です。有効化すると、ターミナルの先頭に (.venv-qwen-tts) と表示されるようになります。
Step 3: ライブラリをインストール
pip install qwen-tts soundfile
ライブラリ | 役割 |
|---|---|
qwen-tts | Qwen3-TTSを使うためのメインライブラリ |
soundfile | 音声ファイルの読み書き |
これで準備完了!モデル(約3GB〜6GB)は初回実行時に自動でダウンロードされます。
Mac特有の設定について
Apple Silicon(M1/M2/M3/M4)で動かす場合、コードを書くときにいくつか注意点があります。
import torch
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
device_map="mps", # ←ここがポイント
dtype=torch.float32 # ←これも重要
)
設定 | 意味 |
|---|---|
| Apple SiliconのGPU(Metal)を使う設定。NVIDIAなら |
| 計算の精度。Macでは |
難しく考えなくてOKです。「Macではこう書く」と覚えておけば大丈夫。
3つのモードを実際に試してみた
1. CustomVoice(プリセット音声)を試す
まずは一番簡単なモードから。
from qwen_tts import Qwen3TTSModel
import soundfile as sf
# モデルを読み込む(初回は自動ダウンロード)
print("モデルを読み込み中...")
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
device_map="mps"
)
print("読み込み完了!")
# 音声を生成
wavs, sample_rate = model.generate_custom_voice(
text="こんにちは!今日も良い天気ですね。",
language="Japanese",
speaker="vivian" # 9種類から選択
)
# ファイルに保存
sf.write("output.wav", wavs[0], sample_rate)
print("output.wav に保存しました")
このコードを実行すると、output.wav という音声ファイルができます。再生してみると、流暢な日本語が聞こえるはずです。
使える音声一覧:
名前 | 特徴(印象) |
|---|---|
vivian | 落ち着いた女性声。日本語におすすめ |
serena | 明るめの女性声 |
ono_anna | 日本語ネイティブ風の女性声 |
aiden | 男性声 |
dylan | 若い男性声 |
eric | 落ち着いた男性声 |
ryan | 明るい男性声 |
sohee | 韓国語向け女性声 |
uncle_fu | 中国語向け男性声 |
2. VoiceDesign(音声デザイン)を試す
次は「言葉で声を指定する」モードです。
from qwen_tts import Qwen3TTSModel
import soundfile as sf
# VoiceDesign用のモデルを読み込む
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign", # ←モデルが違う
device_map="mps"
)
# 「どんな声か」を言葉で指定
wavs, sample_rate = model.generate_voice_design(
text="本日はご来場いただきありがとうございます。",
language="Japanese",
instruct="優しく穏やかな若い女性の声で、ゆっくり丁寧に話す"
)
sf.write("voice_design.wav", wavs[0], sample_rate)
instruct の部分を変えると、生成される声が変わります。
指定例:
- 「元気でハキハキした声」
- 「少し低めの落ち着いた声」
- 「アニメのキャラクターみたいな可愛い声」
いろいろ試してみると面白いです。
3. VoiceClone(音声クローン)を試す
ここからが本題!自分の声をクローンしてみます。
準備するもの
- 参照音声: 自分が話した音声ファイル(WAV形式、3秒〜1分程度)
- 文字起こし: その音声で何を話したかのテキスト
私は37秒の音声ファイル(my_voice.wav)を用意しました。
コード
from qwen_tts import Qwen3TTSModel
import soundfile as sf
# VoiceClone用のモデル(Baseモデル)を読み込む
model = Qwen3TTSModel.from_pretrained(
"Qwen/Qwen3-TTS-12Hz-1.7B-Base", # ←クローン用はBaseモデル
device_map="mps"
)
# 音声クローンを実行
wavs, sample_rate = model.generate_voice_clone(
text="これはクローンされた音声です。本人の声と区別がつきますか?",
language="Japanese",
ref_audio="my_voice.wav", # 参照音声ファイル
ref_text="参照音声で話した内容..." # その文字起こし
)
sf.write("cloned_voice.wav", wavs[0], sample_rate)
実行結果
出てきた音声を聞いた瞬間、鳥肌が立ちました。
自分が喋っているようにしか聞こえない。
声の高さ、話し方のクセ、微妙な間の取り方まで再現されていて、本人と区別がつかないレベル。37秒のサンプルでここまでできるのか、と正直驚きました。
処理時間
項目 | 値 |
|---|---|
参照音声 | 37秒 |
生成テキスト | 約50文字 |
実行時間 | 約38秒(モデルロード含む) |
出力音声 | 9.19秒 |
環境 | Mac (Apple Silicon) |
リアルタイムではないですが、十分実用的な速度です。
プロンプトの再利用でさらに高速化
音声クローンには「プロンプト作成」という前処理があります。これを一度作っておけば、2回目以降の生成が速くなります。
# 1. プロンプトを一度だけ作成(約1秒)
voice_prompt = model.create_voice_clone_prompt(
ref_audio="my_voice.wav",
ref_text="参照音声のテキスト..."
)
# 2. プロンプトを再利用して何度でも生成
texts = ["おはよう", "お疲れ様", "了解です", "ありがとう"]
for text in texts:
wavs, sr = model.generate_voice_clone(
text=text,
language="Japanese",
voice_clone_prompt=voice_prompt # ←使い回す
)
sf.write(f"{text}.wav", wavs[0], sr)
処理 | 時間 |
|---|---|
プロンプト作成 | 約1秒(初回のみ) |
音声生成 | 5〜15秒(テキスト長による) |
この方法なら、複数パターンを効率よく生成できます。
つくよみちゃんの声でも試してみた
自分の声だけだと客観的な評価が難しいので、外部の音声コーパスでも試してみました。
なぜ「つくよみちゃん」なのか
音声クローンを試すには「参照音声」が必要です。でも、他人の声を勝手に使うのはNG。そこで探したのがフリーの音声コーパスです。
いくつか調べた結果、つくよみちゃんコーパスを選びました。
つくよみちゃんとは
つくよみちゃんは、声優・夢前黎さんが声を担当するフリー素材キャラクターです。
- 見た目: アニメ風の女性キャラクター(黒髪ロング、和風テイスト)
- 声: 落ち着いた大人っぽい女性声
- 用途: 動画のナレーション、ゲーム、音声合成の学習など
選んだ3つの理由
理由 | 詳細 |
|---|---|
1. 無料で商用利用OK | 学習用途・商用利用ともに無料。クレジット表記のみでOK |
2. すぐにダウンロード可能 | 公式サイトから音声データ(WAV)と文字起こし(テキスト)がセットで入手できる |
3. 高品質な録音 | プロの声優による収録で、ノイズが少なくクローン学習に最適 |
特に「音声とテキストがセットで公開されている」のが大きい。音声クローンには文字起こしが必要なので、これが揃っているのは助かります。
つくよみちゃんコーパスの種類
コーパス名 | 内容 | 音声数 |
|---|---|---|
VOICEACTRESS100 | 声優統計コーパス(標準的な文章) | 100文 |
ITA Corpus | 感情表現を含む多様な文章 | 424文 |
RECITATION | 朗読音声 | 複数 |
今回は VOICEACTRESS100 を使いました。1文あたり数秒〜十数秒の音声が100個入っています。
実際にクローンしてみた
VOICEACTRESS100の1番目の音声を使ってクローンを試しました。
# 参照音声
ref_audio = "つくよみちゃん/VOICEACTRESS100_001.wav"
ref_text = "また、東寺のように、五大明王と呼ばれる、主要な明王の中央に配されることも多い。"
# プロンプト作成
voice_prompt = model.create_voice_clone_prompt(
ref_audio=ref_audio,
ref_text=ref_text
)
生成結果
10パターンの文章を生成してみました。
No | 内容 | 生成時間 |
|---|---|---|
01 | 「こんにちは!つくよみちゃんです」(自己紹介) | 11.8秒 |
02 | 「おはようございます」(挨拶) | 8.1秒 |
03 | 「お疲れ様でした」(挨拶) | 8.0秒 |
04 | 「本日のニュースをお伝えします」(ナレーション) | 6.7秒 |
05 | 「それでは、次のコーナーに…」(ナレーション) | 7.5秒 |
06 | 「このモデルは、音声クローン技術…」(技術説明) | 9.4秒 |
07 | 「AIによる音声合成の品質が…」(技術説明) | 10.6秒 |
08 | 「わあ、すごい!とっても嬉しい!」(感情表現) | 4.9秒 |
09 | 「えっと、ちょっと緊張しています…」(感情表現) | 5.3秒 |
10 | 「ありがとうございます」(感謝) | 7.7秒 |
たった1文の参照音声から、10パターンすべてでつくよみちゃんの声が再現されました。
ナレーション調の文章は特に自然。感情表現は若干平坦になりますが、それでも十分な品質です。
入手方法
つくよみちゃんコーパスは公式サイトから無料でダウンロードできます。
- つくよみちゃんコーパス配布ページ にアクセス
- 利用規約を確認(商用利用OK、クレジット表記が必要)
- 「VOICEACTRESS100」などをダウンロード
- ZIPを解凍すると、WAVファイルとテキストファイルが入っている
音声クローンを試したいけど参照音声がない、という方におすすめです。
ついに音声パイプライン完成!
LLMと連携する
前回作った「音声認識 → LLM」に、今回の「TTS」を追加します。
ユーザーの声 → 音声認識(STT) → テキスト → LLM → 返答テキスト → TTS → AIの声
実際の構成:
ユーザー入力 → Ollama (qwen3:4b) → Qwen3-TTS → 音声再生
4つの声から選べるようにした
使う声を選べるようにしました。
No | 声 | タイプ | 説明 |
|---|---|---|---|
1 | 自分の声 | クローン | 自分の声でAIが答える |
2 | つくよみちゃん | クローン | フリー音声コーパスからクローン。アニメ風の落ち着いた女性声 |
3 | Vivian | プリセット | 落ち着いた女性声 |
4 | Serena | プリセット | 明るい女性声 |
つくよみちゃんは無料で商用利用もOKなので、デモやプロトタイプにも安心して使えます。
「自分の声でAIが答える」 という体験、想像以上に不思議な感覚です。自分と会話しているみたい。
パフォーマンス改善
リアルタイム性を上げるためにいくつか工夫しました。
項目 | 変更前 | 変更後 | 効果 |
|---|---|---|---|
モデルサイズ | 1.7B | 0.6B | 処理が高速に |
LLM回答 | 制限なし | 30文字以内 | 生成時間短縮 |
音声生成時間 | 13〜23秒 | 5〜10秒 | 待ち時間半減 |
0.6Bの軽量モデルでも品質は十分。音質にこだわるなら1.7Bですが、会話のテンポを重視するなら軽量版がおすすめです。
使い方
# 仮想環境を有効化
source local_llm_dev/.venv-qwen-tts/bin/activate
# 音声チャットを起動
python local_llm_dev/llm_chat_with_voice.py
これで、自分のMacが自分の声で答えてくれる音声AIの完成です。
音声クローン技術の注意点
この技術は非常に強力ですが、悪用される可能性もあります。
やってはいけないこと
- 他人の声を無断でクローンする
- クローン音声で詐欺や偽情報を作る
- 本人のなりすましに使う
今回の記事で使った音声
- 自分の声: 当然OK
- つくよみちゃん: 利用規約で学習利用・商用利用ともにOKと明記されている
つくよみちゃんのように利用規約で許可されているコーパスを使うか、自分の声を使うのが安全です。
他人の声を使う場合は、必ず本人の許可を取ってください。
まとめ
Qwen3-TTSをMac(Apple Silicon)で動かして、完全ローカルの音声対話AIを完成させました。
できたこと
モード | 内容 |
|---|---|
CustomVoice | 9種類のプリセット音声で合成 |
VoiceDesign | 「優しく穏やかに」など言葉で指定 |
VoiceClone | 37秒のサンプルで自分の声をクローン |
LLM連携 | Ollama + TTSで音声対話システム構築 |
驚いたこと
音声クローンの精度が想像以上でした。37秒のサンプルで、本人と区別がつかないレベル。技術の進歩を実感します。
「自分のPCで、自分の声で、AIが答える」
言葉にするとシンプルですが、実際に動いているのを見ると不思議な感覚があります。
ローカルで完結しているので、プライバシーの心配もなし。会話内容が外部に送られることはありません。興味のある方はぜひ試してみてください。
参考リンク
Qwen3-TTS関連
つくよみちゃん関連
- つくよみちゃん公式サイト - キャラクター紹介、利用規約
- つくよみちゃんコーパス - 音声データのダウンロード
- VOICEACTRESS100について - 今回使用したコーパスの詳細
前回の記事: Macで完全ローカル音声チャットAIを作ってみた - Qwen3-ASR + Ollamaでオフライン動作
この記事は Qiita でも公開しています。
生成AIを実務で使える形にするまでを、伴走して支援しています。
生成AIの導入支援・内製化支援について見る