Model pidato generatif untuk dialog sehari-hari.
Bahasa Inggris |简体中文|日本語| Русский | Spanyol | Perancis | 한국어
Catatan
Repo ini berisi infrastruktur algoritma dan beberapa contoh sederhana.
Tip
Untuk produk pengguna akhir yang diperluas, silakan merujuk ke repo indeks Awesome-ChatTTS yang dikelola oleh komunitas.
ChatTTS adalah model text-to-speech yang dirancang khusus untuk skenario dialog seperti asisten LLM.
Bahasa inggris
Cina
Segera hadir...
Anda dapat merujuk ke video ini di Bilibili untuk penjelasan detailnya.
TTS Percakapan : ChatTTS dioptimalkan untuk tugas berbasis dialog, memungkinkan sintesis ucapan yang alami dan ekspresif. Mendukung banyak pembicara, memfasilitasi percakapan interaktif.
Kontrol Terperinci : Model dapat memprediksi dan mengontrol fitur prosodik terperinci, termasuk tawa, jeda, dan kata seru.
Prosodi Lebih Baik : ChatTTS melampaui sebagian besar model TTS sumber terbuka dalam hal prosodi. Kami menyediakan model terlatih untuk mendukung penelitian dan pengembangan lebih lanjut.
Penting
Model yang dirilis hanya untuk tujuan akademis.
Model utama dilatih dengan data audio berbahasa Mandarin dan Inggris berdurasi lebih dari 100.000 jam.
Versi sumber terbuka di HuggingFace adalah model terlatih 40.000 jam tanpa SFT.
Open-source model basis 40k-jam dan file spk_stats.
Streaming generasi audio.
Encoder DVAE sumber terbuka dan kode kesimpulan zero shot.
Pengendalian multi-emosi.
ChatTTS.cpp (repo baru di 2noise
org diterima)
Kode ini diterbitkan di bawah lisensi AGPLv3+
.
Model ini diterbitkan di bawah lisensi CC BY-NC 4.0
. Hal ini dimaksudkan untuk penggunaan pendidikan dan penelitian, dan tidak boleh digunakan untuk tujuan komersial atau ilegal. Penulis tidak menjamin keakuratan, kelengkapan, atau keandalan informasi. Informasi dan data yang digunakan dalam repo ini, adalah untuk tujuan akademis dan penelitian saja. Data diperoleh dari sumber yang tersedia untuk umum, dan penulis tidak mengklaim kepemilikan atau hak cipta apa pun atas data tersebut.
ChatTTS adalah sistem text-to-speech yang kuat. Namun, sangat penting untuk memanfaatkan teknologi ini secara bertanggung jawab dan etis. Untuk membatasi penggunaan ChatTTS, kami menambahkan sedikit kebisingan frekuensi tinggi selama pelatihan model 40.000 jam, dan mengompresi kualitas audio sebanyak mungkin menggunakan format MP3, untuk mencegah pelaku jahat berpotensi menggunakannya untuk tindakan kriminal. tujuan. Pada saat yang sama, kami telah melatih model deteksi secara internal dan berencana menjadikannya sebagai sumber terbuka di masa mendatang.
Masalah/PR GitHub selalu diterima.
Untuk pertanyaan formal tentang model dan peta jalan, silakan hubungi kami di [email protected] .
Grup 1 , 808364215
Grup 2 , 230696694
Grup 3 , 933639842
Grup 4 , 608667975
Bergabunglah dengan mengklik di sini.
git clone https://github.com/2noise/ChatTTScd ObrolanTTS
instalasi pip --upgrade -r persyaratan.txt
conda buat -n obrolan python=3.11 conda aktifkan chattts instalasi pip -r persyaratan.txt
pip install safetensors vllm==0.2.7 torchaudio
Peringatan
JANGAN INSTAL! Adaptasi TransformerEngine saat ini sedang dalam pengembangan dan TIDAK BISA berjalan dengan baik saat ini. Instal hanya untuk tujuan pengembangan. Lihat lebih detail di #672 #676
Catatan
Proses instalasi sangat lambat.
pip instal git+https://github.com/NVIDIA/TransformerEngine.git@stable
Peringatan
JANGAN INSTAL! Saat ini FlashAttention-2 akan memperlambat kecepatan pembangkitan berdasarkan masalah ini. Instal hanya untuk tujuan pengembangan.
Catatan
Lihat perangkat yang didukung di Hugging Face Doc.
pip install flash-attn --no-build-isolasi
Pastikan Anda berada di bawah direktori root proyek saat Anda menjalankan perintah di bawah ini.
contoh python/web/webui.py
Ini akan menyimpan audio ke
./output_audio_n.mp3
contoh python/cmd/run.py "Teks Anda 1." "Teksmu 2."
Instal versi stabil dari PyPI
pip instal ChatTTS
Instal versi terbaru dari GitHub
pip instal git+https://github.com/2noise/ChatTTS
Instal dari direktori lokal dalam mode dev
instalasi pip -e .
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # Atur ke True untuk kinerja yang lebih baiktexts = ["TEMPATKAN TEKS pertama ANDA DI SINI", "TEMPATKAN TEKS kedua ANDA DI SINI"]wavs = chat.infer(teks )for i in range(len(wavs)):""" Di beberapa versi torchaudio, baris pertama berfungsi tetapi di versi lain, begitu pula baris kedua. """try:torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)kecuali:torchaudio.save(f" basic_output{i}.wav", obor.from_numpy(wavs[i]), 24000)
##################################### Contoh pembicara dari Gaussian.rand_spk = chat.sample_random_speaker()print (rand_spk) # simpan untuk timbre recoveryparams_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # tambahkan sampel suhu speaker = .3, # menggunakan customtemperaturtop_P = 0.7, # top P decodetop_K = 20, # top K decode)############################# ######## Untuk kontrol manual tingkat kalimat.# gunakan oral_(0-9), tertawa_(0-2), break_(0-7) # untuk menghasilkan token khusus dalam teks untuk disintesis.params_refine_text = ObrolanTTS.Obrolan.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(teks,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )##################################### Untuk kontrol manual tingkat kata.text = 'Apa itu [uv_break ]makanan inggris favoritmu?[tertawa][lbreak]'wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""Dalam beberapa versi torchaudio, baris pertama berfungsi tetapi di versi lain, begitu pula baris kedua."""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).unsqueeze(0), 24000)kecuali:torchaudio.save("word_level_output.wav", obor.from_numpy(wavs[0]), 24000)
inputs_en = """chat T T S adalah model teks ke ucapan yang dirancang untuk aplikasi dialog. [uv_break]mendukung masukan bahasa campuran [uv_break]dan menawarkan kemampuan multi-speaker dengan kontrol presisi atas elemen prosodik seperti [uv_break]tertawa[uv_break][tertawa ], [uv_break]jeda, [uv_break]dan intonasi. [uv_break]menyampaikan ucapan yang alami dan ekspresif,[uv_break]jadi harap[uv_break] gunakan proyek ini bertanggung jawab atas risiko Anda sendiri.[uv_break]""".replace('n', '') # Bahasa Inggris masih eksperimental.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_4]', )audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)torchaudio.save("self_introduction_output.wav", torch.from_numpy(audio_array_en[0]), 24000)
pembicara laki-laki | pembicara wanita |
intro_en_m.webm | intro_en_f.webm |
Untuk klip audio berdurasi 30 detik, diperlukan setidaknya 4 GB memori GPU. Untuk GPU 4090, dapat menghasilkan audio yang setara dengan sekitar 7 token semantik per detik. Faktor Real-Time (RTF) adalah sekitar 0,3.
Ini adalah masalah yang biasanya terjadi pada model autoregresif (untuk kulit kayu dan valle). Biasanya sulit untuk dihindari. Seseorang dapat mencoba beberapa sampel untuk menemukan hasil yang sesuai.
Dalam model yang dirilis saat ini, satu-satunya unit kontrol tingkat token adalah [laugh]
, [uv_break]
, dan [lbreak]
. Di versi mendatang, kami mungkin menggunakan model sumber terbuka dengan kemampuan kontrol emosi tambahan.
kulit kayu, XTTSv2 dan valle menunjukkan hasil TTS yang luar biasa dengan sistem gaya autoregresif.
fish-speech mengungkapkan kemampuan GVQ sebagai tokenizer audio untuk pemodelan LLM.
vocos yang digunakan sebagai vocoder terlatih.
laboratorium wlu-audio untuk eksperimen algoritma awal.