<>2024年7月5日:最新AR檢查點發布:輸出穩定性更高。非常大的更新即將推出!
這是 CAMB.AI 的 MARS5 英語語音模型 (TTS) 的儲存庫。
該模型遵循兩級 AR-NAR 管道,具有獨特新穎的 NAR 組件(請參閱架構中的更多資訊)。
只需 5 秒的音訊和一段文本,MARS5 就可以產生語音,即使是體育評論、動漫等韻律困難且多樣化的場景。看看我們的示範:
在這裡觀看完整影片:
圖:MARS5的高層架構流程。給定文字和參考音頻,透過自回歸變壓器模型獲得粗略 (L0) 編碼器語音特徵。然後,在多項 DDPM 模型中對文字、參考和粗略特徵進行細化,以產生剩餘的編碼器碼本值。然後對 DDPM 的輸出進行聲碼處理以產生最終的音訊。
由於該模型是在原始音訊和位元組對編碼文字上進行訓練的,因此可以透過標點符號和大寫等內容進行控制。例如,若要新增停頓,請在記錄中的該部分新增逗號。或者,為了強調某個單詞,請將其在記錄中以大寫字母表示。這提供了一種相當自然的方式來指導產生的輸出的節奏。
使用 2-12 秒之間的音訊參考檔案指定說話者身份,長度約為 6 秒可提供最佳結果。此外,透過提供參考的轉錄本,MARS5 使人們能夠進行“深度克隆”,從而提高克隆和輸出的質量,但代價是生成音訊的時間要長一些。有關此以及其他性能和模型詳細信息的更多詳細信息,請參閱文檔資料夾。
我們使用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.
(可選)從 Huggingface 載入模型(確保儲存庫已複製)
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 ( '<path to arbitrary 24kHz waveform>.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = "<transcript of the reference audio>"
注意:參考成績單是可選的。如果您想進行深度克隆,請通過它。
MARS5 支援兩種推理:一種淺層快速推理,您不需要參考的轉錄本(我們稱之為淺克隆),另一種較慢但通常質量更高的方式,我們稱之為深度克隆。要使用深度克隆,您需要提示腳本。有關詳細信息,請參閱模型架構。
# 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 儲存庫的發布標籤下提供。我們提供兩個檢查點:
'vocab'
鍵下的每個檢查點中,並遵循與已儲存的 minbpe 標記器大致相同的格式。檢查點以 pytorch .pt
檢查點和 safetensors .safetensors
檢查點的形式提供。預設情況下, torch.hub.load()
載入 safetensors 版本,但您可以使用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')
硬體需求:
您必須能夠在 GPU 上儲存至少 750M+450M 參數,並使用 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 <NAME-NEW-BRANCH>
我們正在 GNU AGPL 3.0 下開源 MARS5 英文版。如需商業諮詢或取得 MARS 封閉源版本的許可,請發送電子郵件至 [email protected]
我們是一支雄心勃勃的團隊,分佈在全球,唯一的目標是讓每個人的聲音發揮作用。在 CAMB.AI,我們是一個由 Interspeech 出版的卡內基美隆大學、前 Siri 工程師組成的研究團隊,我們正在尋找您加入我們的團隊。
我們正在積極招募;如果您有興趣,請發送電子郵件至 [email protected]。請造訪我們的職業頁面以了解更多資訊。
加入論壇和 Discord 上的 CAMB.AI 社區,與我們的團隊分享任何建議、回饋或問題。
該項目的部分程式碼改編自以下存儲庫 - 請務必檢查它們!感謝以下作者:
.trim()
程式碼:https://librosa.org/doc/main/ generated/librosa.effects.trim.html