<> 2024 年 7 月 5 日: 最新の AR チェックポイントがリリースされました: 出力の安定性が向上しました。非常に大きなアップデートがもうすぐ登場します!
これは、CAMB.AI の MARS5 英語音声モデル (TTS) のリポジトリです。
このモデルは、独特に斬新な NAR コンポーネントを備えた 2 段階の AR-NAR パイプラインに従います (詳細については、「アーキテクチャ」を参照してください)。
MARS5 は、わずか 5 秒の音声とテキストの断片を使用して、スポーツの解説やアニメなど、韻律的に難しく多様なシナリオでも音声を生成できます。デモをチェックしてください:
ここで完全なビデオをご覧ください:
図: MARS5 の高レベルのアーキテクチャ フロー。テキストと参照オーディオを指定すると、自己回帰変換モデルを通じて粗い (L0) エンコーデック音声特徴が取得されます。次に、テキスト、参照、および粗い特徴が多項 DDPM モデルで洗練されて、残りのエンコーデック コードブック値が生成されます。 DDPM の出力はボコードされて、最終的なオーディオが生成されます。
モデルは生のオーディオとバイトペアでエンコードされたテキストでトレーニングされるため、句読点や大文字の使用などを使用してモデルを操作できます。たとえば、一時停止を追加するには、トランスクリプト内のその部分にカンマを追加します。または、単語を強調するには、トランスクリプト内でその単語を大文字で入力します。これにより、生成された出力の韻律を導くためのかなり自然な方法が可能になります。
話者のアイデンティティは、2 ~ 12 秒の間のオーディオ リファレンス ファイルを使用して指定され、長さは約 6 秒で最適な結果が得られます。さらに、MARS5 では、リファレンスのトランスクリプトを提供することで、オーディオの生成に少し時間がかかる代わりに、クローン作成と出力の品質を向上させる「ディープ クローン」を実行できるようになります。この機能やその他のパフォーマンスとモデルの詳細については、docs フォルダーを参照してください。
torch.hub
使用してモデルのロードを簡単にします。リポジトリのクローンを作成する必要はありません。推論を実行する手順は簡単です。
pip を使用したインストール:
要件:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(オプション) ハグフェイスからモデルをロードします (リポジトリがクローンされていることを確認してください)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = ""
注: 参照トランスクリプトはオプションです。ディープ クローンを作成したい場合はこれを渡します。
MARS5 は 2 種類の推論をサポートしています。1 つは参照のトランスクリプトを必要としない浅くて高速な推論 (これを「浅いクローン」と呼びます)、もう 1 つは遅いですが通常は高品質の方法で、「ディープ クローン」と呼ばれます。ディープ クローンを使用するには、プロンプト トランスクリプトが必要です。詳細については、モデル アーキテクチャを参照してください。
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
それでおしまい!これらのデフォルト設定ではかなり良好な結果が得られますが、推論設定を自由に調整して、特定のユースケースに合わせて出力を最適化してください。すべてのさまざまな推論設定に関する情報とドキュメントについては、 InferenceConfig
コードまたはデモ ノートブックを参照してください。
最高の品質を実現するためのヒント:
DockerHub からプルする
DockerHub ページから Docker イメージを直接プルできます。
自分で構築する
次のコマンドを実行して、このリポジトリに提供されている Dockerfile からカスタム イメージを構築できます。
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
注: このイメージは、Dockerfile または docker-compose でカスタム推論スクリプトを追加できるベース イメージとして使用する必要があります。出力を直接生成するイメージは、間もなく Docker Hub に追加され、このリポジトリの Dockerfile として追加されます。
チェックポイント
MARS5 のチェックポイントは、この github リポジトリのリリース タブに提供されています。次の 2 つのチェックポイントを提供します。
'vocab'
キーの下の各チェックポイントに埋め込まれており、保存された minbpe トークナイザーとほぼ同じ形式に従います。チェックポイントは、pytorch .pt
チェックポイントと、safetensors .safetensors
チェックポイントの両方として提供されます。デフォルトでは、 torch.hub.load()
セーフテンソルのバージョンをロードしますが、 torch.hub.load()
呼び出しのckpt_format='safetensors'
またはckpt_format='pt'
引数を使用して、どのバージョンのチェックポイントを優先するかを指定できます。 。たとえば、セーフテンサーのフォーマットを強制するには:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
または、チェックポイントをロードするときに pytorch .pt
形式を強制するには:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
ハードウェア要件:
少なくとも 750M+450M のパラメータを GPU に保存し、750M のアクティブなパラメータを使用して推論を実行できる必要があります。
必要なハードウェア要件がなく、アプリケーションで MARS5 を使用したいだけの場合は、API 経由で使用できます。ユースケースに合わせてテストするために追加のクレジットが必要な場合は、お気軽に[email protected]
までお問い合わせください。
MARS5 は現時点では完璧ではなく、品質、安定性、パフォーマンスの向上に取り組んでいます。私たちが改善を目指している大まかな分野は次のとおりです。以下の分野での貢献を歓迎します。
特定のタスク
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
。 MARS5 の改善に貢献したい場合は、お気軽に貢献してください (ガイドラインは以下を参照)。
モデルの改善への貢献を歓迎します。実験するとわかるように、非常に優れた結果が得られ、優れた出力を一貫して作成するためにさらに改良することができます。また、さまざまなシナリオで MARS5 をどのように使用したかを知りたいと思っています。? を使用してください。ディスカッションのカテゴリを表示して伝えて、例を共有してください。
投稿形式:
リポジトリに貢献するための推奨される方法は、GitHub 上のマスター リポジトリをフォークすることです。
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin
私たちは、MARS5 を GNU AGPL 3.0 の下で英語でオープンソース化しています。商業的なお問い合わせまたは MARS のクローズド ソース バージョンのライセンスについては、[email protected] まで電子メールを送信してください。
私たちは世界中に拠点を置く野心的なチームであり、すべての人の声を大切にするという唯一の目標を持っています。 CAMB.AI では、Interspeech で出版されているカーネギーメロン大学の元 Siri エンジニアからなる研究チームであり、私たちのチームに参加していただける方を探しています。
私たちは積極的に採用を行っています。ご興味がございましたら、[email protected] までメールをお送りください。詳細については、採用ページをご覧ください。
フォーラムや Discord の CAMB.AI コミュニティに参加して、提案、フィードバック、質問をチームと共有してください。
このプロジェクトのコードの一部は次のリポジトリから転用されています。ぜひチェックしてください。以下の著者に感謝します。
.trim()
コード: https://librosa.org/doc/main/generated/librosa.Effects.trim.html