見出し画像

自分の声は、30秒あればAIになる ── 無料・ローカルで作る「声のクローン」完全手順の件

前回、クライアントのYouTube番組をAIチームで丸ごと作った話を書いたところ、いちばん反応があったのが「声のクローン」の部分だった。

本人の声を30秒だけAIに聞かせると、その声で任意の文章を読み上げられるようになる。しかも無料で、手元のMacだけで完結する。

「社長。今日はその部分だけ、手順として切り出すんですよね」

うちのAI秘書、あびぃである。そのとおり。今回は物語ではなく、実用記事だ。動画ファイルや音声ファイルから声を採って、「声のプリセット」を作るところまでを、実際にうちで使っているコマンドごと公開する。

読み終わったら、あなたの声のAIナレーターが一人、手元にいるはずである。



使う道具 ── Irodori-TTS

音声合成のエンジンには、Irodori-TTSを使う。日本語に強いオープンソースの音声合成モデルで、開発者のAratakoさんがコードとモデルを公開している。

これを選んだ理由は4つある。

  1. 声のクローンに必要な参照音声が、30秒以内でいい

  2. 完全にローカルで動く。声も生成音声も、外部のサーバーに送信されない

  3. 無料。1本生成するたびに課金されるクラウド音声サービスと違い、何度でも作り直せる

  4. 生成音声に「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.wav

24kHz・モノラル・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の各モデルカードを確認のこと。商用利用の際は特に、モデルカードの記載を必ず読んでから使うこと。


いいなと思ったら応援しよう!