Efficientspeek , или ES для короткометражных, является эффективной моделью нейронного текста для речи (TTS). Он генерирует спектрограмму MEL на скорости 104 (MRTF) или 104 сек речи за секунду на RPI4. Его крошечная версия имеет площадь всего 266 тыс. Параметров - около 1% только современных ТТ, таких как миклерты. Генерация 6 секунды речи потребляет только 90 мфлупов.
Эффективная речь -это неглубокий (2 блока!) Пирамидный трансформатор, напоминающий U-сеть. Upsampling осуществляется путем транспонированной глубины отдельной свертываемости.
Установить
ES в настоящее время мигрирует в Pytorch 2.0 и Lightning 2.0. Ожидайте нестабильные функции.
pip install -r requirements.txt
Скомпилированный вариант поддерживается с использованием --compile во время обучения или вывода. Для обучения, нетерпеливый режим быстрее. Тренировка крошечной версии составляет ~ 17 часов на A100. Для вывода скомпилированная версия быстрее. По неизвестной причине опция компиляции генерирует ошибки, когда --infer-device cuda .
По умолчанию Pytorch 2.0 использует 128 потоков процессора (AMD, 4 в RPI4), что вызывает замедление во время вывода. Во время вывода рекомендуется установить его на более низкое число. Например: --threads 24 .
Pytorch 2.0 медленнее на RPI4. Пожалуйста, используйте демо -релиз и веса модели ICASSP2023.
RTF на Pytorch 2.0 составляет ~ 1,0. RTF на Pytorch 1.12 составляет ~ 1,7.
В качестве альтернативы, пожалуйста, используйте версию ONNX:
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.onnx
--infer-device cpu --text "the primary colors are red, green, and blue." --wav-filename primary.wav
Только поддерживает фиксированную длину фонем ввода. При необходимости применяется заполнение или усечение. Измените с помощью --onnx-insize=<desired value> . По умолчанию максимальная длина фонема составляет 128. Например:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
Выберите папку набора данных: например, <data_folder> = /data/tts - каталог, где будет сохранен набор данных.
Скачать пользовательский набор данных KSS:
cd efficientspeech
mkdir ./data/kss
Скачать пользовательский набор данных KSS здесь
Приготовьте набор данных: <parent_folder> - где эффективная печь была клонирована.
cd <parent_folder>/efficientspeech
Изменить config/LJSpeech/preprocess.yaml :
>>>>>>>>>>>>>>>>>
path:
corpus_path: "./data/tts/kss"
lexicon_path: "lexicon/korean-lexicon.txt"
raw_path: "./data/tts/kss/wavs"
preprocessed_path: "./preprocessed_data/kss"
>>>>>>>>>>>>>>>>
Замените /data/tts с помощью <data_folder> .
Загрузите данные выравнивания на preprocessed_data/KSS/TextGrid отсюда.
Подготовьте набор данных:
python prepare_align.py config/kss/preprocess.yaml
python preprocess.py config/kss/preprocess.yaml
Это займет час или около того.
Для получения дополнительной информации: реализация Fastspeech2 для подготовки набора данных.
Крошечные эс
По умолчанию:
--precision=16 . Другие варианты: "bf16-mixed", "16-mixed", 16, 32, 64 .--accelerator=gpu--infer-device=cuda--devices=1utils/tools.py python3 train.py
Маленький эс
python3 train.py --n-blocks 3 --reduction 2
Базовый эс
python3 train.py --head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3
python3 demo.py --checkpoint ./lightning_logs/version_2/checkpoints/epoch=4999-step=485000.ckpt --text "그는 괜찮은 척하려고 애 쓰는 것 같았다." --wav-filename base.wav
Es vs fs2 против Portaspeech против Lightspeech
Для получения дополнительной информации, пожалуйста, обратитесь к следующим репозиториям:
synthesize.py , корейская функция Text2phoneme [✅]Если вы найдете эту работу полезной, пожалуйста, укажите:
@inproceedings{atienza2023efficientspeech,
title={EfficientSpeech: An On-Device Text to Speech Model},
author={Atienza, Rowel},
booktitle={ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={1--5},
year={2023},
organization={IEEE}
}