Ce projet est inspiré par SILERO-API-Server et utilise XTSTV2.
Ce serveur a été créé pour SillyTavern mais vous pouvez l'utiliser pour vos besoins
N'hésitez pas à faire des PR ou à utiliser le code pour vos propres besoins
Il existe une version Google Collab que vous pouvez l'utiliser si votre ordinateur est faible.
Si vous recherchez une option pour les xtts normaux, utilisez, regardez ici https://github.com/daswer123/xtts-webui
Récemment, j'ai peu de temps pour faire ce projet, donc je vous conseille de vous familiariser avec un projet similaire
Vous pouvez garder une trace de toutes les modifications sur la page de sortie
Installation simple:
pip install xtts-api-serverCela installera toutes les dépendances nécessaires, y compris une version de support CPU uniquement de Pytorch
Je vous recommande d'installer la version GPU pour améliorer la vitesse de traitement (jusqu'à 3 fois plus rapidement)
python -m venv venv
venv S cripts a ctivate
pip install xtts-api-server
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118sudo apt install -y python3-dev python3-venv portaudio19-dev
python -m venv venv
source venv b in a ctivate
pip install xtts-api-server
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118 # Clone REPO
git clone https://github.com/daswer123/xtts-api-server
cd xtts-api-server
# Create virtual env
python -m venv venv
venv/scripts/activate or source venv/bin/activate
# Install deps
pip install -r requirements.txt
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118
# Launch server
python -m xtts_api_server
Un dockerfile est fourni pour créer une image Docker, et un fichier docker-compose.yml est fourni pour exécuter le serveur avec Docker Compose en tant que service.
Vous pouvez construire l'image avec la commande suivante:
mkdir xtts-api-server
cd xtts-api-server
docker run -d daswer123/xtts-api-server
OU
cd docker
docker compose buildEnsuite, vous pouvez exécuter le serveur avec la commande suivante:
docker compose up # or with -d to run in background python -m xtts_api_server s'exécutera sur IP et Port par défaut (LocalHost: 8020)
Utilisez l'indicateur --deepspeed pour traiter rapidement le résultat (accélération 2-3x)
usage: xtts_api_server [-h] [-hs HOST] [-p PORT] [-sf SPEAKER_FOLDER] [-o OUTPUT] [-t TUNNEL_URL] [-ms MODEL_SOURCE] [--listen] [--use-cache] [--lowvram] [--deepspeed] [--streaming-mode] [--stream-play-sync]
Run XTTSv2 within a FastAPI application
options:
-h, --help show this help message and exit
-hs HOST, --host HOST
-p PORT, --port PORT
-d DEVICE, --device DEVICE `cpu` or `cuda`, you can specify which video card to use, for example, `cuda:0`
-sf SPEAKER_FOLDER, --speaker-folder The folder where you get the samples for tts
-o OUTPUT, --output Output folder
-mf MODELS_FOLDERS, --model-folder Folder where models for XTTS will be stored, finetuned models should be stored in this folder
-t TUNNEL_URL, --tunnel URL of tunnel used (e.g: ngrok, localtunnel)
-ms MODEL_SOURCE, --model-source ["api","apiManual","local"]
-v MODEL_VERSION, --version You can download the official model or your own model, official version you can find [here](https://huggingface.co/coqui/XTTS-v2/tree/main) the model version name is the same as the branch name [v2.0.2,v2.0.3, main] etc. Or you can load your model, just put model in models folder
--listen Allows the server to be used outside the local computer, similar to -hs 0.0.0.0
--use-cache Enables caching of results, your results will be saved and if there will be a repeated request, you will get a file instead of generation
--lowvram The mode in which the model will be stored in RAM and when the processing will move to VRAM, the difference in speed is small
--deepspeed allows you to speed up processing by several times, automatically downloads the necessary libraries
--streaming-mode Enables streaming mode, currently has certain limitations, as described below.
--streaming-mode-improve Enables streaming mode, includes an improved streaming mode that consumes 2gb more VRAM and uses a better tokenizer and more context.
--stream-play-sync Additional flag for streaming mod that allows you to play all audio one at a time without interruption
Vous pouvez spécifier le chemin d'accès au fichier en tant que texte, puis le chemin compte et le fichier sera exprimé
Vous pouvez charger votre propre modèle, pour cela, vous devez créer un dossier dans les modèles et charger le modèle avec des configurations, note dans le dossier doit être 3 fichiers config.json vocab.json model.pth
Si vous voulez que votre hôte écoute, utilisez -HS 0.0.0.0 ou utilisez - Listen
L'indicateur -t ou - tunnel est nécessaire pour que lorsque vous obtenez des haut-parleurs via obtenez le lien correct pour entendre l'aperçu. Plus d'informations ici
Model-Source définit dans quel format vous souhaitez utiliser XTTS:
local - charge la version 2.0.2 par défaut, mais vous pouvez spécifier la version via l'indicateur -v, le modèle enregistre dans le dossier des modèles et utilise XttsConfig et inference .apiManual - charge la version 2.0.2 par défaut, mais vous pouvez spécifier la version via l'indicateur -v, le modèle enregistre dans le dossier des modèles et utilise la fonction tts_to_file à partir de l'API TTSapi - Chargera la dernière version du modèle. Le drapeau -v ne fonctionnera pas.Toutes les versions du modèle XTTSV2 peuvent être trouvées ici, le nom de la version du modèle est le même que le nom de la branche [v2.0.2, v2.0.3, principal] etc.
La première fois que vous exécutez ou générez, vous devrez peut-être confirmer que vous acceptez d'utiliser les xtts.
Le mode de streaming vous permet d'obtenir l'audio et de le lire presque immédiatement. Cependant, il a un certain nombre de limitations.
Vous pouvez voir comment ce mode fonctionne ici et ici
Maintenant, sur les limites
tts_to_file uniquement tts_to_audio et il renvoie 1 seconde de silence. Vous pouvez spécifier la version du modèle XTTS en utilisant l'indicateur -v .
L'amélioration du mode de streaming convient aux langues complexes telles que le chinois, le japonais, l'hindi ou si vous voulez que le moteur linguistique prenne plus d'informations en compte lors du traitement de la parole.
--stream-play-sync Sync - vous permet de lire tous les messages dans l'ordre de la file d'attente, utile si vous utilisez des chats de groupe. Dans idiotaVern, vous devez désactiver le streaming pour fonctionner correctement
Les documents API sont accessibles à partir de http: // localhost: 8020 / docs
Par défaut, le dossier speakers doit apparaître dans le dossier, vous devez y mettre le fichier WAV avec l'échantillon vocal, vous pouvez également créer un dossier et y mettre plusieurs échantillons de voix, cela donnera des résultats plus précis
Vous pouvez modifier les dossiers des haut-parleurs et le dossier de sortie via l'API.
Le message suivant est un devis par le matériel utilisateur1276 de Reddit
Quelques suggestions pour faire de bons échantillons
Gardez-les environ 7 à 9 secondes. Plus longtemps n'est pas nécessairement meilleur.
Assurez-vous que l'audio est en panne dans un fichier WAV mono, 22050Hz 16 bits. Vous ralentirez le traitement par un% important et cela semble provoquer des résultats de mauvaise qualité autrement (sur la base de quelques tests). 24000Hz est la qualité dont il obtient de toute façon!
À l'aide de la dernière version de Audacity, sélectionnez votre clip et pistes> Rééchantillonner à 22050Hz, puis suit> Mélanger> Stéréo à mono. puis fichier> Exporter audio, l'enregistrer comme une vague de 22050Hz
Si vous devez effectuer un nettoyage audio, faites-le avant de le comprimer dans les paramètres ci-dessus (mono, 22050Hz, 16 bits).
Assurez-vous que le clip que vous utilisez n'a pas de bruits de fond ou de musique sur EG, beaucoup de films ont de la musique silencieuse lorsque de nombreux acteurs parlent. L'audio de mauvaise qualité aura un sifflement qui doit être nettoyé. L'IA ramassera cela, même si nous ne le faisons pas, et dans une certaine mesure, l'utilisera dans la voix simulée dans une certaine mesure, donc un son propre est essentiel!
Essayez de faire de votre clip un discours agréable, comme l'exemple de fichiers inclus. Pas de grosses pauses, de lacunes ou d'autres sons. De préférence, la personne que vous essayez de copier montrera une petite gamme vocale. Des exemples de fichiers sont ici
Assurez-vous que le clip ne démarre pas ou ne se termine pas par des sons haletants (respiration dans / out, etc.).
L'utilisation de clips audio générés par l'IA peut introduire des sons indésirables car c'est déjà une copie / simulation d'une voix, cependant, cela nécessiterait des tests.