ChatTTS: このテキスト読み上げツールを使ってLLMと話す

ChatTTSはChatGPTの力を高度なテキスト音声変換とシームレスに組み合わせてます - ここをクリックして詳細を学んでください!

Anakin AIを無料で利用開始

ChatTTS: このテキスト読み上げツールを使ってLLMと話す

Start for free
目次

ChatTTSは、対話シナリオに特化した高度なテキスト読み上げ(TTS)モデルです。2Noiseのチームによって開発されたこのモデルは、自然で表現豊かな音声合成を提供し、仮想アシスタント、インタラクティブな音声応答システムなどのアプリケーションに最適です。この記事では、ChatTTSの概要、動作方法、インストールと使用方法について詳しく説明します。

💡
AIの最新トレンドに興味がありますか?

それなら、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
Anakin AI: AIタスクを簡単に自動化

ChatTTSとは?

ChatTTSは、対話型のタスクに最適化された生成的音声モデルです。一般的なTTSシステムとは異なり、音声がロボットっぽく聞こえず、人間の音声の微妙な要素を伝える能力に優れています。英語と中国語の両方をサポートしており、10万時間以上のデータでトレーニングされています。HuggingFaceで利用可能なオープンソース版は、4万時間のデータでトレーニングされています。

ChatTTSの主な特徴

  1. 対話型TTS:複数のスピーカーをサポートし、自然で表現豊かな音声合成を可能にする、対話型のタスクに最適化された機能。
  2. 細かい制御:笑い声、一時停止、間投詞などの細かい抑揚特徴を予測・制御する能力。
  3. 改善された朗読法:プロソディにおいてほとんどのオープンソースの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を活用し、このエキサイティングな技術の進展に貢献することができます。