Этот проект является частью Mozilla Common Voice.
Цель Mozilla TTS — создание системы преобразования текста в речь на основе глубокого обучения, которая будет низкой по стоимости и высокой по качеству.
Вы можете ознакомиться с некоторыми образцами синтезированной речи здесь.
Если вы новичок, вы также можете найти здесь краткую статью о некоторых архитектурах TTS и здесь список актуальных исследовательских статей.## Выполнение TTS
Текст-в-спектрограмму:
Методы внимания:
Кодировщик говорящего:
Вокодеры:
Вы также можете помочь нам реализовать больше моделей. Некоторые работы по TTS можно найти здесь.## Функции
dataset_analysis
.Установите TTS с помощью setup.py
. Это установит все зависимости автоматически и сделает TTS доступным для всех сред Python как обычный модуль Python.
python setup.py develop
Или вы можете использовать requirements.txt
для установки только зависимостей.pip install -r requirements.txt
|- notebooks/ (Jupyter-ноутбуки для оценки модели, выбора параметров и анализа данных.)
|- utils/ (общие утилиты.)
|- TTS
|- bin/ (папка для всех исполняемых файлов.)
|- train*.py (обучение вашей целевой модели.)
|- distribute.py (обучение модели TTS с использованием нескольких GPU.)
|- compute_statistics.py (вычисление статистик датасета для нормализации.)
|- convert*.py (конвертация целевой модели torch в TF.)
|- tts/ (модели преобразования текста в речь)
|- layers/ (определения слоев модели)
|- models/ (определения моделей)
|- tf/ (утилиты и реализации моделей на Tensorflow 2)
|- utils/ (специфические утилиты для моделей.)
|- speaker_encoder/ (Модели кодировщика говорящего.)
|- (также)
|- vocoder/ (Модели вокодера.)
|- (также)
Docker-образ создан @synesthesiam и размещён в отдельном репозитории с последними моделями LJSpeech.## Опубликованные модели Пожалуйста, посетите нашу вики.
Ниже представлено состояние модели Tacotron после 16 000 итераций с размером батча 32 и датасетом LJSpeech.
"Недавние исследования в Гарварде показали, что медитация в течение 8 недель может увеличить серое вещество в тех частях мозга, которые отвечают за эмоциональную регуляцию и обучение."
Примеры аудио: soundcloud
TTS предоставляет универсальный загрузчик данных, который легко использовать для вашего собственного датасета.
Вам просто нужно написать простую функцию для форматирования датасета. Проверьте datasets/preprocess.py
для примеров.
После этого вам нужно настроить поля dataset
в config.json
.
Некоторые из публичных датасетов, на которых успешно применялась TTS:
metadata.csv
на подмножества для обучения и валидации соответственно metadata_train.csv
и metadata_val.csv
. Обратите внимание, что для преобразования текста в речь, производительность валидации может быть вводящей в заблуждение, так как значение потерь не напрямую измеряет качество голоса для человеческого уха и также не измеряет производительность модуля внимания. Поэтому, запуск модели с новыми предложениями и прослушивание результатов является лучшим способом.shuf metadata.csv > metadata_shuf.csv
head -n 12000 metadata_shuf.csv > metadata_train.csv
tail -n 1100 metadata_shuf.csv > metadata_val.csv
Чтобы обучить новую модель, вам нужно определить свой собственный файл config.json
(проверьте пример) и вызвать командой ниже. Вы также устанавливаете архитектуру модели в config.json
.
python TTS/bin/train.py --config_path TTS/tts/configs/config.json
Чтобы настроить модель, используйте --restore_path
.
python TTS/bin/train.py --config_path TTS/tts/configs/config.json --restore_path /путь/к/вашей/модели.pth.tar
Чтобы продолжить старую сессию обучения, используйте --continue_path
.
python TTS/bin/train.py --continue_path /путь/к/вашей/сессии/обучения/
Для обучения на нескольких GPU используйте distribute.py
. Это позволяет процессу-ориентированному обучению на нескольких GPU, где каждый процесс использует одну GPU.
CUDA_VISIBLE_DEVICES="0,1,4" TTS/bin/distribute.py --config_path TTS/tts/configs/config.json
Каждая сессия обучения создает новый выходной каталог и config.json
копируется в этот каталог.
В случае ошибки или прерывания выполнения, если ещё нет checkpoint под каталогом выходных данных, весь каталог будет удалён. Вы также можете использовать Tensorboard, если укажете аргумент Tensorboard --logdir
на экспериментальную папку.
Этот репозиторий подчиняется кодексу поведения и правилам этикета Mozilla. Для получения дополнительной информации, пожалуйста, ознакомьтесь с правилами участия сообщества Mozilla.
Пожалуйста, отправляйте свои Pull Request на ветку dev
. Перед отправкой Pull Request проверьте свои изменения на наличие базовых ошибок и проблем со стилем с помощью linter. В этом репозитории установлен cardboardlinter, поэтому, например, если вы внесли изменения и хотите запустить linter только на изменённом коде, вы можете использовать следующую команду:
pip install pylint cardboardlint
cardboardlinter --refspec master
```## Руководство по совместной экспериментации
Если вы хотите использовать TTS для тестирования новой идеи и хотите поделиться своими экспериментами с сообществом, мы рекомендуем следовать следующим правилам для лучшего сотрудничества.
(Если у вас есть идеи для улучшения сотрудничества, дайте нам знать)
- Создайте новую ветку.
- Откройте issue, указывающий на вашу ветку.
- Опишите свой эксперимент.
- Поделитесь своими результатами по мере продвижения. (Лог-файлы Tensorboard, аудио-результаты, визуализации и т. д.)
- Используйте набор данных LJSpeech (для английского языка), если вы хотите сравнивать результаты с выпущенными моделями. (Это самый открытый масштабируемый набор данных для быстрых экспериментов)## [Контакт/Получение помощи](https://github.com/mozilla/TTS/wiki/Contact-and-Getting-Help)
## Основные задачи
- [x] Реализовать модель.
- [x] Сгенерировать человеческое звучание речи на наборе данных LJSpeech.
- [x] Сгенерировать человеческое звучание речи на другом наборе данных (Nancy) (TWEB).
- [x] Обучить TTS с r=1 успешно.
- [x] Включить распределённое обучение на основе процессов. Подобно (https://github.com/fastai/imagenet-fast/).
- [x] Адаптация нейрального вокодера. TTS работает с WaveRNN и ParallelWaveGAN (https://github.com/erogol/WaveRNN и https://github.com/erogol/ParallelWaveGAN)
- [ ] Многоспикчерное вложение.
- [x] Оптимизация модели (экспорт модели, обрезка модели и т.д.)<!--## Ссылки
- [Эффективное нейронное синтезирование аудио](https://arxiv.org/pdf/1802.08435.pdf)
- [Модели на основе внимания для распознавания речи](https://arxiv.org/pdf/1506.07503.pdf)
- [Генерация последовательностей с использованием рекуррентных нейронных сетей](https://arxiv.org/pdf/1308.0850.pdf)
- [Char2Wav: Конечная модель синтеза речи](https://openreview.net/pdf?id=B1VWyySKx)
- [VoiceLoop: Подгонка голоса и синтез через фонетический цикл](https://arxiv.org/pdf/1707.06588.pdf)
- [WaveRNN](https://arxiv.org/pdf/1802.08435.pdf)
- [Faster WaveNet](https://arxiv.org/abs/1611.09482)
- [Parallel WaveNet](https://arxiv.org/abs/1711.10433)
-->### Ссылки
- https://github.com/keithito/tacotron (Предварительная обработка данных)
- https://github.com/r9y9/tacotron_pytorch (Исходная архитектура Tacotron)
- https://github.com/kan-bayashi/ParallelWaveGAN (библиотека вокодера)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )