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
Если вы столкнулись с проблемами с Cublas:
pip uninstall nvidia_cublas_cu11
Крошечные эс
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.ckpt
--infer-device cpu --text "the quick brown fox jumps over the lazy dog" --wav-filename fox.wav
Выходной файл находится в результате outputs . Воспроизвести файл WAV:
ffplay outputs/fox.wav
После загрузки весов его можно повторно:
python3 demo.py --checkpoint tiny_eng_266k.ckpt --infer-device cpu
--text "In additive color mixing, which is used for displays such as computer screens and televisions, the primary colors are red, green, and blue."
--wav-filename color.wav
Воспроизведение:
ffplay outputs/color.wav
Маленький эс
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/small_eng_952k.ckpt
--infer-device cpu --n-blocks 3 --reduction 2
--text "Bees are essential pollinators responsible for fertilizing plants and facilitating the growth of fruits, vegetables, and flowers. Their sophisticated social structures and intricate communication systems make them fascinating and invaluable contributors to ecosystems worldwide."
--wav-filename bees.wav
Воспроизведение:
ffplay outputs/color-small.wav
Базовый эс
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/base_eng_4M.ckpt
--head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3 --infer-device cpu
--text "Why do bees have sticky hair?" --wav-filename bees-base.wav
Воспроизведение:
ffplay outputs/bees-base.wav
Графический процессор для вывода
И с длинным текстом. На A100 это может достичь RTF> 1300. Время, которое использует --iter 100 вариант.
python3 demo.py --checkpoint small_eng_952k.ckpt
--infer-device cuda --n-blocks 3 --reduction 2
--text "Once upon a time, in a magical forest filled with colorful flowers and sparkling streams, there lived a group of adorable kittens. Their names were Fluffy, Sparkle, and Whiskers. With their soft fur and twinkling eyes, they charmed everyone they met. Every day, they would play together, chasing their tails and pouncing on sunbeams that danced through the trees. Their purrs filled the forest with joy, and all the woodland creatures couldn't help but smile whenever they saw the cute trio. The animals knew that these kittens were truly the epitome of cuteness, bringing happiness wherever they went."
--wav-filename cats.wav --iter 100
Скомпилированный вариант поддерживается с использованием --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 valu> . По умолчанию максимальная длина фонема составляет 128. Например:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
Выберите папку набора данных: например, <data_folder> = /data/tts - каталог, где будет сохранен набор данных.
Скачать ljspeech:
cd <data_folder>
wget https://data.keithito.com/data/speech/LJSpeech-1.1.tar.bz2
tar zxvf LJSpeech-1.1.tar.bz2
Приготовьте набор данных: <parent_folder> - где эффективная печь была клонирована.
cd <parent_folder>/efficientspeech
Изменить config/LJSpeech/preprocess.yaml :
>>>>>>>>>>>>>>>>>
path:
corpus_path: "/data/tts/LJSpeech-1.1"
lexicon_path: "lexicon/librispeech-lexicon.txt"
raw_path: "/data/tts/LJSpeech-1.1/wavs"
preprocessed_path: "./preprocessed_data/LJSpeech"
>>>>>>>>>>>>>>>>
Замените /data/tts с помощью <data_folder> .
Загрузите данные выравнивания на preprocessed_data/LJSpeech/TextGrid отсюда.
Подготовьте набор данных:
python3 prepare_align.py config/LJSpeech/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
Es vs fs2 против Portaspeech против Lightspeech
Если вы найдете эту работу полезной, пожалуйста, укажите:
@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}
}