NK
Несколько месяцев назад увлекся Deep Learning-гом. Решил постигать азы через Keras. Мне была интересна тема синтеза речи, в частности хотел попробовать синтезировать казахскую речь. Поковырял tacotron-ы, wavenet, и еще несколько моделей. Они мне показались сложными для понимания. Затем наткнулся на имплементацию этой модели https://arxiv.org/abs/1710.08969 (основана только сверточных сетях) на чистом tensorflow 1.3 и решил переписать его под версию 2.1, но уже через Keras API. Таким образом убить 2 зайца: изучить сам tensorflow, ну и Keras.
Логика построения глубоких нейронных сетей на Керас мне очень понравилась. Достаточно понятно для новичка.
Сперва поиграл с английским датасетом Линды Джонсон. Этот датасет весьма большой (24 часа). Из-за специфики английского языка он и должен быть большим, так как в их словах буквы произносятся (или не произносятся) в зависимости от того, где и как они расположены (ну Вы сами знаете). Чтобы нейронку этому научить применяют механизм attention (подробнее есть в доках). Грубо говоря, этот механизм "указывает", как звучит та или иная буква (тут я могу ошибаться).
Ко мне закралась идея, что казахскому языку потребуется гораздо меньшие датасет и время на обучение. Решил пробовать.
Создал небольшой датасет (1 ч. 25 мин.) и прогнал через сеть. Так и есть! Чтобы сносно (на 3) говорить на казахском языке нейронке требуется около часа тренировки на GPU Tesla T4. Конечно все зависит от качества датасета.
Послушать примеры можно в клетке Synthesyze в самом низу.
Я не спец в питоне, так что архитектура кода так себе )
https://colab.research.google.com/drive/1iEpFDknQBJYlEmYB4AP0cWZXd4VlQbVl?usp=sharing