「え、これだけで?」と思わず声が出ました。
たった10秒の音声を渡すだけで、その声そっくりに好きな文章を喋ってくれる。
そんなAIの構築方法をご紹介します。
前置き
Qwen3-TTSモデルを使用してボイスクローンを行います。Qwen3-TTSモデルについては、分かりやすい解説記事が色々と出ているため、モデルに関する説明は割愛します。
本記事では「実際にどうやって動かすか」にフォーカスしました。自分の環境で試してつまずいた点や、CPU環境でも問題なく動かせたセットアップ手順を中心にまとめています。
この記事でできること
- 10秒程度のInput音声データでボイスクローン
- NVIDIA GPU不要(CPU環境で動作確認済み)
- 日本語GUI対応で使いやすい
- Whisper自動文字起こし機能付き
- Windows環境で簡単セットアップ
📋 前提条件
- Windows 10/11
- Python 3.10以上
- メモリ 16GB以上推奨
- ディスク空き容量 10GB以上(モデルダウンロード用)
注意: CPU環境のため、音声生成に1文あたり3〜8分程度かかります。GPU環境なら数秒〜数十秒で完了します。
🚀 セットアップ手順
1. リポジトリをクローン
git clone https://github.com/hiroki-abe-58/Qwen3-TTS-JP.git
cd Qwen3-TTS-JP
2. 仮想環境を作成
python -m venv .venv
.venv\Scripts\activate
3. 依存パッケージをインストール
pip install -e .
pip install faster-whisper
4. PyTorchをCPU版に設定(GPU未搭載の場合)
GPU未搭載環境では、CPU版PyTorchをインストールします。
pip uninstall torch torchvision torchaudio -y
pip install torch torchvision torchaudio
5. ffmpegをインストール
音声ファイルの処理に必要です。
ffmpegのダウンロード
curl -L -o ffmpeg.zip https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip
解凍スクリプトを作成
extract_ffmpeg.py を作成:
# extract_ffmpeg.py
import zipfile
import shutil
from pathlib import Path
print("ffmpeg.zipを解凍中...")
zip_path = Path("ffmpeg.zip")
extract_dir = Path("ffmpeg_temp")
final_dir = Path("ffmpeg")
if not zip_path.exists():
print(f"エラー: {zip_path} が見つかりません")
exit(1)
print(f"ファイルサイズ: {zip_path.stat().st_size / 1024 / 1024:.1f} MB")
try:
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
print("解凍完了!")
except Exception as e:
print(f"エラー: {e}")
exit(1)
# ffmpeg binディレクトリを探す
for item in extract_dir.iterdir():
bin_dir = item / "bin"
if bin_dir.exists():
print(f"binディレクトリ発見: {bin_dir}")
# ffmpegディレクトリを作成
final_dir.mkdir(exist_ok=True)
# exeファイルをコピー
for exe in bin_dir.glob("*.exe"):
dest = final_dir / exe.name
shutil.copy2(exe, dest)
print(f"コピー: {exe.name}")
break
# クリーンアップ
shutil.rmtree(extract_dir)
print("\nffmpegインストール完了!")
print(f"場所: {final_dir.absolute()}")
実行
python extract_ffmpeg.py
6. 起動スクリプトを作成
run-voice-clone.bat を作成:
@echo off
chcp 65001 >nul
title Qwen3-TTS Voice Clone
cd /d "%~dp0"
REM ffmpegのパスを追加
set PATH=%~dp0ffmpeg;%PATH%
.venv\Scripts\python.exe -m qwen_tts.cli.demo Qwen/Qwen3-TTS-12Hz-1.7B-Base --ip 127.0.0.1 --port 7861 --no-flash-attn --device cpu
pause
注意点:
-
--device cpu: CPU環境で動作させる -
--no-flash-attn: FlashAttention2を無効化(Windows CPUでは使用不可) -
--port 7861: ポート7860が使用中の場合に備えて7861を使用
🎤 使い方
1. 起動
run-voice-clone.bat をダブルクリック
初回起動時は以下の処理が行われます:
- モデルのダウンロード(約3〜5GB)
- モデルのロード(3〜5分)
「Running on local URL: http://127.0.0.1:7861」 と表示されたら成功です!
2. ブラウザでアクセス
http://127.0.0.1:7861 をブラウザで開きます。
3. ボイスクローンの実行
① 参照音声をアップロード
- 3秒以上(推奨10秒程度) の音声ファイル(WAV、MP3など)をアップロード
- クリアな音質が推奨されます
- 長めの音声の方が品質が安定します
② 自動文字起こし(オプション)
- Whisperモデルを選択(
small推奨) - 「自動文字起こし」ボタンをクリック
- 参照音声のテキストが自動入力されます
Tips: 手動でテキストを入力する場合は、この手順をスキップできます。
③ 音声生成
- 「合成するテキスト」に好きな文章を入力
- 「音声生成」をクリック
- ⏱️ CPU処理で3〜8分待機
- 生成された音声が再生されます!
実行時間
CPU環境だと実行にかなり時間がかかります。
実際に試したときの目安はこんな感じでした。
- 初回起動: 5〜10分(モデルダウンロード)
- モデルロード: 3〜5分
- 音声生成: 1文あたり10〜15分
まとめ
Qwen3-TTSを使うことで、これまで敷居が高かったボイスクローンを試すハードルが大きく下がったと感じました。 10秒程度の音声とCPU環境があれば、検証やプロトタイピング用途としては十分かなと感じます。
一方で、ボイスクローンは扱い方を間違えるとトラブルになり得る技術でもあります。
誰の声を使うのか、何のために使うのかを考えながら、一定の倫理観を持つことが大切ですね。
