Este proyecto está inspirado en Silero-API-Merver y utiliza XTTSV2.
Este servidor fue creado para SillyTavern, pero puede usarlo para sus necesidades.
Siéntase libre de hacer PR o usar el código para sus propias necesidades
Hay una versión de Google Collab que puede usarla si su computadora es débil.
Si está buscando una opción para XTTS normales, use Mire aquí https://github.com/daswer123/xtts-webui
Recientemente tengo poco tiempo para hacer este proyecto, así que le aconsejo que se familiarice con un proyecto similar.
Puede realizar un seguimiento de todos los cambios en la página de lanzamiento
Instalación simple:
pip install xtts-api-serverEsto instalará todas las dependencias necesarias, incluida una versión solo de soporte de CPU de Pytorch
Le recomiendo que instale la versión GPU para mejorar la velocidad de procesamiento (hasta 3 veces más rápido)
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
Se proporciona un DockerFile para construir una imagen Docker, y se proporciona un archivo Docker-Compose.yml para ejecutar el servidor con Docker Compose como un servicio.
Puede construir la imagen con el siguiente comando:
mkdir xtts-api-server
cd xtts-api-server
docker run -d daswer123/xtts-api-server
O
cd docker
docker compose buildLuego puede ejecutar el servidor con el siguiente comando:
docker compose up # or with -d to run in background python -m xtts_api_server se ejecutará en IP y puerto predeterminados (LocalHost: 8020)
Use el indicador --deepspeed para procesar el resultado rápidamente (aceleración de 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
Puede especificar la ruta al archivo como texto, luego la ruta cuenta y el archivo se expresará
Puede cargar su propio modelo, para esto debe crear una carpeta en modelos y cargar el modelo con configuraciones, nota en la carpeta debe ser 3 archivos config.json vocab.json model.pth
Si desea que su anfitrión escuche, use -hs 0.0.0.0 o use --listen
Se necesita la bandera -t o -tunnel para que cuando obtenga altavoces obtenga el enlace correcto para escuchar la vista previa. Más información aquí
La fuente del modelo define en qué formato desea usar XTTS:
local - Carga la versión 2.0.2 de forma predeterminada, pero puede especificar la versión a través del indicador -v, el modelo guarda en la carpeta de modelos y usa XttsConfig e inference .apiManual : carga la versión 2.0.2 de forma predeterminada, pero puede especificar la versión a través del indicador -v, el modelo guarda en la carpeta de modelos y usa la función tts_to_file desde la API TTSapi : cargará la última versión del modelo. La bandera -v no funcionará.Todas las versiones del modelo XTTSV2 se pueden encontrar aquí, el nombre de la versión del modelo es el mismo que el nombre de la rama [v2.0.2, v2.0.3, main] etc.
La primera vez que ejecuta o genere, es posible que deba confirmar que acepta usar XTTS.
El modo de transmisión le permite obtener audio y reproducirlo casi de inmediato. Sin embargo, tiene una serie de limitaciones.
Puedes ver cómo funciona este modo aquí y aquí
Ahora, sobre las limitaciones
tts_to_file solo tts_to_audio y devuelve 1 segundo de silencio. Puede especificar la versión del modelo XTTS utilizando el indicador -v .
El modo de transmisión mejorado es adecuado para idiomas complejos como chino, japonés, hindi o si desea que el motor del idioma tenga en cuenta más información al procesar el habla.
-Bandera --stream-play-sync -le permite reproducir todos los mensajes en el orden de cola, útil si usa chats grupales. En SillyTavern debes apagar la transmisión para trabajar correctamente
Se puede acceder a los documentos API desde http: // localhost: 8020/documentos
Por defecto, la carpeta speakers debe aparecer en la carpeta, debe colocar el archivo WAV con la muestra de voz, también puede crear una carpeta y colocar varias muestras de voz, esto dará resultados más precisos.
Puede cambiar las carpetas para los altavoces y la carpeta para la salida a través de la API.
La siguiente publicación es una cita de User Material1276 de Reddit
Algunas sugerencias sobre cómo hacer buenas muestras
Manténgalos de unos 7-9 segundos. Más largo no es necesariamente mejor.
Asegúrese de que el audio esté muestreado a un archivo wav mono de 22050Hz de 16 bits. Reducirá el procesamiento en un gran % y parece que causa resultados de mala calidad de lo contrario (según algunas pruebas). ¡24000Hz es la calidad en la que genera de todos modos!
Usando la última versión de Audacity, seleccione su clip y pistas> Vuelva a muestrear a 22050Hz, luego pistas> mezclar> estéreo a mono. y luego archivar> exportar audio, guardándolo como un wav de 22050Hz
Si necesita hacer una limpieza de audio, hágalo antes de comprimirlo a la configuración anterior (mono, 22050Hz, 16 bits).
Asegúrese del clip que usa no tiene ruidos de fondo o música en, por ejemplo, muchas películas tienen música tranquila cuando muchos de los actores están hablando. El audio de mala calidad tendrá silbido que necesita aclararse. La IA recogerá esto, incluso si no lo hacemos, y hasta cierto punto, usarlo en la voz simulada hasta cierto punto, ¡por lo que el audio limpio es clave!
Intente hacer que su clip sea uno de buen discurso fluido, como los archivos de ejemplo incluidos. No hay grandes pausas, huecos u otros sonidos. Preferiblemente una que la persona que está tratando de copiar mostrará un pequeño rango vocal. Los archivos de ejemplo están aquí
Asegúrese de que el clip no comience o termine con sonidos respiratorios (respirando/out, etc.).
El uso de clips de audio generados por AI puede introducir sonidos no deseados ya que ya es una copia/simulación de una voz, sin embargo, esto necesitaría pruebas.