| ## Install and Use Locally | |
| ### Table of Content | |
| - [Linux and macOS Install](#linux-and-macos-install) | |
| - [Docker Install for Windows and macOS](#docker-install) | |
| - [Usage](#usage) | |
| - [Web UI](#webui) | |
| - [CLI](#cli) | |
| - [Python API](#python-api) | |
| ### Linux and macOS Install | |
| The repo is developed and tested on `Ubuntu 20.04` and `Python 3.9`. | |
| ```bash | |
| git clone https://github.com/myshell-ai/MeloTTS.git | |
| cd MeloTTS | |
| pip install -e . | |
| python -m unidic download | |
| ``` | |
| If you encountered issues in macOS install, try the [Docker Install](#docker-install) | |
| ### Docker Install | |
| To avoid compatibility issues, for Windows users and some macOS users, we suggest to run via Docker. Ensure that [you have Docker installed](https://docs.docker.com/engine/install/). | |
| **Build Docker** | |
| This could take a few minutes. | |
| ```bash | |
| git clone https://github.com/myshell-ai/MeloTTS.git | |
| cd MeloTTS | |
| docker build -t melotts . | |
| ``` | |
| **Run Docker** | |
| ```bash | |
| docker run -it -p 8888:8888 melotts | |
| ``` | |
| If your local machine has GPU, then you can choose to run: | |
| ```bash | |
| docker run --gpus all -it -p 8888:8888 melotts | |
| ``` | |
| Then open [http://localhost:8888](http://localhost:8888) in your browser to use the app. | |
| ## Usage | |
| ### WebUI | |
| The WebUI supports muliple languages and voices. First, follow the installation steps. Then, simply run: | |
| ```bash | |
| melo-ui | |
| # Or: python melo/app.py | |
| ``` | |
| ### CLI | |
| You may use the MeloTTS CLI to interact with MeloTTS. The CLI may be invoked using either `melotts` or `melo`. Here are some examples: | |
| **Read English text:** | |
| ```bash | |
| melo "Text to read" output.wav | |
| ``` | |
| **Specify a language:** | |
| ```bash | |
| melo "Text to read" output.wav --language EN | |
| ``` | |
| **Specify a speaker:** | |
| ```bash | |
| melo "Text to read" output.wav --language EN --speaker EN-US | |
| melo "Text to read" output.wav --language EN --speaker EN-AU | |
| ``` | |
| The available speakers are: `EN-Default`, `EN-US`, `EN-BR`, `EN_INDIA` `EN-AU`. | |
| **Specify a speed:** | |
| ```bash | |
| melo "Text to read" output.wav --language EN --speaker EN-US --speed 1.5 | |
| melo "Text to read" output.wav --speed 1.5 | |
| ``` | |
| **Use a different language:** | |
| ```bash | |
| melo "text-to-speech 领域近年来发展迅速" zh.wav -l ZH | |
| ``` | |
| **Load from a file:** | |
| ```bash | |
| melo file.txt out.wav --file | |
| ``` | |
| The full API documentation may be found using: | |
| ```bash | |
| melo --help | |
| ``` | |
| ### Python API | |
| #### English with Multiple Accents | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| # CPU is sufficient for real-time inference. | |
| # You can set it manually to 'cpu' or 'cuda' or 'cuda:0' or 'mps' | |
| device = 'auto' # Will automatically use GPU if available | |
| # English | |
| text = "Did you ever hear a folk tale about a giant turtle?" | |
| model = TTS(language='EN', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| # American accent | |
| output_path = 'en-us.wav' | |
| model.tts_to_file(text, speaker_ids['EN-US'], output_path, speed=speed) | |
| # British accent | |
| output_path = 'en-br.wav' | |
| model.tts_to_file(text, speaker_ids['EN-BR'], output_path, speed=speed) | |
| # Indian accent | |
| output_path = 'en-india.wav' | |
| model.tts_to_file(text, speaker_ids['EN_INDIA'], output_path, speed=speed) | |
| # Australian accent | |
| output_path = 'en-au.wav' | |
| model.tts_to_file(text, speaker_ids['EN-AU'], output_path, speed=speed) | |
| # Default accent | |
| output_path = 'en-default.wav' | |
| model.tts_to_file(text, speaker_ids['EN-Default'], output_path, speed=speed) | |
| ``` | |
| #### Spanish | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| # CPU is sufficient for real-time inference. | |
| # You can also change to cuda:0 | |
| device = 'cpu' | |
| text = "El resplandor del sol acaricia las olas, pintando el cielo con una paleta deslumbrante." | |
| model = TTS(language='ES', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| output_path = 'es.wav' | |
| model.tts_to_file(text, speaker_ids['ES'], output_path, speed=speed) | |
| ``` | |
| #### French | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| device = 'cpu' # or cuda:0 | |
| text = "La lueur dorée du soleil caresse les vagues, peignant le ciel d'une palette éblouissante." | |
| model = TTS(language='FR', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| output_path = 'fr.wav' | |
| model.tts_to_file(text, speaker_ids['FR'], output_path, speed=speed) | |
| ``` | |
| #### Chinese | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| device = 'cpu' # or cuda:0 | |
| text = "我最近在学习machine learning,希望能够在未来的artificial intelligence领域有所建树。" | |
| model = TTS(language='ZH', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| output_path = 'zh.wav' | |
| model.tts_to_file(text, speaker_ids['ZH'], output_path, speed=speed) | |
| ``` | |
| #### Japanese | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| device = 'cpu' # or cuda:0 | |
| text = "彼は毎朝ジョギングをして体を健康に保っています。" | |
| model = TTS(language='JP', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| output_path = 'jp.wav' | |
| model.tts_to_file(text, speaker_ids['JP'], output_path, speed=speed) | |
| ``` | |
| #### Korean | |
| ```python | |
| from melo.api import TTS | |
| # Speed is adjustable | |
| speed = 1.0 | |
| device = 'cpu' # or cuda:0 | |
| text = "안녕하세요! 오늘은 날씨가 정말 좋네요." | |
| model = TTS(language='KR', device=device) | |
| speaker_ids = model.hps.data.spk2id | |
| output_path = 'kr.wav' | |
| model.tts_to_file(text, speaker_ids['KR'], output_path, speed=speed) | |
| ``` | |