Merci à l'étreinte Face!
Cahier de colab
Veuillez noter que différents ID peuvent prendre en charge différentes langues.
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=2077Il existe deux options de déploiement à choisir. Quelle que soit l'option que vous sélectionnez, vous devrez importer le modèle après le déploiement pour utiliser l'application.
Exécutez la commande suivante pour extraire l'image Docker. Suivez les invites du script pour choisir les fichiers nécessaires pour télécharger et extraire l'image:
bash -c " $( wget -O- https://raw.githubusercontent.com/Artrajz/vits-simple-api/main/vits-simple-api-installer-latest.sh ) " Les chemins par défaut pour les fichiers de configuration de projet et les dossiers de modèle sont /usr/local/vits-simple-api/ .
Exécutez la commande suivante pour démarrer le conteneur:
docker-compose up -dPour mettre à jour l'image, exécutez les commandes suivantes:
docker-compose pullEnsuite, redémarrez le conteneur:
docker-compose up -dClone le référentiel de projet à l'aide de la commande suivante:
git clone https://github.com/Artrajz/vits-simple-api.gitIl est recommandé d'utiliser un environnement virtuel avec Python version 3.10 pour ce projet. Exécutez la commande suivante pour installer les dépendances Python requises pour le projet:
Si vous rencontrez des problèmes d'installation de certaines dépendances, veuillez vous référer aux problèmes courants décrits ci-dessous.
pip install -r requirements.txtExécutez la commande suivante pour démarrer le programme:
python app.pyAccédez à la page des versions et téléchargez le dernier package de déploiement. Extraire les fichiers téléchargés.
Exécutez start.bat pour lancer le programme.
Téléchargez les fichiers VITS du modèle et placez-les dans le dossier data/models .
À partir de la version 0.6.6, il s'agit d'un comportement par défaut de charger automatiquement tous les modèles dans le dossier data/models , ce qui facilite l'utilisation des débutants.
Après le démarrage initial, un fichier de configuration config.yaml sera généré. Vous devez modifier tts_config.auto_load en false afin d'activer le mode de chargement manuel.
Vous pouvez modifier le tts_config.models dans la config.yaml ou apporter des modifications dans le panneau d'administration dans le navigateur.
Remarque: Après la version 0.6.6, le chemin de chargement du modèle a été modifié. Veuillez suivre les étapes ci-dessous pour configurer à nouveau le chemin du modèle!
Le chemin peut être un chemin absolu ou un chemin relatif. S'il s'agit d'un chemin relatif, il commence à partir du dossier data/models dans le répertoire racine du projet.
Par exemple, si le dossier data/models a les fichiers suivants:
├─model1
│ │─G_1000.pth
│ └─config.json
└─model2
│─G_1000.pth
└─config.json
Remplissez la configuration comme celle-ci dans le fichier 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 Le chargement des modèles via le panneau d'administration est pratique, mais si vous souhaitez charger des modèles en dehors du dossier data/models , vous ne pouvez le faire qu'en modifiant le fichier de configuration config.yaml. La méthode consiste à fournir directement le chemin absolu.
Exemple de chemin absolu:
tts_config :
auto_load : false
models :
- config_path : D://model3/config.json
model_path : D://model3/G_1000.pth Après avoir téléchargé le modèle Bert et le modèle d'émotion, placez-les respectivement dans les data/bert et les dossiers data/emotional . Trouvez les noms correspondants et insérez-les en conséquence.
Vérifiez la version la plus élevée de CUDA prise en charge par votre carte graphique:
nvidia-smi
Prendre Cuda 11.7 comme exemple, téléchargez-le sur le site officiel
https://pytorch.org/
pip install torch --index-url https://download.pytorch.org/whl/cu118
Le processus d'installation est similaire, mais je n'ai pas l'environnement pour le tester.
http://127.0.0.1:23456
* Le port est modifiable sous le paramètre par défaut du port 23456.
L'adresse par défaut est http://127.0.0.1:23456/admin.
Le nom d'utilisateur et le mot de passe initial peuvent être trouvés en recherchant «admin» dans le fichier config.yaml après le premier démarrage.
Le backend d'administration permet des modèles de chargement et de déchargement, et bien qu'il ait une authentification de connexion, pour plus de sécurité, vous pouvez désactiver le backend d'administration dans la config.yaml :
' IS_ADMIN_ENABLED ' : !!bool 'false'Cette mesure supplémentaire permet d'assurer la sécurité absolue lors de la rendez-vous inaccessible au backend d'administrateur au réseau public.
À partir de Bert-Vits2 V2.0, un modèle nécessite de charger trois modèles Bert en langue différents. Si vous n'avez besoin d'utiliser qu'un ou deux langues, vous pouvez ajouter le paramètre lang dans le fichier config.json de la section de données du modèle. La valeur ["zh"] indique que le modèle utilise uniquement le chinois et chargera les modèles Bert chinois. La valeur ["zh", "ja"] indique l'utilisation des modèles bilingues chinois et japonais, et seuls les modèles Bert chinois et japonais seront chargés. De même, ce modèle se poursuit pour d'autres combinaisons de langues.
Exemple:
"data" : {
"lang" : [ " zh " , " ja " ],
"training_files" : " filelists/train.list " ,
"validation_files" : " filelists/val.list " ,
"max_wav_value" : 32768.0 ,
... Si vous rencontrez des problèmes avec une prononciation incorrecte des caractères polyphoniques, vous pouvez essayer de le résoudre en utilisant la méthode suivante.
Créer et ouvrir des phrases_dict.txt dans le répertoire data pour ajouter des mots polyphoniques.
{
"一骑当千" : [[ "yí" ], [ "jì" ], [ "dāng" ], [ "qiān" ]],
}Recherchez la configuration des Sovits GPT dans le fichier config.yaml. Ajoutez des préréglages dans la section des préréglages. Plusieurs préréglages peuvent être ajoutés, avec des clés servant de noms prédéfinis. Vous trouverez ci-dessous deux préréglages par défaut, par défaut et par défaut2:
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
Testé à Legado
Plusieurs modèles peuvent être utilisés pour la lecture, y compris les VITS, Bert-Vits2, GPT-Sovits. Paramètres commençant in configurer le haut-parleur du texte en guillemets, tandis que les paramètres commençant par nr configurent le narrateur.
Pour utiliser GPT-SOVITS, il est nécessaire de configurer l'avance l'audio de référence dans la section presets du fichier config.yaml et de modifier le préréglage dans l'URL ci-dessous.
L'IP dans l'URL peut être trouvée après le démarrage de l'API, en utilisant généralement un IP de réseau local à partir de 192.168.
Après modification, sélectionnez le moteur de lecture, ajoutez le moteur de lecture, collez la source et activez le moteur de lecture.
{
"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"
}Pour assurer la compatibilité avec le modèle Bert-Vits2, modifiez le fichier config.json en ajoutant un paramètre de version "version": "xxx". Par exemple, si la version du modèle est 1.0.1, le fichier de configuration doit être écrit comme suit:
{
"version" : " 1.0.1 " ,
"train" : {
"log_interval" : 10 ,
"eval_interval" : 100 ,
"seed" : 52 ,
... Veuillez noter que pour la version supplémentaire chinoise, la version doit être modifiée en extra ou zh-clap , et pour la version FIX supplémentaire, la version doit être 2.4 ou extra-fix .
Obtenez http://127.0.0.1:23456/voice/speakers
Renvoie la table de mappage des ID de rôle aux noms de haut-parleurs.
Obtenez http://127.0.0.1:23456/voice/vits?text=text
Les valeurs par défaut sont utilisées lorsque d'autres paramètres ne sont pas spécifiés.
Obtenez http://127.0.0.1:23456/voice/vits?text=[zh
Lorsque Lang = mixage, le texte doit être annoté.
Obtenez http://127.0.0.1:23456/voice/vits?text=text&id=142&format=wav&lang=zh&length=1.4
Le texte est "texte", l'ID de rôle est 142, le format audio est WAV, le langage du texte est ZH, la longueur de la parole est de 1,4 et les autres paramètres sont par défaut.
api_test.py Définissez api_key_enabled: true in config.yaml pour activer l'authentification des clés de l'API. La clé API est api_key: api-key . Après l'activer, vous devez ajouter le paramètre api_key dans les demandes GET et ajouter le paramètre X-API-KEY dans l'en-tête des demandes de poste.
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Texte synthétisé | texte | vrai | Str | Texte nécessaire pour la synthèse vocale. | |
| Conférencier | identifiant | FAUX | À partir de config.yaml | int | L'ID du haut-parleur. |
| Format audio | format | FAUX | À partir de config.yaml | Str | Prise en charge de Wav, Ogg, Silk, MP3, FLAC |
| Langue de texte | égouter | FAUX | À partir de config.yaml | Str | La langue du texte à synthétiser. Les options disponibles incluent Auto, Zh, JA et Mix. Lorsque Lang = mixage, le texte doit être enveloppé dans [ZH] ou [JA]. Le mode par défaut est automatique, qui détecte automatiquement la langue du texte |
| Longueur audio | longueur | FAUX | À partir de config.yaml | flotter | Ajuste la longueur de la parole synthétisée, ce qui équivaut à l'ajustement de la vitesse de la parole. Plus la valeur est grande, plus la vitesse. |
| Bruit | bruit | FAUX | À partir de config.yaml | flotter | Échantillon de bruit, contrôlant l'aléatoire de la synthèse. |
| Bruit SDP | bruit | FAUX | À partir de config.yaml | flotter | Bruit du prédicteur de la durée stochastique, contrôlant la longueur de la prononciation du phonème. |
| Taille du segment | segment_size | FAUX | À partir de config.yaml | int | Divisez le texte en paragraphes en fonction des marques de ponctuation et combinez-les en un seul paragraphe lorsque la longueur dépasse segment_size. Si segment_size <= 0, le texte ne sera pas divisé en paragraphes. |
| Réponse en streaming | streaming | FAUX | FAUX | bool | Speech synthétisé en streaming avec une réponse initiale plus rapide. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Audio téléchargé | télécharger | vrai | déposer | Le fichier audio à télécharger. Il doit être en wav ou ogg | |
| ID de rôle source | original_id | vrai | int | L'ID du rôle utilisé pour télécharger le fichier audio. | |
| ID de rôle cible | Target_id | vrai | int | L'ID du rôle cible pour convertir l'audio. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Audio téléchargé | télécharger | vrai | déposer | Le fichier audio à télécharger. Il doit être au format WAV ou OGG. | |
| ID du haut-parleur cible | identifiant | vrai | int | L'ID du haut-parleur cible. | |
| Format audio | format | vrai | Str | Wav, ogg, soie | |
| Longueur audio | longueur | vrai | flotter | Ajuste la longueur de la parole synthétisée, ce qui équivaut à l'ajustement de la vitesse de la parole. Plus la valeur est grande, plus la vitesse. | |
| Bruit | bruit | vrai | flotter | Échantillon de bruit, contrôlant l'aléatoire de la synthèse. | |
| bruit SDP | bruit | vrai | flotter | Bruit du prédicteur de la durée stochastique, contrôlant la longueur de la prononciation du phonème. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Texte synthétisé | texte | vrai | Str | Texte nécessaire pour la synthèse vocale. | |
| Conférencier | identifiant | FAUX | À partir de config.yaml | int | L'ID du haut-parleur. |
| Format audio | format | FAUX | À partir de config.yaml | Str | Prise en charge de Wav, Ogg, Silk, MP3, FLAC |
| Langue de texte | égouter | FAUX | À partir de config.yaml | Str | La langue du texte à synthétiser. Les options disponibles incluent Auto, Zh, JA et Mix. Lorsque Lang = mixage, le texte doit être enveloppé dans [ZH] ou [JA]. Le mode par défaut est automatique, qui détecte automatiquement la langue du texte |
| Longueur audio | longueur | FAUX | À partir de config.yaml | flotter | Ajuste la longueur de la parole synthétisée, ce qui équivaut à l'ajustement de la vitesse de la parole. Plus la valeur est grande, plus la vitesse. |
| Bruit | bruit | FAUX | À partir de config.yaml | flotter | Échantillon de bruit, contrôlant l'aléatoire de la synthèse. |
| Bruit SDP | bruit | FAUX | À partir de config.yaml | flotter | Bruit du prédicteur de la durée stochastique, contrôlant la longueur de la prononciation du phonème. |
| Taille du segment | segment_size | FAUX | À partir de config.yaml | int | Divisez le texte en paragraphes en fonction des marques de ponctuation et combinez-les en un seul paragraphe lorsque la longueur dépasse segment_size. Si segment_size <= 0, le texte ne sera pas divisé en paragraphes. |
| Émotion dimensionnelle | émotion | FAUX | 0 | int | La plage dépend du fichier de référence des émotions au format NPY, comme la plage du modèle innnky all_emotions.npy, qui est 0-5457. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Audio téléchargé | télécharger | vrai | déposer | Renvoyez le fichier NPY qui stocke les vecteurs d'émotion dimensionnels. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Texte synthétisé | texte | vrai | Str | Texte nécessaire pour la synthèse vocale. | |
| Conférencier | identifiant | FAUX | À partir de config.yaml | int | L'ID du haut-parleur. |
| Format audio | format | FAUX | À partir de config.yaml | Str | Prise en charge de Wav, Ogg, Silk, MP3, FLAC |
| Langue de texte | égouter | FAUX | À partir de config.yaml | Str | "Auto" est un mode de détection automatique du langage et est également le mode par défaut. Cependant, il ne prend actuellement en charge que la détection du langage d'un passage de texte entier et ne peut pas distinguer les langues sur une base par sensation. Les autres options de langue disponible sont "ZH" et "JA". |
| Longueur audio | longueur | FAUX | À partir de config.yaml | flotter | Ajuste la longueur de la parole synthétisée, ce qui équivaut à l'ajustement de la vitesse de la parole. Plus la valeur est grande, plus la vitesse. |
| Bruit | bruit | FAUX | À partir de config.yaml | flotter | Échantillon de bruit, contrôlant l'aléatoire de la synthèse. |
| Bruit SDP | bruit | FAUX | À partir de config.yaml | flotter | Bruit du prédicteur de la durée stochastique, contrôlant la longueur de la prononciation du phonème. |
| Taille du segment | segment_size | FAUX | À partir de config.yaml | int | Divisez le texte en paragraphes en fonction des marques de ponctuation et combinez-les en un seul paragraphe lorsque la longueur dépasse segment_size. Si segment_size <= 0, le texte ne sera pas divisé en paragraphes. |
| Ratio de mélange SDP / DP | sdp_ratio | FAUX | À partir de config.yaml | int | La proportion théorique de SDP pendant la synthèse, plus le rapport est élevé, plus la variance du ton vocal synthétisé est grande. |
| Émotion | émotion | FAUX | À partir de config.yaml | int | Disponible pour Bert-Vits2 V2.1, allant de 0 à 9 |
| Audio de référence d'émotion | référence_audio | FAUX | Aucun | Bert-vits2 v2.1 utilise l'audio de référence pour contrôler l'émotion de l'audio synthétisé | |
| Invite de texte | text_prompt | FAUX | À partir de config.yaml | Str | Bert-vits2 v2.2 Invite de texte utilisé pour le contrôle des émotions |
| Texte de style | style_text | FAUX | À partir de config.yaml | Str | Bert-vits2 v2.3 Invite de texte utilisé pour le contrôle des émotions |
| Texte de style poids | style_weight | FAUX | À partir de config.yaml | flotter | Bert-vits2 v2.3 Poids rapide de texte utilisé pour la pondération rapide |
| Réponse en streaming | streaming | FAUX | FAUX | bool | Speech synthétisé en streaming avec une réponse initiale plus rapide. |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Texte synthétisé | texte | vrai | Str | Texte nécessaire pour la synthèse vocale. | |
| Conférencier | identifiant | FAUX | À partir de config.yaml | int | ID du haut-parleur. Dans GPT-SOVITS, chaque modèle sert d'identification de haut-parleur et la voix est commutée par des préréglages audio de référence. |
| Format audio | format | FAUX | À partir de config.yaml | Str | Prise en charge de Wav, Ogg, Silk, MP3, FLAC |
| Langue de texte | égouter | FAUX | À partir de config.yaml | Str | "Auto" est le mode de détection automatique du langage, qui est également le mode par défaut. Cependant, il ne prend actuellement en charge que la reconnaissance du langage de l'ensemble du passage de texte et ne peut pas distinguer chaque phrase. |
| Audio de référence | référence_audio | FAUX | Aucun | Reference_Audio est requis, mais il peut être remplacé par le préréglage. | |
| Texte audio de référence | prompt_text | FAUX | À partir de config.yaml | flotter | Besoin d'être cohérent avec le texte réel de l'audio de référence. |
| Langue audio de référence | prompt_lang | FAUX | À partir de config.yaml | Str | Par défaut est automatique pour la reconnaissance automatique du langage de texte. Si la reconnaissance échoue, remplissez manuellement, zh pour chinois, ja pour japonais, en pour l'anglais. |
| Référence préréglé audio | prérégler | FAUX | défaut | Str | Remplacez l'audio de référence par des préréglages prédéfinis, plusieurs préréglages peuvent être définis. |
Éléments et attributs pris en charge
élément speak
| Attribut | Instruction | Est must |
|---|---|---|
| identifiant | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| égouter | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| longueur | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| bruit | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| bruit | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| segment_size | Fruit le texte en segments basés sur les marques de ponctuation. Lorsque la somme des longueurs de segment dépasse segment_size , elle est traitée comme un seul segment. segment_size<=0 signifie aucune segmentation. La valeur par défaut est 0. | FAUX |
| modèle_type | La valeur par défaut est des vites. Options: W2V2-VITS, Bert-Vits2 | FAUX |
| émotion | Efficace uniquement lors de l'utilisation de W2V2-VITS. La plage dépend du fichier de référence des émotions NPY. | FAUX |
| sdp_ratio | Seulement efficace lors de l'utilisation de bert-vits2. | FAUX |
élément voice
Priorité plus élevée que speak .
| Attribut | Instruction | Est must |
|---|---|---|
| identifiant | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| égouter | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| longueur | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| bruit | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| bruit | La valeur par défaut est récupérée à partir de config.yaml | FAUX |
| segment_size | Fruit le texte en segments basés sur les marques de ponctuation. Lorsque la somme des longueurs de segment dépasse segment_size , elle est traitée comme un seul segment. segment_size<=0 signifie aucune segmentation. La valeur par défaut est 0. | FAUX |
| modèle_type | La valeur par défaut est des vites. Options: W2V2-VITS, Bert-Vits2 | FAUX |
| émotion | Efficace uniquement lors de l'utilisation de W2V2-VITS. La plage dépend du fichier de référence des émotions NPY. | FAUX |
| sdp_ratio | Seulement efficace lors de l'utilisation de bert-vits2. | FAUX |
élément break
| Attribut | Instruction | Est must |
|---|---|---|
| force | X-weak, faible, moyen (par défaut), fort, X-Strong | FAUX |
| temps | La durée absolue d'une pause en secondes (comme 2s ) ou des millisecondes (telles que 500ms ). Les valeurs valides varient de 0 à 5000 millisecondes. Si vous définissez une valeur supérieure au maximum pris en charge, le service utilisera 5000ms . Si l'attribut time est défini, l'attribut strength est ignoré. | FAUX |
| Force | Durée relative |
|---|---|
| X-Wak | 250 ms |
| faible | 500 ms |
| moyen | 750 ms |
| fort | 1000 ms |
| X-Song | 1250 ms |
| Nom | Paramètre | Est must | Défaut | Taper | Instruction |
|---|---|---|---|---|---|
| Texte de synthèse | texte | vrai | Str | Le texte à synthétiser en discours. | |
| Type de modèle interlocuteur | IN_MODEL_TYPE | FAUX | Obtenu à partir de config.yaml | Str | |
| ID interlocutor | en_id | FAUX | Obtenu à partir de config.yaml | int | |
| Préréglage audio de référence interlocutrice | prérégler | FAUX | défaut | Str | Remplacez l'audio de référence par des paramètres prédéfinis, qui peuvent être définis sur plusieurs préréglages à l'avance. |
| Type de modèle de narrateur | nr_model_type | FAUX | Obtenu à partir de config.yaml | Str | |
| ID du narrateur | nr_id | FAUX | Obtenu à partir de config.yaml | int | |
| NARRATEUR RÉFÉRENCE AUDIO PRESET | prérégler | FAUX | défaut | Str | Remplacez l'audio de référence par des paramètres prédéfinis, qui peuvent être définis sur plusieurs préréglages à l'avance. |
| Format audio | format | FAUX | Obtenu à partir de config.yaml | Str | Prend en charge Wav, Ogg, Silk, MP3, FLAC |
| Langue de texte | égouter | FAUX | Obtenu à partir de config.yaml | Str | «Auto» pour le mode de détection de langue automatique, qui est également le mode par défaut. Cependant, actuellement, il ne prend en charge que la reconnaissance du langage de l'ensemble du texte et ne peut pas distinguer chaque phrase. |
| Référence préréglé audio | prérégler | FAUX | défaut | Str | Remplacez l'audio de référence par des paramètres prédéfinis, qui peuvent être définis sur plusieurs préréglages à l'avance. |
Les autres paramètres du modèle utiliseront les paramètres par défaut du modèle correspondant dans le fichier config.yaml.
Voir api_test.py
Apprentissage et communication, maintenant il n'y a que du groupe QQ chinois