ChatTTSは、対話シナリオに特化した高度なテキスト読み上げ(TTS)モデルです。2Noiseのチームによって開発されたこのモデルは、自然で表現豊かな音声合成を提供し、仮想アシスタント、インタラクティブな音声応答システムなどのアプリケーションに最適です。この記事では、ChatTTSの概要、動作方法、インストールと使用方法について詳しく説明します。
それなら、Anakin AIを見逃すことはできません!
Anakin AIは、すべてのワークフロー自動化に最適なオールインワンプラットフォームです。使いやすいノーコードアプリビルダーで強力なAIアプリを作成できます。[Llama 3](https://anakin.ai/en-us/apps/Meta%20Llama-3-70B-24321)、[Claude](https://anakin.ai/apps/claude-15108)、[GPT-4](https://app.anakin.ai/chat)、[Uncensored LLMs](https://anakin.ai/apps/dolphin-2-5-mixtral-8-x-7-b-chatbot-online-16898)、[Stable Diffusion](https://app.anakin.ai/artist)などを使用して、夢のAIアプリを数分で作成しましょう!
![Anakin AI: Automate Your AI Tasks with Ease](https://assets.anakin.ai/blog/2024/06/anakin-2.webp)
ChatTTSとは?
ChatTTSは、対話型のタスクに最適化された生成的音声モデルです。一般的なTTSシステムとは異なり、音声がロボットっぽく聞こえず、人間の音声の微妙な要素を伝える能力に優れています。英語と中国語の両方をサポートしており、10万時間以上のデータでトレーニングされています。HuggingFaceで利用可能なオープンソース版は、4万時間のデータでトレーニングされています。
ChatTTSの主な特徴
- 対話型TTS:複数のスピーカーをサポートし、自然で表現豊かな音声合成を可能にする、対話型のタスクに最適化された機能。
- 細かい制御:笑い声、一時停止、間投詞などの細かい抑揚特徴を予測・制御する能力。
- 改善された朗読法:プロソディにおいてほとんどのオープンソースのTTSモデルを凌駕し、実際のような音声体験を提供します。
ChatTTSの動作原理
ChatTTSは、人間の対話を模倣する音声を生成するために、高度な機械学習技術を活用しています。このモデルは、抑揚、一時停止、感情表現などの対話の微妙なニュアンスを処理するように設計されています。以下に、その主要なコンポーネントの概要を示します。
ChatTTSのモデルアーキテクチャ
ChatTTSは、自動回帰モデルと非自動回帰モデルの組み合わせを使用して音声を生成します。自動回帰コンポーネントは会話の流れを維持するのに役立ち、非自動回帰部分は音声が迅速かつ効率的に生成されることを保証します。
ChatTTSのトレーニングデータ
このモデルは、10万時間以上の英語と中国語の音声データからなる大規模なデータセットでトレーニングされています。この幅広いトレーニングにより、ChatTTSは人間の対話の微妙なニュアンスを理解し再現することができます。
細かい制御
ChatTTSの注目すべき特徴の1つは、細かい抑揚の制御が可能であることです。これにより、適切なタイミングで笑い声や一時停止、その他の間投詞を挿入し、生成される音声をより自然で魅力的にします。
ChatTTSの使用方法:ステップバイステップガイド
ChatTTSは、テキスト入力から高品質な音声を生成する強力なテキスト読み上げライブラリです。Pythonプロジェクトに音声合成を統合するためのシンプルで直感的なAPIを提供します。このセクションでは、コードの例とステップバイステップの手順を使用して、ChatTTSの使用方法を探っていきます。
ChatTTSのインストール
ChatTTSを使用するには、必要な依存パッケージをインストールする必要があります。次のコマンドを実行して必要なパッケージをインストールします:
pip install omegaconf torch tqdm einops vector_quantize_pytorch transformers vocos IPython
Pythonスクリプトで必要なモジュールをインポートします:
import torch
import ChatTTS
from IPython.display import Audio
以下のPyTorchの設定オプションを設定します:
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')
ChatTTSでモデルの読み込み
ChatTTS.Chat
クラスのインスタンスを作成し、事前学習済みのモデルを読み込みます:
chat = ChatTTS.Chat()
chat.load_models()
モデルの重みが更新されている場合は、force_redownload=True
パラメータを使用します:
chat.load_models(force_redownload=True)
重みを手動でダウンロードしている場合は、source='local'
およびlocal_path='YOUR LOCAL PATH'
パラメータを使用してローカルパスを指定します:
chat.load_models(source='local', local_path='YOUR LOCAL PATH')
ChatTTSの推論の使用方法
ChatTTSでのバッチ推論
infer
メソッドにテキストのリストを指定して、バッチ推論を行うことができます:
texts = ["So we found being competitive and collaborative was a huge way of staying motivated towards our goals, so one person to call when you fall off, one person who gets you back on then one person to actually do the activity with.",]*3 \
+ ["You know, as coders, I think we've all got a bit of a soft spot for open source, right? I mean, it's just such a cool concept. But here's the thing - all the really cutting-edge, mind-blowing tech? It's being hoarded by these big shot companies, and they sure as hell aren't gonna be sharing it with the rest of us anytime soon."]*3
wavs = chat.infer(texts)
生成されたオーディオをIPythonのAudio
関数を使用して再生することができます:
Audio(wavs[0], rate=24_000, autoplay=True)
Audio(wavs[3], rate=24_000, autoplay=True)
ChatTTSでのカスタムパラメータの使用
params_infer_code
およびparams_refine_text
を指定することで、推論パラメータをカスタマイズすることができます:
params_infer_code = {'prompt':'[speed_5]', 'temperature':.3}
params_refine_text = {'prompt':'[oral_2][laugh_0][break_6]'}
wav = chat.infer('Some of the best restaurants in Singapore include the three-Michelin-starred Odette known for its exquisite French cuisine, Restaurant Labyrinth which serves innovative modern Singaporean dishes, and Cloudstreet, a two-Michelin-starred contemporary restaurant by Chef Rishi Naleendra.', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
ChatTTSでのランダムスピーカーの使用
ランダムなスピーカーエンベディングをサンプリングすることで、ランダムなスピーカーでオーディオを生成することができます:
rand_spk = chat.sample_random_speaker()
params_infer_code = {'spk_emb' : rand_spk, }
wav = chat.infer('Some of the most iconic and beloved dishes in Singapore include chicken rice, with Tian Tian being one of the most famous, chili crab, with restaurants like Jumbo Seafood being very popular, and Peranakan cuisine, with the one-Michelin-starred Candlenut restaurant being a top spot to try authentic Peranakan flavors.', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
ChatTTSでの2段階制御の実装
refine_text_only
およびskip_refine_text
パラメータを使用して、テキストの改良と音声の生成を別々に制御することができます:
text = "So we found being competitive and collaborative was a huge way of staying motivated towards our goals, so one person to call when you fall off, one person who gets you back on then one person to actually do the activity with."
chat.infer(text, refine_text_only=True)
text = 'so we found being competitive and collaborative [uv_break] was a huge way of staying [uv_break] motivated towards our goals, [uv_break] so [uv_break] one person to call [uv_break] when you fall off, [uv_break] one person who [uv_break] gets you back [uv_break] on then [uv_break] one person [uv_break] to actually do the activity with.'
wav = chat.infer(text, skip_refine_text=True)
ChatTTSとLLMの統合
ChatTTSは、言語モデル(LLM)と統合して、ユーザーの質問に基づいてテキストを生成することができます。以下はDeepSeek APIを使用した例です:
from ChatTTS.experimental.llm import llm_api
API_KEY = ''
client = llm_api(api_key=API_KEY,
base_url="https://api.deepseek.com",
model="deepseek-chat")
user_question = 'What are the best restaurants in Singapore?'
text = client.call(user_question, prompt_version = 'deepseek')
print(text)
text = client.call(text, prompt_version = 'deepseek_TN')
print(text)
生成されたテキストを使用してオーディオを生成することができます:
params_infer_code = {'spk_emb' : rand_spk, 'temperature':.3}
wav = chat.infer(text, params_infer_code=params_infer_code)
ChatTTS Web UIの使用
ChatTTSには、オーディオを生成するためのウェブベースのユーザーインターフェイスも提供されています。次のwebui.py
スクリプトを使用して、ウェブUIを起動することができます:
python webui.py --server_name 0.0.0.0 --server_port 8080 --local_path /path/to/local/models
ウェブUIでは、テキストを入力し、パラメータを調整して、インタラクティブにオーディオを生成することができます。
以上です!これで、PythonでChatTTSを使用するための包括的なガイドが完成しました。これらの例と手順を使用することで、ChatTTSをプロジェクトに統合し、テキスト入力から高品質な音声を生成することができます。さらに高度な機能を探求し、さまざまなパラメータを試して生成されるオーディオをカスタマイズしてください。
結論
ChatTTSは、対話型AIにリアリティをもたらす画期的なテキスト読み上げモデルです。複数の言語の処理、細かい抑揚制御の可能性、および複数のスピーカーのサポートを備えたことで、開発者や研究者にとって強力なツールとして注目されています。提供されたインストールおよび使用方法のガイドに従うことで、自分のプロジェクトでChatTTSを活用し、このエキサイティングな技術の進展に貢献することができます。