<> 5 Juli 2024: Pos pemeriksaan AR terbaru dirilis: stabilitas keluaran lebih tinggi. Pembaruan yang sangat besar segera hadir!
Ini adalah repo untuk model pidato bahasa Inggris (TTS) MARS5 dari CAMB.AI.
Model ini mengikuti alur AR-NAR dua tahap dengan komponen NAR baru yang khas (lihat info selengkapnya di Arsitektur).
Hanya dengan audio berdurasi 5 detik dan cuplikan teks, MARS5 dapat menghasilkan ucapan bahkan untuk skenario yang sangat sulit dan beragam seperti komentar olahraga, anime, dan banyak lagi. Lihat demo kami:
Tonton video selengkapnya di sini:
Gambar : Aliran arsitektur tingkat tinggi MARS5. Dengan adanya teks dan audio referensi, fitur ucapan encodec kasar (L0) diperoleh melalui model transformator autoregresif. Kemudian, teks, referensi, dan fitur kasar disempurnakan dalam model DDPM multinomial untuk menghasilkan nilai buku kode encodec yang tersisa. Output dari DDPM kemudian divokodekan untuk menghasilkan audio akhir.
Karena model dilatih pada audio mentah bersama dengan teks yang dikodekan pasangan byte, model dapat dikendalikan dengan hal-hal seperti tanda baca dan huruf besar. Misalnya Untuk menambahkan jeda, tambahkan koma pada bagian tersebut di transkrip. Atau, untuk menekankan suatu kata, tuliskan dalam huruf kapital di transkrip. Hal ini memungkinkan cara yang cukup alami untuk memandu prosodi keluaran yang dihasilkan.
Identitas pembicara ditentukan menggunakan file referensi audio antara 2-12 detik, dengan durasi sekitar 6 detik memberikan hasil yang optimal. Lebih lanjut, dengan menyediakan transkrip referensi, MARS5 memungkinkan seseorang melakukan ' klon mendalam ' yang meningkatkan kualitas kloning dan keluaran, dengan mengorbankan waktu yang lebih lama untuk menghasilkan audio. Untuk detail lebih lanjut tentang ini dan detail performa serta model lainnya, silakan lihat folder docs.
Kami menggunakan torch.hub
untuk memudahkan pemuatan model -- tidak perlu mengkloning repo. Langkah-langkah untuk melakukan inferensi sederhana:
Instalasi menggunakan pip :
Persyaratan:
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.
(Opsional) Muat Model dari huggingface (pastikan repositori dikloning)
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>"
Catatan: Transkrip referensi bersifat opsional. Lewati jika Anda ingin melakukan kloning mendalam.
MARS5 mendukung 2 jenis inferensi: inferensi yang dangkal dan cepat sehingga Anda tidak memerlukan transkrip referensi (kami menyebutnya klon dangkal ), dan cara kedua yang lebih lambat, namun biasanya berkualitas lebih tinggi, yang kami sebut dengan deep clone . Untuk menggunakan kloning dalam, Anda memerlukan transkrip cepat. Lihat arsitektur model untuk informasi lebih lanjut tentang ini.
# 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.
Itu saja! Pengaturan default ini memberikan hasil yang cukup bagus, namun silakan sesuaikan pengaturan inferensi untuk mengoptimalkan output untuk kasus penggunaan khusus Anda. Lihat kode InferenceConfig
atau buku catatan demo untuk info dan dokumen tentang semua pengaturan inferensi yang berbeda.
Beberapa tip untuk kualitas terbaik:
Tarik dari DockerHub
Anda dapat langsung menarik image buruh pelabuhan dari halaman DockerHub kami.
Bangun Sendiri
Anda dapat membuat image khusus dari Dockerfile yang disediakan di repo ini dengan menjalankan perintah berikut.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
Catatan: Gambar ini harus digunakan sebagai gambar dasar yang di atasnya Anda dapat menambahkan skrip inferensi khusus di Dockerfile atau docker-compose. Gambar yang menghasilkan keluaran secara langsung akan segera ditambahkan ke Docker Hub dan sebagai Dockerfiles di repo ini
Pos pemeriksaan
Pos pemeriksaan untuk MARS5 disediakan di bawah tab rilis repo github ini. Kami menyediakan dua pos pemeriksaan:
'vocab'
, dan mengikuti format yang kira-kira sama dengan tokenizer minbpe yang disimpan. Pos pemeriksaan disediakan sebagai pos pemeriksaan pytorch .pt
dan pos pemeriksaan safetensors .safetensors
. Secara default, torch.hub.load()
memuat versi safetensors, tetapi Anda dapat menentukan versi checkpoint mana yang Anda sukai dengan argumen ckpt_format='safetensors'
atau ckpt_format='pt'
di panggilan in torch.hub.load()
. Misalnya untuk memaksa format safetensor:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
Atau untuk memaksa format pytorch .pt
saat memuat pos pemeriksaan:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
Persyaratan Perangkat Keras :
Anda harus dapat menyimpan setidaknya 750 juta+450 juta parameter pada GPU, dan melakukan inferensi dengan 750 juta parameter aktif.
Jika Anda tidak memiliki persyaratan perangkat keras yang diperlukan dan hanya ingin menggunakan MARS5 dalam aplikasi Anda, Anda dapat menggunakannya melalui API kami. Jika Anda memerlukan kredit tambahan untuk mengujinya pada kasus penggunaan Anda, jangan ragu untuk menghubungi [email protected]
.
MARS5 saat ini belum sempurna, dan kami berupaya meningkatkan kualitas, stabilitas, dan kinerjanya. Area kasar yang ingin kami tingkatkan, dan menyambut baik kontribusi apa pun dalam:
Tugas khusus
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
. Jika Anda ingin memberikan kontribusi perbaikan apa pun pada MARS5, silakan berkontribusi (panduan di bawah).
Kami menyambut baik kontribusi apa pun untuk menyempurnakan model ini. Seperti yang mungkin Anda temukan ketika bereksperimen, ini dapat memberikan hasil yang sangat bagus, masih dapat ditingkatkan lebih lanjut untuk menghasilkan keluaran yang sangat baik secara konsisten . Kami juga ingin melihat bagaimana Anda menggunakan MARS5 dalam skenario yang berbeda, silakan gunakan ? Tunjukkan dan beri tahu kategori dalam Diskusi untuk membagikan contoh Anda.
Format kontribusi :
Cara yang lebih disukai untuk berkontribusi pada repo kami adalah dengan melakukan fork pada repositori master di GitHub:
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin <NAME-NEW-BRANCH>
Kami melakukan open source MARS5 dalam bahasa Inggris di bawah GNU AGPL 3.0. Untuk pertanyaan komersial atau untuk melisensikan MARS versi sumber tertutup, silakan kirim email ke [email protected]
Kami adalah tim yang ambisius, tersebar secara global, dengan tujuan tunggal untuk membuat suara semua orang berarti. Di CAMB.AI, kami adalah tim peneliti yang terdiri dari Carnegie Mellon yang diterbitkan Interspeech, mantan insinyur Siri dan kami sedang mencari Anda untuk bergabung dengan tim kami.
Kami secara aktif merekrut; silakan kirim email kepada kami di [email protected] jika Anda tertarik. Kunjungi halaman karir kami untuk info lebih lanjut.
Bergabunglah dengan komunitas CAMB.AI di Forum dan Discord untuk berbagi saran, masukan, atau pertanyaan dengan tim kami.
Sebagian kode untuk proyek ini diadaptasi dari repositori berikut -- pastikan untuk memeriksanya! Terima kasih kepada penulis:
.trim()
nya: https://librosa.org/doc/main/generated/librosa.effects.trim.html