7.0 KiB
Docker
The Docker image currently works on Windows and Linux supporting NVIDIA GPUs.
System requirements
- AMD compatible Windows or Linux system
- CUDA 12.8
- Nvidia Docker Container Toolkit
- At least 25GB of free disk space
Quickstart
Use docker-start.sh to pull the latest docker image using the XTTS model from Docker Hub and
visit http://localhost:7851/. See instructions below for passing more arguments to the start script.
Installing Prerequisites
Docker for Linux
Ubuntu Specific Setup for GPUs
- Make sure the latest nvidia drivers are installed:
sudo ubuntu-drivers install - Install Docker your preferred way. One way to do it is to follow the official documentation here.
- Start by uninstalling the old versions
- Follow the "apt" repository installation method
- Check that everything is working with the "hello-world" container
- If, when launching the docker contain, you have an error message saying that the GPU cannot be used, you might have to install Nvidia Docker Container Toolkit.
- Install with the "apt" method
- Run the docker configuration command
sudo nvidia-ctk runtime configure --runtime=docker - Restart docker
Docker for Windows (WSL2)
Windows Specific Setup for GPUs
Make sure your Nvidia drivers are up to date: https://www.nvidia.com/download/index.aspx
- Install WSL2 in PowerShell with
wsl --installand restart - Open PowerShell, type and enter
ubuntu. It should now load you into wsl2 - Remove the original nvidia cache key:
sudo apt-key del 7fa2af80 - Download CUDA toolkit keyring:
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb - Install keyring:
sudo dpkg -i cuda-keyring_1.1-1_all.deb - Update package list:
sudo apt-get update - Install CUDA toolkit:
sudo apt-get -y install cuda-toolkit-12-8 - Install Docker Desktop using WSL2 as the backend
- Restart
- If you wish to monitor the terminal remotely via SSH, follow this guide.
- Open PowerShell, type
ubuntu, then follow below
Arguments for starting the Docker container
To make it as simple as possible to use Docker, the script docker-start.sh can be used. It provides the
following optional arguments:
--configlets you choose a config JSON file which can subset ofconfignew.json. This allows you to change only few values and leave the rest as defined in the defaultconfignew.jsonfile.- Example:
docker-start.sh --config /my/config/file.jsonwith content{"branding": "My Brand "}will just change the branding inconfignew.json.
- Example:
--voiceslets you add voices for the TTS engine in WAV format. You have to specify the folder containing all voice files.- Example:
docker-start.sh --voices /my/voices/dir
- Example:
--rvc-voicessimilar to voices, this option lets you pick the folder containing the RVC models.- Example:
docker-start.sh --rvc_voices /my/rvc/voices/dir
- Example:
--no-uiallows you to not expose port 7852 for the gradio interface and setslaunch_gradioandgradio_interfacetofalse.--auto-cleanupperiodically deletes all generated WAV files that are older than 1min.--with-multi-engine-managerenables the use of the multi engine manager (MEM) which allows for more parallel requests. By default, one TTS engine is started. Optionally, you can pass the file path of a JSON file which can be a subset ofmem_config.jsonwith more fine-grained configuration options.- Example:
docker-start.sh --with-multi_engine_managerto use MEM with default settings ordocker-start.sh --with-multi_engine_manager /my/config/file.jsonto pass a JSON file containing more settings.
- Example:
--tagallows to choose the docker tag of the image to run. Defaults tolatest-xtts.- Example:
docker-start.sh --tag mytag
- Example:
--docker-repositoryallows to choose another Docker repository for pulling the image from. Use an empty string for the local repo.- Since the above commands only address the most important options, you might pass additional arbitrary docker arguments
to the
docker-start.sh.
Of course, like for any other Docker image, you can also directly use docker run directly and use
docker-start.sh as an inspiration.
Using environment variables for setting config values
Instead of using config JSON files, there are config settings that can be directly set using environment (ENV) variables
when starting the application. This is also what is used internally in docker-start.sh.
Since docker-start.sh allows to pass arbitrary params, it can also be used to set env variables, e.g:
./docker-start.sh -e ALLTALK_BRANDING="My Brand " -e ALLTALK_API_PORT_NUMBER=9876
or when using Docker directly:
docker run -e ALLTALK_BRANDING="My Brand " -e ALLTALK_API_PORT_NUMBER=9876 ...
Consult docker_default_confignew.json and docker_default_mem_config.json for a list of all available env variables.
Building your own images (advanced)
Be aware that building the images requires good hardware and bandwidth. Expect this process to require > 40 GB of disk space and > 30min execution time depending on your hardware.
Under normal circumstances, there should be no need to build the Docker images locally. However, if needed for some
reason, you may want to use docker-build.sh with the following arguments:
--tts_modelallows to choose the TTS model that is used by default. Valid values arepiper,vits,xtts. Defaults toxtts.- Example:
docker-build.sh --tts_model piper
- Example:
--tagallows to choose the docker tag. Defaults tolatest-xtts.- Example:
docker-build.sh --tag mytag
- Example:
--docker-repositoryallows to choose another Docker repository for tagging the image from. Use an empty string for the local repo.--local-deepspeed-buildshould only be used in rare cases where DeepSpeed needs to be rebuilt. Defaults tofalse.--cleanallows remove existing dependency build like conda environment or DeepSpeed. Defaults tofalse.- Example:
docker-build.sh --clean
- Example:
Older images
- CUDA 12.6:
- XTTS Dockerhub hash: sha256:fd4741714af0c82e4e7a66bf9ae47c98f3e51ebefdb3af5795b47d41ca5fb159
- VITS Dockerhub hash: sha256:9f411e8fdb997486bc217fcd316bf6b163c39736655ea3400028ad4fcc5c60f9
- Piper: Dockerhub hash: sha256:6ae2520051bb00a0356dc4ed80a33bf6784cb567b59759af46046ddcf356b765