MeloTTS WebUI & API – multilingual Docker TTS with offline-ready models
5.5K
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
This Docker image has moved to Hangry Labs:
This old Docker Hub page is kept public only as a redirect/archive. Use Hangry Labs for latest updates and security fixes.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
This is an independently maintained fork of the original MeloTTS, focusing on making it easy to run, integrate, and test without deep technical setup.
//tts/convert/ttsCPU:
docker run -p 8888:8888 sensejworld/melotts
NVIDIA GPU:
docker run -p 8888:8888 --gpus all sensejworld/melotts:latest
EN-focused image (smaller target image):
docker run -p 8888:8888 --gpus all sensejworld/melotts:latest_en
Specific GPU (example: GPU index 1):
docker run -p 8888:8888 --gpus "device=1" sensejworld/melotts
English only:
docker run -p 8888:8888 --gpus all -e TTS_LANGUAGES=EN sensejworld/melotts
Visit: http://localhost:8888 for the UI.
(First synthesis may take up to 1 minute — after that, it's very fast.)
Simple:
curl -X POST "http://localhost:8888/tts/convert/tts" ^
-H "Content-Type: application/json" ^
-d "{\"text\":\"Hello world. I wanted to test this and see if this works properly\",\"language\":\"EN\",\"speaker_id\":\"EN-BR\"}" ^
-o hello.wav
Omitting format keeps the original WAV response. Add format when a smaller file is preferred:
curl -X POST "http://localhost:8888/tts/convert/tts" ^
-H "Content-Type: application/json" ^
-d "{\"text\":\"Hello world. I wanted to test this and see if this works properly\",\"language\":\"EN\",\"speaker_id\":\"EN-BR\",\"format\":\"mp3\"}" ^
-o hello.mp3
Supported response formats are listed by GET /tts/formats.
The web UI defaults to MP3 downloads. The API keeps WAV as the default unless format is provided.
Advanced:
curl -v -X POST http://localhost:8888/tts/convert/tts ^
-H "Content-Type: application/json" ^
-d "{\"text\":\"Hello world. I wanted to test this and see if this works properly\",\"speed\":1.0,\"language\":\"EN\",\"speaker_id\":\"EN-BR\",\"sdp_ratio\":\"0.21\",\"noise_scale\":\"0.61\",\"noise_scale_w\":\"0.81\"}" ^
--output hello.wav
If you encounter a bug, have a feature request, or want to contribute:
I respond fastest on GitHub — Docker Hub comments aren’t monitored regularly.
View all available builds: sensejworld/melotts — Tags
Main tag strategy:
latest_en, <version>_enlatest, <version>melo/utils.py to inference text preparation, config loading, and HParams.Empty reply from server./tts/status, /tts/defaults, /tts/voices, /tts/metrics, and /tts/purge endpoints for the new UI and companion integrations.format, with discovery at /tts/formats.requirements.in + resolved pins in requirements.txt; key validated versions include gradio==6.14.0, fastapi==0.136.1, starlette==1.0.0, pydantic==2.13.4, torch==2.11.0, torchaudio==2.11.0, transformers==5.8.0, numpy==2.2.6, and soundfile==0.13.1.setup.py so display versions like v0.0.8-SNAPSHOT install as valid Python package versions such as 0.0.8.dev0.task release backed by the root snapshot VERSION file, and corrected Docker release tags so the full image publishes as <version> while the EN-focused image publishes as <version>_en.task localrun, task localdev, and task localapi bind-mount melo/app.py./tts/convert/tts JSON payloads and documented the current runtime-only scope.python:3.10-slim) and aligned packaging with python_requires>=3.10.VERSION file is now the single version source of truth.BUILD_ID) and exposed in UI/API.gradio==4.44.1, gradio-client==1.3.0, fastapi==0.115.12, starlette==0.46.2, typer==0.12.5.requests==2.32.4, urllib3==2.3.0, certifi==2025.6.15, plus broad runtime library updates.markupsafe remains on 2.x for Gradio compatibility.huggingface-hub==0.21.4 and filelock==3.13.1 remain constrained by cached-path==1.6.2.EN_ONLY / FULL) with retry + strict/non-strict controls.averaged_perceptron_tagger_eng and cmudict) are preloaded during image build for offline-ready runs.<version>_en, <version>) to improve build/release flexibility.docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.7_en
docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.7
docker run -p 8888:8888 --gpus "device=1" sensejworld/melotts:v0.0.7_en
sm_120) support in the Docker setup.docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.6
UI Playground and API Docs.APP_VERSION and BUILD_ID.Purge others) to release non-selected language models./ -> API Docs tab + /tts/docs).docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.5
MELOTTTS_MODELS to point to your custom model folder.docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.4
docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.3`
docker run -p 8888:8888 --gpus all sensejworld/melotts:v0.0.2`
docker run -p 8888:8888 -e TTS_LANGUAGES=EN sensejworld/melotts:v0.0.2`
docker run -p 8888:8888 -e TTS_LANGUAGES=EN,JP sensejworld/melotts:v0.0.2`
docker run -p 8888:8888 --gpus all -e TTS_LANGUAGES=EN --name melotts_gpu_en sensejworld/melotts:v0.0.2`
docker pull sensejworld/melotts:v0.0.1`
This fork is licensed under the MIT License.
Original work by Wenliang Zhao, Xumin Yu, and Zengyi Qin in MeloTTS.
Content type
Image
Digest
sha256:62042d2f5…
Size
11.3 GB
Last updated
4 months ago
docker pull sensejworld/melotts