Это официальная реализация кода? Matcha-TTS [ICASSP 2024].
Мы предлагаем? Matcha-TTS, новый подход к неавторегрессивным нейронным TTS, который использует условное сопоставление потока (аналогично выпрямленным потокам) для ускорения синтеза речи на основе ODE. Наш метод:
Проверьте нашу демо -страницу и прочитайте нашу бумагу ICASSP 2024 для получения более подробной информации.
Предварительно обученные модели будут автоматически загружены с помощью интерфейса CLI или Gradio.
Вы также можете попробовать? Matcha-TTS в вашем браузере на Huggingface? пробелы.
conda create -n matcha-tts python=3.10 -y
conda activate matcha-tts
pip install matcha-ttsиз источника
pip install git+https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTS
pip install -e . # This will download the required models
matcha-tts --text " <INPUT TEXT> "или
matcha-tts-app или Open synthesis.ipynb на ноутбуке Jupyter
matcha-tts --text " <INPUT TEXT> "matcha-tts --file < PATH TO FILE >matcha-tts --file < PATH TO FILE > --batchedДополнительные аргументы
matcha-tts --text " <INPUT TEXT> " --speaking_rate 1.0matcha-tts --text " <INPUT TEXT> " --temperature 0.667matcha-tts --text " <INPUT TEXT> " --steps 10Давайте предположим, что мы тренируемся с речью LJ
Загрузите набор данных отсюда, извлеките его в data/LJSpeech-1.1 и подготовите списки файлов, чтобы указать на извлеченные данные, как для пункта 5, в настройке репозиции NVIDIA Tacotron 2.
Клон и введите репозиторий Matcha-TTS
git clone https://github.com/shivammehta25/Matcha-TTS.git
cd Matcha-TTSpip install -e .configs/data/ljspeech.yaml и изменить train_filelist_path : data/filelists/ljs_audio_text_train_filelist.txt
valid_filelist_path : data/filelists/ljs_audio_text_val_filelist.txtmatcha-data-stats -i ljspeech.yaml
# Output:
#{ ' mel_mean ' : -5.53662231756592, ' mel_std ' : 2.1161014277038574} Обновите эти значения в configs/data/ljspeech.yaml под ключом data_statistics .
data_statistics: # Computed for ljspeech dataset
mel_mean: -5.536622
mel_std: 2.116101на пути вашего поезда и проверки файлов.
make train-ljspeechили
python matcha/train.py experiment=ljspeechpython matcha/train.py experiment=ljspeech_min_memorypython matcha/train.py experiment=ljspeech trainer.devices=[0,1]matcha-tts --text " <INPUT TEXT> " --checkpoint_path < PATH TO CHECKPOINT > Особая спасибо @mush42 за реализацию поддержки Export и вывода ONNX.
Можно экспортировать контрольно -пропускные пункты Matcha в ONNX и запустить вывод на экспортируемом графике ONNX.
Чтобы экспортировать контрольно -пропускной пункт в ONNX, сначала установите ONNX с
pip install onnxЗатем запустите следующее:
python3 -m matcha.onnx.export matcha.ckpt model.onnx --n-timesteps 5Необязательно, экспортер ONNX принимает аргументы Vocoder-Name и Vocoder-checkpoint . Это позволяет вам внедрить Vocoder в экспортируемый график и генерировать сигналы в один запуск (аналогично системам TTS).
Обратите внимание , что n_timesteps рассматривается как гиперпараметр, а не как ввод модели. Это означает, что вы должны указать его во время экспорта (не во время вывода). Если не указано, n_timesteps установлен на 5 .
ВАЖНО : На данный момент для экспорта необходимо TORCH> = 2,1.0, поскольку оператор scaled_product_attention не экспортируется в более старых версиях. Пока окончательная версия не будет выпущена, те, кто хочет экспортировать свои модели, должны установить Torch> = 2,1,0 вручную как предварительный выпуск.
Чтобы запустить вывод на экспортируемой модели, сначала установите onnxruntime с помощью
pip install onnxruntime
pip install onnxruntime-gpu # for GPU inferenceЗатем используйте следующее:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputsВы также можете управлять параметрами синтеза:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --temperature 0.4 --speaking_rate 0.9 --spk 0 Чтобы запустить вывод на графическом процессоре , обязательно установите пакет OnNxruntime-GPU , а затем передайте --gpu к команде вывода:
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --gpu Если вы экспортировали только Matcha в ONNX, это будет писать мель-спектрограмму как графики и массивы numpy в выходной каталог. Если вы встроили Vocoder в экспортируемый график, это будет писать аудиофайлы .wav в выходной каталог.
Если вы экспортировали только Matcha в ONNX, и вы хотите запустить полный трубопровод TTS, вы можете пройти путь к модели Vocoder в формате ONNX :
python3 -m matcha.onnx.infer model.onnx --text " hey " --output-dir ./outputs --vocoder hifigan.small.onnx Это будет записывать аудиофайлы .wav в выходной каталог.
Если набор данных структурирован как
data/
└── LJSpeech-1.1
├── metadata.csv
├── README
├── test.txt
├── train.txt
├── val.txt
└── wavsЗатем вы можете извлечь выравнивания уровня фонем из обученной модели Matcha-TTS, используя:
python matcha/utils/get_durations_from_trained_model.py -i dataset_yaml -c < checkpoint >Пример:
python matcha/utils/get_durations_from_trained_model.py -i ljspeech.yaml -c matcha_ljspeech.ckptили просто:
matcha-tts-get-durations -i ljspeech.yaml -c matcha_ljspeech.ckpt В DataSetConfig включите продолжительность загрузки. Пример: ljspeech.yaml
load_durations: True
или см. Примеры в конфигурации/эксперимент/ljspeech_from_durations.yaml
Если вы используете наш код или иным образом найдите эту работу полезной, пожалуйста, укажите нашу статью:
@inproceedings{mehta2024matcha,
title={Matcha-{TTS}: A fast {TTS} architecture with conditional flow matching},
author={Mehta, Shivam and Tu, Ruibo and Beskow, Jonas and Sz{'e}kely, {'E}va and Henter, Gustav Eje},
booktitle={Proc. ICASSP},
year={2024}
}
Поскольку этот код использует Lightning-Hydra-Template, у вас есть все силы, которые с ним идут.
Другой исходный код, который мы хотели бы отметить: