ウェブサイト検索

TorToiSeテキスト音声合成を使用して、迅速に自分の声をクローンする方法


紹介

AIやディープラーニング技術が提供する最もクールな可能性の一つは、現実世界のさまざまなものを再現できることです。ゼロからリアルな画像を生成することでも、受信したチャットリクエストに対する適切な応答を提供することでも、特定のテーマに合わせた適切な音楽を生成することでも、AIを頼りにすることで、以前は人間の手によって直接指導されてのみ可能だったものの素晴らしい近似を実現できます。

音声クローンは、この新しい技術が提供する興味深い可能性の一つです。これは、特定のイントネーション、アクセント、音程を再現しようとすることで、ある俳優の声の特性を模倣する品質です。生成事前学習トランスフォーマーやSadTalkerのような静止画像操作技術と組み合わせることで、私たちは本物の人間の行動の非常に興味深い近似を始めることができます - ただし、画面とスピーカー越しです。

この記事では、自分自身の声をクローンするために必要な各ステップを説明し、その後Tortoise TTSを使用して自分の正確な impersonationsを生成する方法を解説します。それらのクリップを他のプロジェクトと組み合わせることで、AIを使った非常に興味深い成果を作り出すことができます。

カメTTS

ソロ著者のジェームズ・ベトカーによってリリースされた「トータス」は、APIやサービスの支払いを必要とせずにローカルおよびクラウドマシンで使用できる声のクローンモデルの中で、間違いなく最良かつ最も使いやすいものです。わずか3〜5の10秒の音声クリップから声をクローンするのが簡単です。

その仕組みとインスピレーションについては、両方とも自己回帰型トランスフォーマーと除去拡散確率的モデルによる画像生成に関連しています。著者はこれらのモデルアプローチの成功を再現しようとしましたが、音声生成に適用しました。これらのモデルでは、時間と大量のデータをかけて、画像生成の過程を段階的な確率手続きで学習し、画像の分布を学びます。

TorToiseを使用すると、モデルは音声データの視覚化であるMELスペクトログラムに特化して訓練されています。これらの音声の表現は、音声データに対応するためのわずかな修正を加えるだけで、典型的なDDPMの状況で使用されるのと同じプロセスを用いて簡単にモデル化できます。さらに、初期ノイズオブジェクトの重み条件として既存の声のタイプを模倣する能力を追加しています。

これにより、非常に少ない初期入力を使用して音声データを正確に再現することができます。

デモ

ノートブックスペースに入ったら、実行をクリックして始め、tortoise_tts.ipynb ノートブックを開きます。

音声サンプルの選択

音声サンプルを選択するための彼ら自身の提案に加えて、私たちは物事を簡単にするためにいくつかの提案を用意しています:

  • 適切なマイクスタンドがない場合は、コンピュータよりも携帯電話を使用することをお勧めします。電話のマイクは、ノイズリダクションがはるかに優れている可能性があります。
  • 良い録音場所はエコーがないことです。このデモのために、『ダークナイトライジング』の「ベイン」のサンプルを使用しようとしましたが、彼のマスクの内部からのエコーが強すぎました。余分な音を吸収するために、衣類でいっぱいのクローゼットをお勧めします。
  • 録音のためのスクリプトを書き出してください。これにより、どもりや「えー」とか「うー」といった音、もしくは小さなミスを避けることができます。
  • 可能であれば、言語の音の最も広範なバリエーション(音素)をカバーするよう努めてください。これらは音声的なパンガラムと呼ばれます。これは、モデルがあなたのスピーチにおけるさまざまな潜在的な音を理解するのに役立ちます。これの例としては、「その素早いベージュのキツネが空中で各細い犬の上に飛び跳ねた。気をつけて、叫ぶ、彼は再びあなたをだました、混乱を引き起こしている。」があります。

私たちの提案と元の内容の両方に従えば、あなたのクローンは問題なく作成されるはずです。こちらがこのデモに使用した録音です。すべてが正しく行われれば、最終出力は元の入力の声の抑揚、トーン、ピッチに密に近づくはずです。ただし、これが完璧に機能するとは限りません。私たちのケースでは、音素を含まないフレーズを用いてゆっくり録音された音声サンプルをいくつかテストし、予期せぬ形で英語のアクセントが追加された結果になりました。次のセクションの最後まで読んで、私たちの声や提供されたサンプル音声、楽しみのために調達したセレブリティの声を使って作成した作業例をいくつかご覧ください。

倫理的考慮事項

他人の声をクローンする場合は、そのような行動の倫理を考慮することを必ず心がけてください。法的な影響も言うまでもありません。私たちは、パロディや実験以外の目的で他人の明示的な許可なしに声のクローンを使用することを推奨せず、悪意のあるまたは自己中心的な意図でこの技術を使用する悪行者を否認します。

コードの分解

最初に私たちが行うべきことは、作業スペースを設定することです。最初のコードセルには、このプロジェクトに必要なすべてのインストールが含まれています。残念ながら、著者はrequirements.txtファイルにすべてのインストールを含めていなかったため、プロセスを円滑に進めるためにいくつかの追加インストールを追加しました。

#first follow the instructions in the README.md file under Local Installation
!pip3 install -r requirements.txt
!pip install librosa einops rotary_embedding_torch omegaconf pydub inflect
!python3 setup.py install

次のコードセルには、実際のインポートとモデルダウンロードが含まれています。モデルのダウンロードはキャッシュにあり、あなたの総ストレージにはカウントされません。ただし、これはセッションが終了した後にマシンが再起動されるたびにダウンロードが再開されることを意味します。

Imports used through the rest of the notebook.
import torch
import torchaudio
import torch.nn as nn
import torch.nn.functional as F

import IPython

from tortoise.api import TextToSpeech
from tortoise.utils.audio import load_audio, load_voice, load_voices

This will download all the models used by Tortoise from the HF hub.
tts = TextToSpeech()
If you want to use deepspeed the pass use_deepspeed=True nearly 2x faster than normal
tts = TextToSpeech(use_deepspeed=True, kv_cache=True)

モデルのダウンロードが完了したら、次のセルにある提供されたコードを使用して、声のクローンなしで簡単なTTS生成を行うことができます。これはモデルによって決定されたランダムな声になります。この無指示の音声生成のためのコードを次のセルで見てみましょう:

This is the text that will be spoken.
text = "Joining two modalities results in a surprising increase in generalization! What would happen if we combined them all?"

Here's something for the poetically inclined.. (set text=)
"""
Then took the other, as just as fair,
And having perhaps the better claim,
Because it was grassy and wanted wear;
Though as for that the passing there
Had worn them really about the same,"""

Pick a "preset mode" to determine quality. Options: {"ultra_fast", "fast" (default), "standard", "high_quality"}. See docs in api.py
preset = "ultra_fast"

私たちは now 自分の音声録音を /notebooks/tortoise-tts/tortoise/voices ディレクトリにアップロードできるようになりました。GUI の左側にあるファイルナビゲーターを使用してこのフォルダを見つけ、「voice_test」という新しいサブディレクトリを作成します。このフォルダにサンプル録音をアップロードしてください。それが完了したら、デモに使用できるすべての音声を確認するために次のセルを実行できます。

Tortoise will attempt to mimic voices you provide. It comes pre-packaged
with some voices you might recognize.

Let's list all the voices available. These are just some random clips I've gathered
from the internet as well as a few voices from the training dataset.
Feel free to add your own clips to the voices/ folder.
%ls tortoise/voices

IPython.display.Audio('tortoise/voices/tom/1.wav')

#### output #### these are the names
#angie/                freeman/  myself/        tom/            train_grace/
#applejack/            geralt/   pat/           train_atkins/   train_kennard/
#cond_latent_example/  halle/    pat2/          train_daws/     train_lescault/
#daniel/               jlaw/     rainbow/       train_dotrice/  train_mouse/
#deniro/               lj/       snakes/        train_dreams/   weaver/
#emma/                 mol/      tim_reynolds/  train_empire/   william/

さて、私たちはようやくボイスクローンを始める準備が整いました。次のセルのコードを使用して、テキスト変数を入力としてサンプルクローンを生成してください。スピード(速い、超速い、標準、高品質があります)を調整することができ、これが最終的な出力にかなりの影響を与える可能性があることに注意してください。

Pick one of the voices from the output above
voice = 'voice_test'
text = 'Hello you have reached the voicemail of myname, please leave a message'
Load it and send it through Tortoise.
voice_samples, conditioning_latents = load_voice(voice)
gen = tts.tts_with_preset(text, voice_samples=voice_samples, conditioning_latents=conditioning_latents, 
                          preset=preset)
torchaudio.save('generated.wav', gen.squeeze(0).cpu(), 24000)
IPython.display.Audio('generated.wav')

テキスト変数を希望するテストに変更し、次のセルを実行して音声出力を取得してください!

締めくくりの考え

ディープラーニングの適用に関して言えば、これはここ数年で私たちのお気に入りのプロジェクトの一つです。音声クローンは、エンターテイメント、会話エージェントなど、無限の可能性を秘めています。

このチュートリアルでは、TorToise TTSを使用して音声のクローン音声サンプルを作成する方法を示しました。この技術を他のサンプルを使って試してみることをお勧めします。例えば、私たちはお気に入りのセレブの一人を使って新しいボイスメールを作成しました。同様に、morganの声を使用して、非常に楽しい驚きを体験してみてください!

関連記事: