Terima kasih untuk memeluk wajah!
Colab Notebook
Harap dicatat bahwa ID yang berbeda dapat mendukung berbagai bahasa. Speakers
https://artrajz-vits-simple-api.hf.space/voice/vits?text=你好,こんにちは&id=164https://artrajz-vits-simple-api.hf.space/voice/vits?text=Difficult the first time, easy the second.&id=4https://artrajz-vits-simple-api.hf.space/voice/w2v2-vits?text=こんにちは&id=3&emotion=111https://artrajz-vits-simple-api.hf.space/w2v2-vits?text=こんにちは&id=3&emotion=2077Ada dua opsi penempatan untuk dipilih. Terlepas dari opsi yang Anda pilih, Anda harus mengimpor model setelah penyebaran untuk menggunakan aplikasi.
Jalankan perintah berikut untuk menarik gambar Docker. Ikuti petunjuk dalam skrip untuk memilih file yang diperlukan untuk mengunduh dan menarik gambar:
bash -c " $( wget -O- https://raw.githubusercontent.com/Artrajz/vits-simple-api/main/vits-simple-api-installer-latest.sh ) " Jalur default untuk file konfigurasi proyek dan folder model adalah /usr/local/vits-simple-api/ .
Jalankan perintah berikut untuk memulai wadah:
docker-compose up -dUntuk memperbarui gambar, jalankan perintah berikut:
docker-compose pullKemudian, restart wadah:
docker-compose up -dKloning repositori proyek menggunakan perintah berikut:
git clone https://github.com/Artrajz/vits-simple-api.gitDisarankan untuk menggunakan lingkungan virtual dengan Python Versi 3.10 untuk proyek ini. Jalankan perintah berikut untuk menginstal dependensi Python yang diperlukan untuk proyek:
Jika Anda menghadapi masalah menginstal dependensi tertentu, silakan merujuk ke masalah umum yang diuraikan di bawah ini.
pip install -r requirements.txtJalankan perintah berikut untuk memulai program:
python app.pyBuka halaman rilis dan unduh paket penyebaran terbaru. Ekstrak file yang diunduh.
Jalankan start.bat untuk meluncurkan program.
Unduh file model VITS dan letakkan di folder data/models .
Mulai dari versi 0.6.6, ini adalah perilaku default untuk secara otomatis memuat semua model di folder data/models , memudahkan pemula untuk digunakan.
Setelah startup awal, file konfigurasi config.yaml akan dihasilkan. Anda perlu mengubah tts_config.auto_load ke false untuk mengaktifkan mode pemuatan manual.
Anda dapat memodifikasi tts_config.models di config.yaml atau membuat modifikasi di panel admin di browser.
Catatan: Setelah versi 0.6.6, jalur pemuatan model telah dimodifikasi. Ikuti langkah -langkah di bawah ini untuk mengonfigurasi jalur model lagi!
Jalur dapat menjadi jalur absolut atau jalur relatif. Jika ini jalur relatif, itu dimulai dari folder data/models di direktori root proyek.
Misalnya, jika folder data/models memiliki file berikut:
├─model1
│ │─G_1000.pth
│ └─config.json
└─model2
│─G_1000.pth
└─config.json
Isi konfigurasi seperti ini di file YAML:
tts_config :
auto_load : false
models :
- config_path : model1/config.json
model_path : model1/G_1000.pth
- config_path : model2/config.json
model_path : model2/G_1000.pth
# GPT-SoVITS
- sovits_path : gpt_sovits1/model1_e8_s11536.pth
gpt_path : gpt_sovits1/model1-e15.ckpt
- sovits_path : gpt_sovits2/model2_e8_s11536.pth
gpt_path : gpt_sovits2/model2-e15.ckpt Memuat model melalui panel admin nyaman, tetapi jika Anda ingin memuat model di luar folder data/models , Anda hanya dapat melakukannya dengan memodifikasi file konfigurasi config.aml. Metode ini adalah secara langsung menyediakan jalur absolut.
Contoh jalur absolut:
tts_config :
auto_load : false
models :
- config_path : D://model3/config.json
model_path : D://model3/G_1000.pth Setelah mengunduh model Bert dan model emosi, masing -masing letakkan di data/bert dan data/emotional . Temukan nama yang sesuai dan masukkan sesuai.
Periksa versi tertinggi CUDA yang didukung oleh kartu grafis Anda:
nvidia-smi
Mengambil Cuda 11.7 sebagai contoh, unduh dari situs web resmi
https://pytorch.org/
pip install torch --index-url https://download.pytorch.org/whl/cu118
Proses pemasangannya serupa, tetapi saya tidak memiliki lingkungan untuk mengujinya.
http://127.0.0.1:23456
*Port dapat dimodifikasi di bawah pengaturan default port 23456.
Alamat default adalah http://127.0.0.1:23456/admin.
Nama pengguna dan kata sandi awal dapat ditemukan dengan mencari 'admin' di file config.yaml setelah startup pertama.
Backend admin memungkinkan model pemuatan dan pembongkaran, dan sementara itu memiliki otentikasi login, untuk keamanan tambahan, Anda dapat menonaktifkan backend admin di config.yaml :
' IS_ADMIN_ENABLED ' : !!bool 'false'Ukuran tambahan ini membantu memastikan keamanan absolut saat membuat backend admin tidak dapat diakses ke jaringan publik.
Mulai dari Bert-VITS2 V2.0, sebuah model memerlukan memuat tiga model Bert bahasa yang berbeda. Jika Anda hanya perlu menggunakan satu atau dua bahasa, Anda dapat menambahkan parameter lang di file config.json dari bagian data model. Nilai ["zh"] menunjukkan bahwa model hanya menggunakan Cina dan akan memuat model Bert Cina. Nilai ["zh", "ja"] menunjukkan penggunaan model bilingual Cina dan Jepang, dan hanya model Bert Cina dan Jepang yang akan dimuat. Demikian pula, pola ini berlanjut untuk kombinasi bahasa lainnya.
Contoh:
"data" : {
"lang" : [ " zh " , " ja " ],
"training_files" : " filelists/train.list " ,
"validation_files" : " filelists/val.list " ,
"max_wav_value" : 32768.0 ,
... Jika Anda menghadapi masalah dengan pengucapan karakter polifonik yang salah, Anda dapat mencoba menyelesaikannya menggunakan metode berikut.
Buat dan buka frase_dict.txt di direktori data untuk menambahkan kata -kata polifonik.
{
"一骑当千" : [[ "yí" ], [ "jì" ], [ "dāng" ], [ "qiān" ]],
}Temukan konfigurasi untuk GPT-Sovits di file config.yaml. Tambahkan preset di bawah bagian Preset. Beberapa preset dapat ditambahkan, dengan kunci berfungsi sebagai nama yang telah ditetapkan. Di bawah ini adalah dua preset default, default dan default2:
gpt_sovits_config:
hz: 50
is_half: false
id: 0
lang: auto
format: wav
segment_size: 50
presets:
default:
refer_wav_path: null
prompt_text: null
prompt_lang: auto
default2:
refer_wav_path: null
prompt_text: null
prompt_lang: auto
Diuji di Legado
Beberapa model dapat digunakan untuk membaca, termasuk Vits, Bert-Vits2, GPT-Sovits. Parameter dimulai dengan in konfigurasi speaker teks dalam kutipan, sedangkan parameter dimulai dengan nr mengkonfigurasi narator.
Untuk menggunakan GPT-Sovits, perlu untuk mengkonfigurasi audio referensi di bagian presets dari file config.yaml terlebih dahulu dan memodifikasi preset di URL di bawah ini.
IP dalam URL dapat ditemukan setelah API dimulai, umumnya menggunakan IP jaringan area lokal dimulai dengan 192.168.
Setelah modifikasi, pilih mesin baca, tambahkan mesin baca, tempel sumbernya, dan aktifkan mesin baca.
{
"concurrentRate" : "1" ,
"contentType" : "audio/wav" ,
"enabledCookieJar" : false ,
"header" : "" ,
"id" : 1709643305070 ,
"lastUpdateTime" : 1709821070082 ,
"loginCheckJs" : "" ,
"loginUi" : "" ,
"loginUrl" : "" ,
"name" : "vits-simple-api" ,
"url" : "http://192.168.xxx.xxx:23456/voice/reading?text={{java.encodeURI(speakText)}}&in_model_type=GPT-SOVITS&in_id=0&in_preset=default&nr_model_type=BERT-VITS2&nr_id=0&nr_preset=default&format=wav&lang=zh"
}Untuk memastikan kompatibilitas dengan model BERT-VITS2, ubah file config.json dengan menambahkan parameter versi "versi": "xxx". Misalnya, jika versi modelnya 1.0.1, file konfigurasi harus ditulis sebagai:
{
"version" : " 1.0.1 " ,
"train" : {
"log_interval" : 10 ,
"eval_interval" : 100 ,
"seed" : 52 ,
... Harap dicatat bahwa untuk versi tambahan Cina, versi harus diubah menjadi extra atau zh-clap , dan untuk versi perbaikan tambahan, versi harus 2.4 atau extra-fix .
Dapatkan http://127.0.0.1:23456/voice/speakers
Mengembalikan tabel pemetaan ID peran ke nama pembicara.
Dapatkan http://127.0.0.1:23456/voice/vits?text=Text
Nilai default digunakan ketika parameter lain tidak ditentukan.
Dapatkan http://127.0.0.1:23456/voice/vits?text=$HHH (text[Text[ZHHH$ MatarJA MomorText[JA M&lang=Mix
Saat Lang = Campur, teks perlu dijelaskan.
Dapatkan http://127.0.0.1:23456/voice/vits?Text=Text&id=142&Format=wav&lang=zh&length=1.4
Teksnya adalah "teks", ID perannya adalah 142, format audio adalah wav, bahasa teksnya adalah zh, panjang bicara adalah 1.4, dan parameter lainnya default.
api_test.py Atur api_key_enabled: true di config.yaml untuk mengaktifkan otentikasi kunci API. Kunci API adalah api_key: api-key . Setelah mengaktifkannya, Anda perlu menambahkan parameter api_key di GET permintaan dan menambahkan parameter X-API-KEY di header untuk permintaan pos.
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Teks yang disintesis | teks | BENAR | str | Teks yang dibutuhkan untuk sintesis suara. | |
| ID Pembicara | pengenal | PALSU | Dari config.yaml | int | ID pembicara. |
| Format audio | format | PALSU | Dari config.yaml | str | Dukungan untuk WAV, OGG, Silk, MP3, FLAC |
| Bahasa teks | Lang | PALSU | Dari config.yaml | str | Bahasa teks yang akan disintesis. Opsi yang tersedia termasuk Auto, ZH, JA, dan Mix. Saat Lang = Campurkan, teks harus dibungkus dalam [ZH] atau [JA]. Mode default adalah Auto, yang secara otomatis mendeteksi bahasa teks |
| Panjang audio | panjang | PALSU | Dari config.yaml | mengambang | Menyesuaikan panjang pidato yang disintesis, yang setara dengan menyesuaikan kecepatan pidato. Semakin besar nilainya, semakin lambat kecepatannya. |
| Kebisingan | kebisingan | PALSU | Dari config.yaml | mengambang | Sampel noise, mengendalikan keacakan sintesis. |
| Kebisingan SDP | berisik | PALSU | Dari config.yaml | mengambang | Durasi stokastik prediktor noise, mengendalikan panjang pengucapan fonem. |
| Ukuran segmen | Segment_size | PALSU | Dari config.yaml | int | Bagilah teks menjadi paragraf berdasarkan tanda baca, dan gabungkan menjadi satu paragraf ketika panjangnya melebihi segmen_size. Jika Segment_Size <= 0, teks tidak akan dibagi menjadi paragraf. |
| Respons streaming | mengalir | PALSU | PALSU | bool | Streamed ucapan yang disintesis dengan respons awal yang lebih cepat. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Audio yang diunggah | mengunggah | BENAR | mengajukan | File audio yang akan diunggah. Itu harus di WAV atau OGG | |
| ID Peran Sumber | original_id | BENAR | int | ID peran yang digunakan untuk mengunggah file audio. | |
| ID Peran Target | target_id | BENAR | int | ID dari peran target untuk mengonversi audio menjadi. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Audio yang diunggah | mengunggah | BENAR | mengajukan | File audio yang akan diunggah. Itu harus dalam format WAV atau OGG. | |
| ID pembicara target | pengenal | BENAR | int | ID speaker target. | |
| Format audio | format | BENAR | str | Wav, ogg, sutra | |
| Panjang audio | panjang | BENAR | mengambang | Menyesuaikan panjang pidato yang disintesis, yang setara dengan menyesuaikan kecepatan pidato. Semakin besar nilainya, semakin lambat kecepatannya. | |
| Kebisingan | kebisingan | BENAR | mengambang | Sampel noise, mengendalikan keacakan sintesis. | |
| Kebisingan SDP | berisik | BENAR | mengambang | Durasi stokastik prediktor noise, mengendalikan panjang pengucapan fonem. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Teks yang disintesis | teks | BENAR | str | Teks yang dibutuhkan untuk sintesis suara. | |
| ID Pembicara | pengenal | PALSU | Dari config.yaml | int | ID pembicara. |
| Format audio | format | PALSU | Dari config.yaml | str | Dukungan untuk WAV, OGG, Silk, MP3, FLAC |
| Bahasa teks | Lang | PALSU | Dari config.yaml | str | Bahasa teks yang akan disintesis. Opsi yang tersedia termasuk Auto, ZH, JA, dan Mix. Saat Lang = Campurkan, teks harus dibungkus dalam [ZH] atau [JA]. Mode default adalah Auto, yang secara otomatis mendeteksi bahasa teks |
| Panjang audio | panjang | PALSU | Dari config.yaml | mengambang | Menyesuaikan panjang pidato yang disintesis, yang setara dengan menyesuaikan kecepatan pidato. Semakin besar nilainya, semakin lambat kecepatannya. |
| Kebisingan | kebisingan | PALSU | Dari config.yaml | mengambang | Sampel noise, mengendalikan keacakan sintesis. |
| Kebisingan SDP | berisik | PALSU | Dari config.yaml | mengambang | Durasi stokastik prediktor noise, mengendalikan panjang pengucapan fonem. |
| Ukuran segmen | Segment_size | PALSU | Dari config.yaml | int | Bagilah teks menjadi paragraf berdasarkan tanda baca, dan gabungkan menjadi satu paragraf ketika panjangnya melebihi segmen_size. Jika Segment_Size <= 0, teks tidak akan dibagi menjadi paragraf. |
| Emosi dimensi | emosi | PALSU | 0 | int | Kisaran tergantung pada file referensi emosi dalam format NPY, seperti kisaran model Innnky all_emotions.npy, yaitu 0-5457. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Audio yang diunggah | mengunggah | BENAR | mengajukan | Kembalikan file NPY yang menyimpan vektor emosi dimensi. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Teks yang disintesis | teks | BENAR | str | Teks yang dibutuhkan untuk sintesis suara. | |
| ID Pembicara | pengenal | PALSU | Dari config.yaml | int | ID pembicara. |
| Format audio | format | PALSU | Dari config.yaml | str | Dukungan untuk WAV, OGG, Silk, MP3, FLAC |
| Bahasa teks | Lang | PALSU | Dari config.yaml | str | "Auto" adalah mode untuk deteksi bahasa otomatis dan juga merupakan mode default. Namun, saat ini hanya mendukung mendeteksi bahasa dari seluruh bagian teks dan tidak dapat membedakan bahasa berdasarkan persamaan. Pilihan bahasa lainnya yang tersedia adalah "ZH" dan "JA". |
| Panjang audio | panjang | PALSU | Dari config.yaml | mengambang | Menyesuaikan panjang pidato yang disintesis, yang setara dengan menyesuaikan kecepatan pidato. Semakin besar nilainya, semakin lambat kecepatannya. |
| Kebisingan | kebisingan | PALSU | Dari config.yaml | mengambang | Sampel noise, mengendalikan keacakan sintesis. |
| Kebisingan SDP | berisik | PALSU | Dari config.yaml | mengambang | Durasi stokastik prediktor noise, mengendalikan panjang pengucapan fonem. |
| Ukuran segmen | Segment_size | PALSU | Dari config.yaml | int | Bagilah teks menjadi paragraf berdasarkan tanda baca, dan gabungkan menjadi satu paragraf ketika panjangnya melebihi segmen_size. Jika Segment_Size <= 0, teks tidak akan dibagi menjadi paragraf. |
| Rasio campuran SDP/DP | sdp_ratio | PALSU | Dari config.yaml | int | Proporsi teoritis SDP selama sintesis, semakin tinggi rasio, semakin besar varian dalam nada suara yang disintesis. |
| Emosi | emosi | PALSU | Dari config.yaml | int | Tersedia untuk Bert-Vits2 v2.1, mulai dari 0 hingga 9 |
| Audio Referensi Emosi | referensi_audio | PALSU | Tidak ada | Bert-Vits2 v2.1 menggunakan audio referensi untuk mengontrol emosi audio yang disintesis | |
| Prompt teks | text_prompt | PALSU | Dari config.yaml | str | Bert-VITS2 V2.2 Teks Prompt digunakan untuk kontrol emosi |
| Teks gaya | style_text | PALSU | Dari config.yaml | str | Bert-VITS2 V2.3 Teks Prompt digunakan untuk kontrol emosi |
| Berat teks gaya | style_weight | PALSU | Dari config.yaml | mengambang | Bert-VITS2 V2.3 Teks Prompt Berat yang digunakan untuk pembobotan cepat |
| Respons streaming | mengalir | PALSU | PALSU | bool | Streamed ucapan yang disintesis dengan respons awal yang lebih cepat. |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Teks yang disintesis | teks | BENAR | str | Teks yang dibutuhkan untuk sintesis suara. | |
| ID Pembicara | pengenal | PALSU | Dari config.yaml | int | ID Pembicara. Dalam GPT-Sovits, setiap model berfungsi sebagai ID speaker, dan suara diaktifkan dengan preset audio referensi. |
| Format audio | format | PALSU | Dari config.yaml | str | Dukungan untuk WAV, OGG, Silk, MP3, FLAC |
| Bahasa teks | Lang | PALSU | Dari config.yaml | str | "Auto" adalah mode deteksi bahasa otomatis, yang juga merupakan mode default. Namun, saat ini hanya mendukung mengenali bahasa dari seluruh bagian teks, dan tidak dapat membedakan setiap kalimat. |
| Audio referensi | referensi_audio | PALSU | Tidak ada | Reference_audio diperlukan, tetapi dapat diganti dengan preset. | |
| Teks Audio Referensi | prompt_text | PALSU | Dari config.yaml | mengambang | Perlu konsisten dengan teks aktual dari audio referensi. |
| Bahasa Audio Referensi | prompt_lang | PALSU | Dari config.yaml | str | Default ke Otomatis untuk Pengenalan Bahasa Teks Otomatis. Jika pengakuan gagal, isi secara manual, ZH untuk orang Cina, JA untuk bahasa Jepang, en untuk bahasa Inggris. |
| Preset Audio Referensi | preset | PALSU | bawaan | str | Ganti audio referensi dengan preset yang telah ditetapkan sebelumnya, beberapa preset dapat diatur. |
Elemen dan atribut yang didukung
speak elemen
| Atribut | Petunjuk | Adalah harus |
|---|---|---|
| pengenal | Nilai default diambil dari config.yaml | PALSU |
| Lang | Nilai default diambil dari config.yaml | PALSU |
| panjang | Nilai default diambil dari config.yaml | PALSU |
| kebisingan | Nilai default diambil dari config.yaml | PALSU |
| berisik | Nilai default diambil dari config.yaml | PALSU |
| Segment_size | Membagi teks menjadi segmen berdasarkan tanda baca. Ketika jumlah panjang segmen melebihi segment_size , itu diperlakukan sebagai satu segmen. segment_size<=0 berarti tidak ada segmentasi. Nilai default adalah 0. | PALSU |
| model_type | Default adalah Vits. Opsi: W2V2-Vits, Bert-Vits2 | PALSU |
| emosi | Hanya efektif saat menggunakan W2V2-Vits. Kisaran tergantung pada file referensi emosi NPY. | PALSU |
| sdp_ratio | Hanya efektif saat menggunakan Bert-vits2. | PALSU |
elemen voice
Prioritas lebih tinggi daripada speak .
| Atribut | Petunjuk | Adalah harus |
|---|---|---|
| pengenal | Nilai default diambil dari config.yaml | PALSU |
| Lang | Nilai default diambil dari config.yaml | PALSU |
| panjang | Nilai default diambil dari config.yaml | PALSU |
| kebisingan | Nilai default diambil dari config.yaml | PALSU |
| berisik | Nilai default diambil dari config.yaml | PALSU |
| Segment_size | Membagi teks menjadi segmen berdasarkan tanda baca. Ketika jumlah panjang segmen melebihi segment_size , itu diperlakukan sebagai satu segmen. segment_size<=0 berarti tidak ada segmentasi. Nilai default adalah 0. | PALSU |
| model_type | Default adalah Vits. Opsi: W2V2-Vits, Bert-Vits2 | PALSU |
| emosi | Hanya efektif saat menggunakan W2V2-Vits. Kisaran tergantung pada file referensi emosi NPY. | PALSU |
| sdp_ratio | Hanya efektif saat menggunakan Bert-vits2. | PALSU |
break Element
| Atribut | Petunjuk | Adalah harus |
|---|---|---|
| kekuatan | X-Weak, Lemah, Sedang (Default), Kuat, X-Strong | PALSU |
| waktu | Durasi absolut jeda dalam detik (seperti 2s ) atau milidetik (seperti 500ms ). Nilai yang valid berkisar dari 0 hingga 5.000 milidetik. Jika Anda menetapkan nilai lebih besar dari maksimum yang didukung, layanan akan menggunakan 5000ms . Jika atribut time ditetapkan, atribut strength diabaikan. | PALSU |
| Kekuatan | Durasi relatif |
|---|---|
| X-Weak | 250 ms |
| lemah | 500 ms |
| sedang | 750 ms |
| kuat | 1000 ms |
| x-kuat | 1250 ms |
| Nama | Parameter | Adalah harus | Bawaan | Jenis | Petunjuk |
|---|---|---|---|---|---|
| Teks sintesis | teks | BENAR | str | Teks yang akan disintesis menjadi pidato. | |
| Jenis model lawan bicara | in_model_type | PALSU | Diperoleh dari config.yaml | str | |
| ID lawan bicara | in_id | PALSU | Diperoleh dari config.yaml | int | |
| Preset audio referensi lawan bicara | preset | PALSU | bawaan | str | Ganti audio referensi dengan pengaturan preset, yang dapat diatur ke beberapa preset terlebih dahulu. |
| Jenis Model Narator | nr_model_type | PALSU | Diperoleh dari config.yaml | str | |
| ID Narator | nr_id | PALSU | Diperoleh dari config.yaml | int | |
| Preset Audio Referensi Narator | preset | PALSU | bawaan | str | Ganti audio referensi dengan pengaturan preset, yang dapat diatur ke beberapa preset terlebih dahulu. |
| Format audio | format | PALSU | Diperoleh dari config.yaml | str | Mendukung WAV, OGG, SILK, MP3, FLAC |
| Bahasa teks | Lang | PALSU | Diperoleh dari config.yaml | str | 'Auto' untuk mode deteksi bahasa otomatis, yang juga merupakan mode default. Namun, saat ini, itu hanya mendukung mengenali bahasa seluruh teks dan tidak dapat membedakan setiap kalimat. |
| Preset Audio Referensi | preset | PALSU | bawaan | str | Ganti audio referensi dengan pengaturan preset, yang dapat diatur ke beberapa preset terlebih dahulu. |
Parameter lain dari model akan menggunakan parameter default dari model yang sesuai dalam file config.yaml.
Lihat api_test.py
Pembelajaran dan Komunikasi, sekarang hanya ada kelompok QQ Cina