古いIntel MacでもAI音声クローンはできる?Qwen3-TTSで自分の声を再現してみた

コンピュータ関連
スポンサーリンク

以前 llama.cpp を使って、Intel MacでもローカルAIが動かせるのかを検証してみました。

Googleが開発したオープンAIモデル 「Gemma3(4)」 を使い、チャッピーみたいなチャットAIがローカルに爆誕しました。
能力的には・・・使えるかと言うとまぁ「動かせる」程度のもので、そもそもスペックが低いのでそれは仕方ない。

その後、AI同士で延々と会話をさせてみたり、paddleOCRと組み合わせて、より精確なOCRにトライしてみたりしてましたが、
2026年1月に公開された Qwen3-TTS というモデルを最近知りました。

数秒のサンプルをもとに、その声で指定したテキストを読み上げてくれる、とかなんか面白そう。

てことで試してみました。
そのステップと使い方などの備忘録。

スポンサーリンク

そもそもQwen3-TTSはIntel Macで動くのか?

AIに聞いてみると

Intel Mac(x86_64)における Qwen3-TTS の公式および標準的なローカル実行は、Apple Silicon(M1〜M4)向けの Metal/MPS 最適化や、専用フレームワーク(MLX)を前提としているため、基本的に非推奨・または実用上のハードルが極めて高い状態です。

現状の仕様と注意点

• Apple Silicon専用機能の不在: Metal(MPS)や MLX といったMac向け高速化エンジンは Intel Mac では動作しません。
• CPU実行の制限: PyTorchのCPU版(–device cpu)や互換ビルドで無理やり動作させることは理論上可能ですが、1.7B / 0.6B といった大規模なモデルをCPUのみで推論させることになり、生成速度が非常に遅く、実用的ではないとされています。
• 公式・主要なセットアップ手順: 通常は uv や pip を使い、Apple Siliconなら –device mps オプションをつけて実行します。Intel Mac用の特別な公式ビルドや最適化ガイドは提供されていません。

などと言われました(震え声)。

が、大丈夫です。結論から言えば動きます。

そう、llama.cpp + gguf ならね!

…なんてドヤる必要はないのですが、
脅されたわりには結構すんなり動いてくれたのでその情報をシェアします。

あらためて TTS(Text-to-Speech)とは

TTS(Text-to-Speech):文字(テキスト)データを、コンピュータやAIを使って自然な音声に変換する技術のことです。
日本語では「音声合成」や「読み上げ機能」とも呼ばれます

以前、「VOICEVOX」というものを使ってみたことがありました。こちらは用意されているキャラクターの声を使用するもの。

一方、ボイスクローン(音声クローン)は自分の声などのサンプルを使い、本人が話していない内容でも自由に喋らせる音声合成技術のこと。

そのクローニングに定評があるのが、「Qwen3-TTS」というモデルらしいのです。

Qwen3-TTSにはいくつかバリエーションがあって、
VOICEVOXのようにあらかじめ用意されている音声をもとに生成するモデル(CustomVoice)、
テキストによる指示(自然言語)だけで新しい声をデザインするモデル(VoiceDesign)、
そしてゼロショット音声複製(ボイスクローニング)の baseモデル です。

今回はこのbaseモデルを使ってみます。

llama.cppのインストールについて

少し前までなら、Homebrewが使えたのですが、
OSをアップデートして改めて入れようとしたら「Intel Macなんてもうサポートしないよ!」と言われ、インストールすらさせて貰えませんでした。

現在は MacPorts や pip(pipx) を使っています。

基本的には以前の記事

llama.cppで始めるローカルAI入門—古いIntel Macでも意外と動く【8.5 t/s】
古いIntel MacでローカルLLMが動くのか、どの程度動くのかの検証です。前回の記事でOllamaを使ってみたものの、遅過ぎて使えない。なのでllama.cppを直接ビルドして使ったら Ollamaの約4倍の速度が出た! そんなお話です...

と同じなのですが、備忘録としてMacPortsを使ったインストール手順も書いておきます。念のため。
わかる人は読み飛ばしてください。

その後、llama.cppをgithubからクローンしてビルドします。

まずは MacPorts をインストール

まずは、Homebrewの代わりとして MacPorts をインストールしていきます。
ターミナルから作業。

「Xcode用コマンドラインツール(Command Line Tools)」をインストール

xcode-select --install

次に使用しているOSにあったMacPortsをダウンロード。

→ macports.org

Sequoiaなのでリストにある「macOS Sequoia v15」を選択。

保存された MacPorts-2.12.6-15-Sequoia.pkg を開いてインストールします。

インストールできたら動作確認とポートツリーの更新。
ターミナルから

sudo port selfupdate

次に git と cmake をインストール。

sudo port install cmake git

llama.cppをリポジトリからクローンしてビルド

リポジトリからクローンします。保存先はお好きなように。

#git clone <リポジトリURL> <ローカル保存先パス>
git clone https://github.com/ggml-org/llama.cpp.git ~/llama.cpp

このiMac2017に搭載されている Intel Iris Plus Graphics 640 では、使えるどころか足を引っ張ることにしかならないので最初からメタルはオフ、CPUオンリーでビルドします。

cd ~/llama.cpp
cmake -B build -DGGML_NATIVE=ON -DGGML_ACCELERATE=ON -DGGML_METAL=OFF
cmake --build build --config Release -j

最後にパスを通しておきます。

echo 'export PATH=~/llama.cpp/build/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

Qwen3-TTSのGGUFをダウンロード

Hugging Faceの ggml-org/Qwen3-TTS-12Hz-1.7B-Base-GGUF からファイルをダウンロードします。

  • Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf
  • mmproj-Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf

~/models などのディレクトリを作って入れておきます。

音声サンプルを録音

音声クローンするのにサンプルとなるファイルを用意します。(wav, mp3)
なお著作権には音声も含まれます。無許可での使用は厳禁です。

自分の声を自分で使うなら問題ないので録音して使いましょう。

標準アプリならQuickTime Playerを起動、「新規オーディオ収録」を選び、録音ボタンの横から入力ソースを選択。録音ボタンを押して録音、そして保存。

自然な抑揚で、3〜10秒程度の文を読み上げればOK。

「青い海をのんびりと泳ぐ。こんにちは、私の声のテストです。」
「桜の咲く季節になると、毎年花見にでかけます。カメラの前で少し緊張していますが、準備はバッチリです。」

などなど。

重要なのは話す内容より「声の特徴を正確に伝えること」と「ノイズや不要な要素を混ぜないこと」。録音の自然さ・明瞭さ・声の一貫性。
また、母音・子音、濁音、促音、長音、数字、疑問文などを含めたり、息継ぎなどの自然な間を持たせると良いようです。

保存名を reference-audio.aifc としたなら(オーディオ書き出しの場合は.m4a)

afconvert -f WAVE -d LEI16 reference-audio.aifc

で、wavに変換できます。
同じ場所に reference-audio.wav が作成されます。

今は仮にデスクトップに置いておくとしましょう。

~/Desktop/reference-audio.wav

llama-tts + qwen3-tts を使って実際に音声クローンを試す

ターミナルから、

llama-tts -m ~/models/Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf \
  -mm ~/models/mmproj-Qwen3-TTS-12Hz-1.7B-Base-Q8_0.gguf \
  --tts-lang ja \
  --tts-speaker-file ~/Desktop/reference-audio.wav \
  -p "まずは参照音声を指定して、Baseモデルのボイスクローニング機能を確認する。" \
  -o ~/Desktop/test.wav

問題なければデスクトップに -p で入力した文章が音声となって保存されるはずです。

ちなみにこの程度の文章量で30秒ほどかかりました。

timings: prompt eval 1.72s + generation 20.38s + vocoder 7.81s = total 29.91s
output audio = 5.84s (audio time = 0.20x process time)

Q4_K_M.gguf だと27秒くらい。

timings: prompt eval 0.98s + generation 17.96s + vocoder 7.92s = total 26.87s
output audio = 5.92s (audio time = 0.22x process time)

ただし揺れがあるので、必ずしも毎回このような差が出るとは限りません。
早い時はQ8_0で total 20.93s、
Q4_K_Mでは total 18.02s の時もありました。
それぞれ最大9〜10秒ほどのバラツキがあることになります。

そして 0.6B と 1.7B で比べてもそれほど時間差はありませんでした。
クオリティを聴き比べながら色々と試してみることをお勧めします。

ちなみに --seed 42 などランダム性を決定する基準(シード値。数字は任意)を指定すれば毎回同じ出力が得られます。

まとめ

ということで、Intel Macでも

  • llama.cppをビルドして付属の llama-tts を使い、
  • GGUF化されたモデルを使用

すれば、
自声でテキストから音声を生成することができました。

リアルタイムでの生成は当然ながら無理としても、動画のナレーションなどを生成するには十分かと思います。

また、長い文章を一気に生成するのではなく、細切れにして生成した方がイントネーションの不自然さなどにも対応できると思います。

出力された音声を聞いた時には大興奮でした。
まさか自宅のパソコンで、決して新しいとは言えないiMacでもこれができるんだなと。

ただ声のトーンや感情を乗せるには元の音声ファイルから変える必要があります。
Baseモデルでは、プロンプトで指示をするなどのオプションは現在のところ用意されていません。
テンションを高くしたかったらテンションの高い音声ファイルを用意する必要があります。

用意された声のバリエーションからプロンプトで変化させる CustomVoiceモデル、
最初からプロンプトで声を作っていく VoiceDesignモデル。

でもやりたいのは 音声クローニングさせて、プロンプトで細かい指示を出せるもの。痒いところに手が届きませんね。

勝手なことを言ってますけれども、今回使用したものを生み出してくれたエンジニアさん達には感謝しかありません。ほんとありがとうございます。
お礼を申し上げて今回の結びとします。

では。

あ、次回は先ほどの「やりたかったこと」をやれるかもと手を出して失敗したモデルの件と、可能性を感じているまた別のモデルの方も試して記事にしようと思います。うまくいくかなぁ・・・(期待

コメント

タイトルとURLをコピーしました