228 lines
6.6 KiB
Markdown
228 lines
6.6 KiB
Markdown
<div align="center">
|
||
<div> </div>
|
||
<img src="logo.png" width="200"/>
|
||
</div>
|
||
|
||
## Introduction
|
||
MeloTTS is a **high-quality multi-lingual** text-to-speech library by [MyShell.ai](https://myshell.ai). Supported languages include:
|
||
|
||
| Language | Example |
|
||
| --- | --- |
|
||
| English | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/en/EN-Default/speed_1.0/sent_000.wav) |
|
||
| English (American) | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/en/EN-US/speed_1.0/sent_000.wav) |
|
||
| English (British) | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/en/EN-BR/speed_1.0/sent_000.wav) |
|
||
| English (Indian) | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/en/EN_INDIA/speed_1.0/sent_000.wav) |
|
||
| English (Australian) | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/en/EN-AU/speed_1.0/sent_000.wav) |
|
||
| Spanish | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/es/ES/speed_1.0/sent_000.wav) |
|
||
| French | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/fr/FR/speed_1.0/sent_000.wav) |
|
||
| Chinese (mix EN) | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/zh/ZH/speed_1.0/sent_008.wav) |
|
||
| Japanese | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/jp/JP/speed_1.0/sent_000.wav) |
|
||
| Korean | [Link](https://myshell-public-repo-hosting.s3.amazonaws.com/myshellttsbase/examples/kr/KR/speed_1.0/sent_000.wav) |
|
||
|
||
Some other features include:
|
||
- The Chinese speaker supports `mixed Chinese and English`.
|
||
- Fast enough for `CPU real-time inference`.
|
||
|
||
## Install on Linux or macOS
|
||
|
||
```bash
|
||
git clone git@github.com:myshell-ai/MeloTTS.git
|
||
cd MeloTTS
|
||
pip install -e .
|
||
python -m unidic download
|
||
```
|
||
|
||
We welcome the open-source community to make this repo `Windows` compatible. If you find this repo useful, please consider contributing to the repo.
|
||
|
||
## Usage
|
||
|
||
An unofficial [live demo](https://huggingface.co/spaces/mrfakename/MeloTTS) is hosted on Hugging Face Spaces.
|
||
|
||
### WebUI
|
||
|
||
The WebUI supports muliple languages and voices. First, follow the installation steps. Then, simply run:
|
||
|
||
```bash
|
||
python 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 "语音合成领域近年来发展迅速" zh.wav -l ZH
|
||
```
|
||
|
||
The full API documentation may be found using:
|
||
|
||
```bash
|
||
melo --help
|
||
```
|
||
|
||
### Python API
|
||
|
||
#### English with Multi 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
|
||
|
||
# Default accent
|
||
output_path = 'en-default.wav'
|
||
model.tts_to_file(text, speaker_ids['EN-Default'], output_path, speed=speed)
|
||
|
||
# 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)
|
||
|
||
```
|
||
|
||
### 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)
|
||
```
|
||
|
||
## License
|
||
|
||
This library is under MIT License, which means it is free for both commercial and non-commercial use.
|
||
|
||
## Acknowledgements
|
||
|
||
This implementation is based on several excellent projects, [TTS](https://github.com/coqui-ai/TTS), [VITS](https://github.com/jaywalnut310/vits), [VITS2](https://github.com/daniilrobnikov/vits2) and [Bert-VITS2](https://github.com/fishaudio/Bert-VITS2). We appreciate their awesome work!
|