Closed12

「Chatterbox-TTS」を試す

kun432kun432

GItHubレポジトリ

https://github.com/resemble-ai/chatterbox

Chatterbox TTS

私たちは、Chatterbox をご紹介できることを大変嬉しく思います。これは Resemble AI による初の本格的なプロダクション向けオープンソース TTS モデルです。MIT ライセンスで提供されており、Chatterbox は ElevenLabs などの主要なクローズドソースシステムと比較評価され、並列評価でも一貫して高い評価を受けています。

ミーム、動画、ゲーム、AI エージェントなど、どのようなコンテンツ制作でも、Chatterbox があなたの作品に命を吹き込みます。また、感情の誇張コントロールをサポートする初のオープンソース TTS モデルでもあり、これにより音声表現が際立ちます。今すぐ Hugging Face Gradio アプリ でお試しください。

モデルが気に入ったものの、より高精度なスケールアップやチューニングが必要な場合は、競争力のある価格で提供される TTS サービス(リンク)もご利用いただけます。このサービスは、エージェント、アプリケーション、インタラクティブメディアでの本番利用に理想的な、200ms 未満の超低レイテンシで信頼性の高いパフォーマンスを実現します。

主な特徴

  • 最先端のゼロショット TTS
  • 0.5B Llama バックボーン
  • 独自の誇張/強調コントロール
  • アライメント情報に基づく推論による超高安定性
  • 50万時間分のクリーニング済みデータで学習
  • 出力にウォーターマーク付与
  • 簡単に使えるボイスコンバージョンスクリプト
  • ElevenLabs を凌駕する性能

ヒント

  • 一般利用(TTS・ボイスエージェント):
    • デフォルト設定(exaggeration=0.5, cfg_weight=0.5)はほとんどのプロンプトで良好に動作します。
    • 参照スピーカーが速い話し方の場合、cfg_weight を約 0.3 に下げると話速が改善されることがあります。
  • 表現力豊かな音声や劇的なスピーチ:
    • より低い cfg_weight 値(例: ~0.3)を試し、exaggeration を約 0.7 以上に上げてみてください。
    • exaggeration を高くすると発話速度が上がる傾向があるため、cfg_weight を下げることで、よりゆっくりとした丁寧な発話に調整できます。

責任ある AI のための組み込み PerTh ウォーターマーキング

Chatterbox で生成されるすべての音声ファイルには、Resemble AI の Perth (Perceptual Threshold) Watermarker が埋め込まれています。これは、人間には知覚できないニューラルウォーターマークであり、MP3 圧縮、音声編集、一般的な加工にも耐性を持ち、ほぼ 100% の検出精度を維持します。

免責事項

このモデルを不正な目的で使用しないでください。プロンプトはインターネット上で自由に利用可能なデータから収集されています。

誇張/強調コントロールってのが特徴なのかな。

公式のサンプルはこちら

https://resemble-ai.github.io/chatterbox_demopage/

HuggingFaceのデモはこちら

https://huggingface.co/spaces/ResembleAI/Chatterbox

上に記載がある通りAPIサービスもある。なかなか高速を謳っている。

https://www.resemble.ai/

kun432kun432
kun432kun432

Colaboratory T4で。

パッケージインストール

!pip install chatterbox-tts
!pip freeze | grep -i chatterbox
出力
chatterbox-tts==0.1.1

このまま進めるとモデルロード時にエラーになる。おそらく上のパッケージインストールでいくつかの依存パッケージも更新されているがランタイムに読み込まれないため。一旦ここでランタイムを再起動しておく。

ではモデルロード

import torchaudio as ta
from chatterbox.tts import ChatterboxTTS

model = ChatterboxTTS.from_pretrained(device="cuda")

この時点でのVRAM消費は4.2GB程度。

出力
Thu May 29 15:16:01 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Tesla T4                       Off |   00000000:00:04.0 Off |                    0 |
| N/A   47C    P0             28W /   70W |    4228MiB /  15360MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

ちなみにRAMも少し上がっている。

では推論。モデルロード後初回の推論だけ10秒程度かかるが、2回目以降は5秒程度と速くなる。

text = "Good morning. It's a beautiful day today. On days like this, I feel like going to the horse races."
wav = model.generate(text)
ta.save("chatterbox-tts-sample1.wav", wav, model.sr)

Colaboratory上で直接聞くには以下

from IPython.display import Audio

Audio("chatterbox-tts-sample1.wav", autoplay=True)

実際に生成されたもの

https://audio.com/kun432/audio/chatterbox-tts-sample1

ヒントにもあるが、誇張した表現にすることができる。generate()メソッドはデフォルトだと以下のパラメータとなっている。

  • exaggeration: 0.5
  • cfg_weight: 0.5
  • temperature: 0.8

このうち、exaggeration が誇張表現の設定で高くすればするほど誇張した表現になる。ヒントには0.7以上とある。exaggeration を上げると発話スピードが速くなりがちになるので、cfg_weight0.3 以下に下げるのが推奨みたい。後で試すけど、リファレンスを音声を使った音声クローンの場合、そのリファレンスの発話スピードが速ければ生成される音声も速くなるので、cfg_weight0.3 程度に下げろとある。つまり cfg_weight は発話速度に影響するパラメータと思われる。

exaggerationを極端に上げてみた。

text = "Good morning. It's a beautiful day today. On days like this, I feel like going to the horse races."
wav = model.generate(text, exaggeration=2.0, cfg_weight=0.3)
ta.save("chatterbox-tts-sample2.wav", wav, model.sr)

Audio("chatterbox-tts-sample2.wav", autoplay=True)

実際に生成されたもの。若干最後おかしくなるぐらい叫んでる。

https://audio.com/kun432/audio/chatterbox-tts-sample2

音声クローンは以下のようにリファレンス音声を渡せば良い。

AUDIO_PROMPT_PATH="my_voice.wav"
wav = model.generate(text, audio_prompt_path=AUDIO_PROMPT_PATH)
ta.save("chatterbox-tts-sample3.wav", wav, model.sr)

自分の声で試してみたけど、日本語のリファレンス音声でも英語できれいに発話していた。

kun432kun432

レポジトリにはGradioのスクリプトもあるようなので、HuggingFace Spaceと同じものをローカルで動かせるのだろうと思う。

kun432kun432

まとめ

軽量で生成もまあまあ速い方だと思う。誇張表現ってのは少し変わってて面白い。

kun432kun432

もうこんなものがある

https://github.com/devnen/Chatterbox-TTS-Server

Dockerで試してみた。

git clone https://github.com/devnen/chatterbox-tts-server.git
cd chatterbox-tts-server

自分の環境はCUDA-12.4なので、Dockerfileの1行目を少し修正

https://github.com/devnen/Chatterbox-TTS-Server/blob/b343328338376c911779dcba626134f2e0fc4119/Dockerfile#L1

Dockerfile
FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04
(snip)

あと、docker-composeの以下の箇所、レガシーな方じゃないと自分の環境では動かなかった。

https://github.com/devnen/Chatterbox-TTS-Server/blob/b343328338376c911779dcba626134f2e0fc4119/docker-compose.yml#L20-L38

docker-compose.yml
(snip)
    #devices:
    #  - nvidia.com/gpu=all
    #device_cgroup_rules:
    #  - "c 195:* rmw"
    #  - "c 236:* rmw"

    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
(snip)

ビルドして起動。そこそこ時間がかかる。

docker compose up --build

起動したらブラウザで8004番ポートにアクセスするとこんな画面。

デフォルトの例文はこんな感じ。

Are you tired of slow, unreliable connections? Upgrade today to Quantum Fiber, the fastest internet in the galaxy! Experience seamless streaming, lag-free gaming, and instant downloads. Call now and get your first three months half price! Don't wait, this offer won't last forever!

デフォルトでとりあえず精製してみると、初回だけ遅いけど、2回目以降は4秒程度で生成してくれる。

文単位で最小ににしてみた。

Are you tired of slow, unreliable connections?

これで1.5秒ぐらい。自分が試した中ではIndex TTSが一番早かったけど、それと同等レベルで十分速い方だと思う。

あとなんとなくだけど、以下はコメントアウトしたほうがいいと思う。いかが有効だと起動時にモデル取得に失敗することが多い気がする。(モデルをローカルにキャッシュしていないのかもしれない)

https://github.com/devnen/Dia-TTS-Server/blob/main/docker-compose.yml#L44

VRAM的にはこんな感じ

出力
Mon Jun  2 19:59:37 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.35.05              Driver Version: 560.35.05      CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4090        Off |   00000000:01:00.0 Off |                  Off |
|  0%   53C    P0             49W /  450W |    5071MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

kun432kun432

マルチリンガルに対応した様子。日本語も含まれている。

https://x.com/resembleai/status/1963628736810512826

Chatterbox Multilingualのご紹介 🌎

23言語。1つのモデル。オープンソース。

@github、@huggingface、http://resemble.aiで公開中

さあ、詳しく見ていきましょう 🧵

https://x.com/resembleai/status/1963628739138654630

多言語サポートは、コミュニティからの要望の中で断トツで最多でした。そして私たちは23言語でそれを実現しました!

アラビア語 (ar) • デンマーク語 (da) • ドイツ語 (de) • ギリシャ語 (el) • 英語 (en) • スペイン語 (es) • フィンランド語 (fi) • フランス語 (fr) • ヘブライ語 (he) • ヒンディー語 (hi) • イタリア語 (it) • 日本語 (ja) • 韓国語 (ko) • マレー語 (ms) • オランダ語 (nl) • ノルウェー語 (no) • ポーランド語 (pl) • ポルトガル語 (pt) • ロシア語 (ru) • スウェーデン語 (sv) • スワヒリ語 (sw) • トルコ語 (tr) • 中国語 (zh)

** ビデオは優れた Wan Video モデルによって制作されています。デモンストレーションのみです。

https://x.com/resembleai/status/1963628740669587768

私たちは簡単に始めれるようにしました!

警告:これで何時間も遊んでしまうかもしれません 😅

@huggingfaceで試してみてください 👉

https://x.com/resembleai/status/1963628742322131244

それを使って構築したいですか?
@github ですべてあなたのものです

pip install chatterbox-tts

MIT ライセンス。フォークして。改善して。出荷して。

https://x.com/resembleai/status/1963628743986921678

もっと速く、高品質にしたいですか?Chatterbox Proをご紹介します:

  • あなたのデータセットでのファインチューニング
  • 99%の声の類似性
  • <200ms 最初の音声までの時間

詳細はこちら → https://t.co/mVQdYmRRPp

kun432kun432

Chatterbox Multilingual を試す

ということでマルチリンガル対応したものを試す。モデルは以前のものと同じレポジトリになっているが、Quickstartが少し変更されている様子。

https://huggingface.co/ResembleAI/chatterbox

インストールは以前と同様にパッケージが用意されているのだが、以下のIssueにあるとおり、現状はパッケージの依存関係が上手く解決できず、インストールが上手くいかない事が多い様子。

https://github.com/resemble-ai/chatterbox/issues/231

https://github.com/resemble-ai/chatterbox/issues/240

https://github.com/resemble-ai/chatterbox/issues/252

https://github.com/resemble-ai/chatterbox/issues/231

ざっと見た感じ、とりあえずPython-3.11が想定されている環境の様子。前回はColaboratoryで試したのだけど、現在のColaboratoryはPython-3.12になっているため、今回はローカルのUbuntu-22.04サーバ(RTX4090)で Python-3.11環境を作って、かつ、レポジトリをクローンしてインストールすることする。

なお、以下はIssueを参考に諸々試行錯誤した結果、自分の環境では動作した手順。

レポジトリクローン

git clone https://github.com/resemble-ai/chatterbox chatterbox-work && cd $_

uvでPython-3.11の仮想環境を作成。--seed で pip、setuptools、wheel をインストールしてくれる。

 uv venv -p 3.11 --seed
出力
Using CPython 3.11.13
Creating virtual environment with seed packages at: .venv
 + pip==25.2
 + setuptools==80.9.0
 + wheel==0.45.1
Activate with: source .venv/bin/activate

このあともuvを使いたいのだけど、どうしても上手くいかなかったのでアクティベートして仮想環境に入る。

source .venv/bin/activate

最初に numpy と pkuseg をインストール。

pip install "numpy>=1.24,<1.26"
pip install "pkuseg==0.0.25" --no-build-isolation 

残りの依存関係含めてインストール

pip install -e .
出力
Successfully installed (snip) chatterbox-tts-0.1.4 (snip)

ではQuickstartにあるマルチリンガルのコードを実行してみる(ちなみにサンプルコードにはtypoがある)。日本語も追加した。

sample_multilingual_tts.py
import torchaudio as ta
from chatterbox.mtl_tts import ChatterboxMultilingualTTS

multilingual_model = ChatterboxMultilingualTTS.from_pretrained(device="cuda")

french_text = "Bonjour, comment ça va? Ceci est le modèle de synthèse vocale multilingue Chatterbox, il prend en charge 23 langues."
wav_french = multilingual_model.generate(french_text, language_id="fr")
ta.save("test-french.wav", wav_french, multilingual_model.sr)

chinese_text = "你好,今天天气真不错,希望你有一个愉快的周末。"
wav_chinese = multilingual_model.generate(chinese_text, language_id="zh")
ta.save("test-chinese.wav", wav_chinese, multilingual_model.sr)

japanese_text = "こんにちは、今日は本当にいい天気ですね。楽しい週末をお過ごしください。"
wav_japanese = multilingual_model.generate(japanese_text, language_id="ja")
ta.save("test-japanese.wav", wav_japanese, multilingual_model.sr)

実行

python sample_multilingual_tts.py

以下の3ファイルが作成された

出力
-rw-rw-r-- 1 kun432 kun432 211278  9月 10 19:49 test-japanese.wav
-rw-rw-r-- 1 kun432 kun432 986958  9月 10 19:49 test-chinese.wav
-rw-rw-r-- 1 kun432 kun432 284238  9月 10 19:49 test-french.wav

生成されたものはこんな感じ

https://audio.com/kun432/audio/chatterbox-multilingual-sample-fr-01

https://audio.com/kun432/audio/chatterbox-multilingual-sample-zh-01

https://audio.com/kun432/audio/chatterbox-multilingual-sample-ja-01

なんか読み間違いもあるし、最後に意味不明なものが出力されているけども。

音声プロンプトを使ったクローンはこんな感じ。

import torchaudio as ta
from chatterbox.mtl_tts import ChatterboxMultilingualTTS

multilingual_model = ChatterboxMultilingualTTS.from_pretrained(device="cuda")

# 音声プロンプトのパス
audio_prompt_path = "my_voice.wav"

french_text = "Bonjour, comment ça va? Ceci est le modèle de synthèse vocale multilingue Chatterbox, il prend en charge 23 langues."
wav_french = multilingual_model.generate(
    french_text,
    audio_prompt_path=audio_prompt_path,
    language_id="fr"
)
ta.save("test-clone-french.wav", wav_french, multilingual_model.sr)

chinese_text = "你好,今天天气真不错,希望你有一个愉快的周末。"
wav_chinese = multilingual_model.generate(
    chinese_text,
    audio_prompt_path=audio_prompt_path,
    language_id="zh"
)
ta.save("test-clone-chinese.wav", wav_chinese, multilingual_model.sr)

japanese_text = "こんにちは、今日は本当にいい天気ですね。楽しい週末をお過ごしください。"
wav_japanese = multilingual_model.generate(
    japanese_text,
    audio_prompt_path=audio_prompt_path,
    language_id="ja"
)
ta.save("test-clone-japanese.wav", wav_japanese, multilingual_model.sr)

実際の生成物は公開しないけども、自分の声で指定されたテキストを各言語ごとに発話していた。ただまあそこまで品質が良いか?というと微妙かな。1つ前にも書いたけど、語尾や中間部分に意味不明な音声や雑音が含まれることがある。

公式のHuggingFace Spaceのデモと同じものは multilingual_app.py として用意されている。

GRADIO_SERVER_NAME=0.0.0.0 python multilingual_app.py

kun432kun432

マルチリンガルのまとめ

以前は英語のみだったが、マルチリンガルで日本語サポートされているのは素直に嬉しい。ただ、英語だけのときには感じなかったけど、英語以外の発話精度はちょっと物足りない感じかな。生成速度は結構速いほうだし、クローンもできるのはいいんだけども。引き続き期待かな。

ところで日本語の発話は pykakasi でひらがな・カタカナにしてるように見える。とてもシンプルな処理しかやってないように見えるので、ここをいじれば多少発話精度はあがるのではなかろうか?という気がした。

kun432kun432

トレーニングのコードについては公開されることはなさそう。ファインチューニングについても基本的にはResemble.ai のサービスで、というところ。

https://github.com/resemble-ai/chatterbox/issues/45#issuecomment-2923044742

ただ、以下あたりを見ると、マルチリンガル対応前だけど、独自でファインチューニングした人はいる様子。

https://github.com/resemble-ai/chatterbox/issues/32

https://github.com/resemble-ai/chatterbox/issues/45

このスクラップは3ヶ月前にクローズされました