自分の声は、30秒あればAIになる ── 無料・ローカルで作る「声のクローン」完全手順の件
前回、クライアントのYouTube番組をAIチームで丸ごと作った話を書いたところ、いちばん反応があったのが「声のクローン」の部分だった。
本人の声を30秒だけAIに聞かせると、その声で任意の文章を読み上げられるようになる。しかも無料で、手元のMacだけで完結する。
「社長。今日はその部分だけ、手順として切り出すんですよね」
うちのAI秘書、あびぃである。そのとおり。今回は物語ではなく、実用記事だ。動画ファイルや音声ファイルから声を採って、「声のプリセット」を作るところまでを、実際にうちで使っているコマンドごと公開する。
読み終わったら、あなたの声のAIナレーターが一人、手元にいるはずである。
使う道具 ── Irodori-TTS
音声合成のエンジンには、Irodori-TTSを使う。日本語に強いオープンソースの音声合成モデルで、開発者のAratakoさんがコードとモデルを公開している。
これを選んだ理由は4つある。
声のクローンに必要な参照音声が、30秒以内でいい
完全にローカルで動く。声も生成音声も、外部のサーバーに送信されない
無料。1本生成するたびに課金されるクラウド音声サービスと違い、何度でも作り直せる
生成音声に「AI製である」ことを示す電子透かしが自動で入る。悪用対策が組み込まれている
特に2は、仕事で使うなら効いてくる。人の声は、それ自体が本人そのものだ。クラウドの音声クローンサービスは手軽だが、他人の声という預かりものを外部に出すことになる。ローカル完結なら、その心配が最初からない。
動作環境は、Apple SiliconのMacで確認している。生成速度の実測は、12秒の音声を作るのに約9秒。実用に足る速さだ。
大前提 ── clone してよいのは、同意のある声だけ
手順の前に、これだけは書いておく。
クローンしてよいのは、自分の声か、本人からはっきり同意をもらった声だけである。有名人の声、上司の声、家族の声。技術的には作れてしまうが、同意なくやってはいけない。うちでクライアントの声を扱ったときも、ご本人の了解を取り、出来上がった声を本人に確認してもらってから使っている。
ここを飛ばす人は、この先を読む資格がない。いいだろうか。では、進める。
手順1 ── セットアップ
Irodori-TTSはGitHubから取得する。Pythonのパッケージ管理にuvを使う構成なので、uvが未導入ならそれも入れる。
git clone https://github.com/Aratako/Irodori-TTS.git
cd Irodori-TTS
uv sync --extra cpu`--extra cpu` はMacの場合の指定である(内部的にはApple SiliconのGPU支援が効く)。NVIDIA GPUのマシンなら `--extra cu128` を使う。
モデルの重みは、初回実行時にHugging Faceから自動でダウンロードされる。
手順2 ── 素材から「いい30秒」を切り出す
ここが、この記事でいちばん大事な工程だ。声の品質は、モデルの設定より、参照音声の質で決まる。
素材は、動画ファイルでも音声ファイルでもいい。過去のセミナー録画、社内向けの解説動画、ポッドキャスト、スマホのボイスメモ。掘れば、たいてい何かある。なければ、原稿を用意してスマホに30秒吹き込めばいい。
選ぶときの条件は、こうだ。
本人が一人で喋っている(他の人の声が混ざらない)
BGMや環境音がない、または極めて小さい
声量と調子が安定している(冒頭の挨拶より、話が乗ってきた中盤がいい)
30秒以内に収める(上限は30秒。うちの実例は28.90秒)
文の途中、単語の途中で切らない。息継ぎから息継ぎまでを一区切りにする
個人情報や固有名詞を含む区間は避ける(参照音声はファイルとして残るため)
うちでクライアントの声を作ったときは、68分の講義録画から音量解析で候補を12件出し、ポーズ解析で両端が息継ぎになっている28.90秒を選んだ。ここまでやるのは道楽の域なので、最初は耳で聞いて「この30秒、いいな」で構わない。
切り出しはffmpegで行う。たとえば動画の7分47秒から8分16秒を切り出すなら、こうだ。
ffmpeg -i 講義動画.mp4 -ss 00:07:47 -to 00:08:16 \
-ar 24000 -ac 1 -c:a pcm_s16le reference.wav24kHz・モノラル・16bitのWAVに変換している。これが参照音声の基本形になる。
音量はそろえておくと安定する。うちでは-20 LUFSに正規化している。
ffmpeg -i reference.wav -af loudnorm=I=-20:TP=-1.5 -ar 24000 reference_norm.wav手順3 ── 声を生成する
参照音声ができたら、いよいよ生成である。Irodori-TTSのフォルダで、次のコマンドを打つ。
uv run --no-sync python infer.py \
--hf-checkpoint Aratako/Irodori-TTS-600M-v3-VoiceDesign \
--text "こんにちは。この声は、AIが作っています。" \
--ref-wav reference_norm.wav \
--caption "落ち着いた語り口で、丁寧に説明する。" \
--num-steps 40 --cfg-scale-text 3.0 --cfg-scale-caption 3.0 --cfg-scale-speaker 5.0 \
--seed 42 \
--output-wav out.wavこれは、うちが実運用で使っている検証済みの設定そのままである。ポイントを3つだけ解説する。
一つ。`--caption` には、話し方の指示を日本語で書ける。「落ち着いた語り口で」「明るくはきはきと」。声の主は参照音声で決まり、話し方はここで調整する。二段構えである。
二つ。`--seed` は抑揚の乱数の種だ。同じ数字なら、何度実行しても同じ音になる。気に入らなければ数字を変えると、同じ文章のまま抑揚だけが変わる。ガチャを引く感覚で、いくつか試して良いテイクを採ればいい。
三つ。出力の音量はほぼ最大に張り付いて出てくる。動画やポッドキャストに載せる前に、音量調整を忘れないこと。
手順4 ── 聞き取りAIで検品する
生成した音声は、自分の耳で聞くのに加えて、機械にも聞かせると精度が上がる。ローカルの文字起こしAI(Whisper系)に生成音声を聞き取らせ、元の文章と突き合わせるのだ。
なぜこれが要るか。日本語のTTSは、漢字の固有名詞をたまに誤読する。うちの実例でいちばん笑ったのは、専門用語や難読語は全部正しく読めたのに、クライアント本人の名前だけを読み間違えたことだ。
対処は単純で、誤読した語だけを、入力テキスト側でひらがなにする。
ここで一つ、実測から得た大事な知見がある。「読み間違えそうな語」を先回りして全部ひらがなにしては、いけない。かな化しすぎると文の構造が機械に伝わらなくなり、抑揚がかえって不自然になる。実際に生成して、実際に誤読したものだけ直す。疑わしきは、まず実測である。
手順5 ── 「声のプリセット」として保存する
最後に、できあがった参照音声を、使い捨てにせず資産にする。
うちでは、声ごとにフォルダを一つ作り、次の3点セットで保存している。
reference.wav ── 参照音声そのもの
preset.json ── 出典(どのファイルの何秒から何秒か)、音量、選定理由、ファイルのハッシュ値
README.md ── 使い方と、検証済みの生成設定
大げさに見えるだろうか。だが、これをやっておくと、半年後に「あの声、どの音源から作ったんだっけ」で迷わない。誰の声を、どの素材から、いつ、本人同意のもとで作ったか。声という繊細な素材を扱う以上、来歴の記録はセットで持つべきだと思っている。
複数の声を扱い始めると、この管理は必須になる。うちでは別々のクライアントの声を取り違えないよう、プリセットに出典と検証記録を必ず残す運用にしている。
まとめ ── 声が資産になる
以上が、全手順である。振り返ると、やったことは4つしかない。
いい30秒を切り出す。生成する。機械の耳で検品する。プリセットとして保存する。
こうして作った「声」は、一度作れば何度でも働く。ナレーション、社内研修の音声、動画のオープニング。本人はマイクの前に座らなくていい。実際うちでは、クライアントの番組のオープニングとエンディングを、この方法で作ったクローン音声が毎回読んでいる。
「社長。締めの前に、正直に言うことがありますよね」
......ある。正直に書くと、この声のプリセットは、部品の一つにすぎない。台本をスライドに割り、読み仮名を整え、音声を一括生成し、聞き取りAIで全チャンクを検品し、実測の尺に合わせて動画を組み、サムネイルまで出す。前回の記事で書いた、あの制作ライン全体があって、初めて番組が量産できる。
そして、もう一つ正直に書く。前回の記事を出してから、「うちのチャンネルでも作れないか」「制作ラインの作り方を教えてほしい」という問い合わせを、想像していなかった数もらった。個別に返しきれる量ではなくなったので、腹を決めた。
台本の分割から、音声の一括生成、検品、動画の組み立て、サムネイルまで。制作ライン全体の設計図と構築手順を、教材としてまとめて公開する。詳しくは次の記事で。
→「AI動画工場のつくり方 ── 30秒の声とClaude Codeで、YouTube番組を量産する完全マニュアル」(記事URLをここに)
「まとめるのは、私ですけどね」
......頼んだ。
かくして、うちの書庫にはまた一つ、30秒の声から生まれたナレーターが増えるのであった。
参考:
Irodori-TTS(GitHub)
https://github.com/Aratako/Irodori-TTS
モデル: Aratako/Irodori-TTS-600M-v3-VoiceDesign(Hugging Face)
https://huggingface.co/Aratako/Irodori-TTS-600M-v3-VoiceDesign
注記: Irodori-TTSのコードはMITライセンス。モデルの重みの利用条件は、Hugging Faceの各モデルカードを確認のこと。商用利用の際は特に、モデルカードの記載を必ず読んでから使うこと。
