РАЗРАБОТКА СИСТЕМЫ РАСПОЗНАВАНИЯ РЕЧИ ДЛЯ ИНДЕКСИРОВАНИЯ И ПОИСКА В БОЛЬШОЙ КОЛЛЕКЦИИ МЕДИАФАЙЛОВ
|
Введение
Постановка задачи
Обзор литературы
Глава 1. Выбор инструментов для реализации задачи . . . . . . 12
1.1 Выбор аппаратного обеспечения
1.2 Выбор базовой архитектуры для построения системы
распознавания речи
1.3 Выбор источников данных для обучения акустической модели . . 13
1.3.1 Набор речевых данных с сайта VoxForge.org . . . . . . . . 14
1.3.2 Видео-хостинг YouTube
1.3.3 Записи радио-передач
1.3.4 Аудио-книги
1.3.6 Выбранные источники данных транскрибированной речи . 16
1.4 Выбор языка программирования
Глава 2. Структура и принцип работы акустической модели . 17
2.1 Структура нейронной сети
2.2 Описание процесса обучения акустической модели . . . . . . . . . 18
2.3 Функция потерь CTC Loss для обучения нейронной сети . . . . . 20
2.4 Вычисление результата предсказания с помощью максимального
декодирования (greedy search)
2.5 Вычисление результата предсказания с помощью лучевого
поиска (beam search)
2.6 Языковая модель
2.6.1 Использование языковой модели при декодировании CTC
матрицы
2.7 Выводы
Глава 3. Сбор данных для обучения акустической модели . . . 33
3.1 Формат набора данных
3.2 Создание корпуса речи с использованием аудио из видеофайлов
сервиса YouTube, а также сопоставленных пользовательских и
автоматически-сгенерированных субтитров . . . . . . . . . . . . . 34
3.3 Создание корпуса речи из аудио YouTube, разбиением по
промежуткам тишины и последующим подбором слов под
разбитые отрезки
3.4 Создание корпуса речи из записей и транскриптов передач «Эхо
Москвы»
3.4.1 Автоматическое выравнивание текста по аудио при
помощи утилиты aeneas
3.4.2 Автоматическое распознавание и вырезание рекламных
блоков и заставок из радио передач . . . . . . . . . . . . . 39
3.5 Наилучший из рассмотренных метод автоматического создания
корпуса речи
3.6 Автоматическая очистка корпуса речи от неверно-обрезанных
примеров с помощью промежуточной акустической модели . . . . 41
3.7 Выводы
Глава 4. Обучение модели
4.1 Контейнеризация процесса обучения с помощью технологии Docker 43
4.2 Обзор гиперпараметров обучения
4.3 Описание наборов данных, используемых в экспериментах . . . . 45
4.4 Структура экспериментов
4.5 Эксперименты
4.5.1 Оптимизация числа нейронов в скрытых слоях нейронной
сети
4.5.2 Обучение на всем наборе «yt-vad-1k-train» . . . . . . . . . 49
4.5.3 Обучение на всем наборе «yt-vad-650-clean-train» . . . . . . 51
4.5.4 Дообучение модели, обученной на данных
«yt-vad-1k-train», с помощью набора «yt-vad-650-clean-train» 53
4.5.5 Определение оптимальной размерности языковой модели . 54
4.6 Выводы
Глава 5. Создание системы индексации и поиска по речи,
распознанной в медиафайлах . . . . . . . . . . . . . . . . 56
5.1 Описание системы в целом
5.2 Компоненты системы
5.2.1 Модуль распознавания
5.2.2 Модуль индексации
5.2.3 Модуль поиска
5.3 Реализация
5.4 Выводы
Заключение
Список сокращений
Словарь терминов
Список литературы
Приложения
5.5 Реализация алгоритма префиксного поиска
5.6 Dockerfle контейнера для обучения модели
5.7 Реализация модуля распознавания для системы поиска по речи в
коллекции медиафайлов
5.8 Реализация модуля индексации для системы поиска по речи в
коллекции медиафайлов
5.9 Реализация модуля поиска для системы поиска по речи в
коллекции медиафайлов
Постановка задачи
Обзор литературы
Глава 1. Выбор инструментов для реализации задачи . . . . . . 12
1.1 Выбор аппаратного обеспечения
1.2 Выбор базовой архитектуры для построения системы
распознавания речи
1.3 Выбор источников данных для обучения акустической модели . . 13
1.3.1 Набор речевых данных с сайта VoxForge.org . . . . . . . . 14
1.3.2 Видео-хостинг YouTube
1.3.3 Записи радио-передач
1.3.4 Аудио-книги
1.3.6 Выбранные источники данных транскрибированной речи . 16
1.4 Выбор языка программирования
Глава 2. Структура и принцип работы акустической модели . 17
2.1 Структура нейронной сети
2.2 Описание процесса обучения акустической модели . . . . . . . . . 18
2.3 Функция потерь CTC Loss для обучения нейронной сети . . . . . 20
2.4 Вычисление результата предсказания с помощью максимального
декодирования (greedy search)
2.5 Вычисление результата предсказания с помощью лучевого
поиска (beam search)
2.6 Языковая модель
2.6.1 Использование языковой модели при декодировании CTC
матрицы
2.7 Выводы
Глава 3. Сбор данных для обучения акустической модели . . . 33
3.1 Формат набора данных
3.2 Создание корпуса речи с использованием аудио из видеофайлов
сервиса YouTube, а также сопоставленных пользовательских и
автоматически-сгенерированных субтитров . . . . . . . . . . . . . 34
3.3 Создание корпуса речи из аудио YouTube, разбиением по
промежуткам тишины и последующим подбором слов под
разбитые отрезки
3.4 Создание корпуса речи из записей и транскриптов передач «Эхо
Москвы»
3.4.1 Автоматическое выравнивание текста по аудио при
помощи утилиты aeneas
3.4.2 Автоматическое распознавание и вырезание рекламных
блоков и заставок из радио передач . . . . . . . . . . . . . 39
3.5 Наилучший из рассмотренных метод автоматического создания
корпуса речи
3.6 Автоматическая очистка корпуса речи от неверно-обрезанных
примеров с помощью промежуточной акустической модели . . . . 41
3.7 Выводы
Глава 4. Обучение модели
4.1 Контейнеризация процесса обучения с помощью технологии Docker 43
4.2 Обзор гиперпараметров обучения
4.3 Описание наборов данных, используемых в экспериментах . . . . 45
4.4 Структура экспериментов
4.5 Эксперименты
4.5.1 Оптимизация числа нейронов в скрытых слоях нейронной
сети
4.5.2 Обучение на всем наборе «yt-vad-1k-train» . . . . . . . . . 49
4.5.3 Обучение на всем наборе «yt-vad-650-clean-train» . . . . . . 51
4.5.4 Дообучение модели, обученной на данных
«yt-vad-1k-train», с помощью набора «yt-vad-650-clean-train» 53
4.5.5 Определение оптимальной размерности языковой модели . 54
4.6 Выводы
Глава 5. Создание системы индексации и поиска по речи,
распознанной в медиафайлах . . . . . . . . . . . . . . . . 56
5.1 Описание системы в целом
5.2 Компоненты системы
5.2.1 Модуль распознавания
5.2.2 Модуль индексации
5.2.3 Модуль поиска
5.3 Реализация
5.4 Выводы
Заключение
Список сокращений
Словарь терминов
Список литературы
Приложения
5.5 Реализация алгоритма префиксного поиска
5.6 Dockerfle контейнера для обучения модели
5.7 Реализация модуля распознавания для системы поиска по речи в
коллекции медиафайлов
5.8 Реализация модуля индексации для системы поиска по речи в
коллекции медиафайлов
5.9 Реализация модуля поиска для системы поиска по речи в
коллекции медиафайлов
За последние несколько лет отрасль машинного распознавания речи развивалась стремительно. Крупные компании, такие как Google, Microsoft и Яндекс, достигли [43; 48; 49] на сегодняшний день уровня 94-95% верного распознавания слов в речи, сокращая до нескольких процентов разрыв с человеческим
уровнем, оцениваемым в 96% [20].
С развитием технологий в области нейронных сетей и производства графических ускорителей, позволивших значительно увеличить скорость параллельных вычислений [8], появились проекты с использованием так называемых нейронных сетей глубокого обучения (Deep Neural Networks или DNN) [11; 14;
34; 46; 47]. В таких сетях, по сравнению с классическими, увеличено количество
скрытых слоев. Увеличение числа скрытых слоев позволило добиться значительного прогресса во многих задачах, считавшихся ранее доступными только для человека. Не исключением стала и задача распознавания речи.
Решения с использованием нейронных сетей для распознавания речи приходят на смену зарекомендовавшим себя реализациям с использованием скрытых марковских моделей (Hidden Markov Models, HMM) [41]. Решения, использующие HMM, требуют большего вмешательства человека [12] в отличие от
более современных методов, использующих нейронные сети. Появляются гибридные системы DNN-HMM, использующие нейронную сеть для предобработки в виде классификатора признаков для уменьшения размерности задачи для HMM [30; 51]. Кроме того, в последнее время решения на основе DNN начали
превосходить HMM по точности распознавания [14]. Особенно популярны в последнее время реализации, использующие нейронные сети от «начала и до конца» (End-to-End) [15; 16; 25]. Такие решения минимизируют участие человека в обучении модели, требуя от него лишь определения архитектуры нейронной сети и подготовки данных для тренировки.
Несмотря на значительный прогресс и адаптацию вышеприведенных методов в коммерческих продуктах, в сфере распознавания речи на сегодняшний день существует дефицит систем с открытым исходным кодом, способных достичь показателей, близких к человеческим. Особенно мало систем с поддержкой русского языка [1].
В данной работе рассмотрен процесс создания системы распознавания русской речи с использованием глубоких нейронных сетей, а также применения этой системы для текстового поиска по речи в большой коллекции медиафайлов. Описан принцип работы системы распознавания речи, основанной на использовании глубоких нейронных сетей и применении метода CTC
(Connectionist Temporal Classifcation) [12]. Также исследованы и реализованы
способы получения наборов данных для обучения нейронной сети из различных источников, проведено обучение нейронной сети на полученных данных с вариацией гиперпараметров и оценена точность получаемой модели. В конце работы приведена реализация примера возможного использования системы распознавания речи для поиска по речи в коллекции медиа-файлов.
За основу системы распознавания речи взят проект с отрытым исходным кодом Mozilla DeepSpeech по распознаванию английской речи с использованием DNN. Этот проект был начат в мае 2016 года и в ноябре 2017 достиг наименьшего уровня ошибки WER (Word Error Rate) в 6.5% на наборе данных LibriSpeech test-clean [3]. Проект основывается на работе группы исследователей из Baidu Research [16].
уровнем, оцениваемым в 96% [20].
С развитием технологий в области нейронных сетей и производства графических ускорителей, позволивших значительно увеличить скорость параллельных вычислений [8], появились проекты с использованием так называемых нейронных сетей глубокого обучения (Deep Neural Networks или DNN) [11; 14;
34; 46; 47]. В таких сетях, по сравнению с классическими, увеличено количество
скрытых слоев. Увеличение числа скрытых слоев позволило добиться значительного прогресса во многих задачах, считавшихся ранее доступными только для человека. Не исключением стала и задача распознавания речи.
Решения с использованием нейронных сетей для распознавания речи приходят на смену зарекомендовавшим себя реализациям с использованием скрытых марковских моделей (Hidden Markov Models, HMM) [41]. Решения, использующие HMM, требуют большего вмешательства человека [12] в отличие от
более современных методов, использующих нейронные сети. Появляются гибридные системы DNN-HMM, использующие нейронную сеть для предобработки в виде классификатора признаков для уменьшения размерности задачи для HMM [30; 51]. Кроме того, в последнее время решения на основе DNN начали
превосходить HMM по точности распознавания [14]. Особенно популярны в последнее время реализации, использующие нейронные сети от «начала и до конца» (End-to-End) [15; 16; 25]. Такие решения минимизируют участие человека в обучении модели, требуя от него лишь определения архитектуры нейронной сети и подготовки данных для тренировки.
Несмотря на значительный прогресс и адаптацию вышеприведенных методов в коммерческих продуктах, в сфере распознавания речи на сегодняшний день существует дефицит систем с открытым исходным кодом, способных достичь показателей, близких к человеческим. Особенно мало систем с поддержкой русского языка [1].
В данной работе рассмотрен процесс создания системы распознавания русской речи с использованием глубоких нейронных сетей, а также применения этой системы для текстового поиска по речи в большой коллекции медиафайлов. Описан принцип работы системы распознавания речи, основанной на использовании глубоких нейронных сетей и применении метода CTC
(Connectionist Temporal Classifcation) [12]. Также исследованы и реализованы
способы получения наборов данных для обучения нейронной сети из различных источников, проведено обучение нейронной сети на полученных данных с вариацией гиперпараметров и оценена точность получаемой модели. В конце работы приведена реализация примера возможного использования системы распознавания речи для поиска по речи в коллекции медиа-файлов.
За основу системы распознавания речи взят проект с отрытым исходным кодом Mozilla DeepSpeech по распознаванию английской речи с использованием DNN. Этот проект был начат в мае 2016 года и в ноябре 2017 достиг наименьшего уровня ошибки WER (Word Error Rate) в 6.5% на наборе данных LibriSpeech test-clean [3]. Проект основывается на работе группы исследователей из Baidu Research [16].
Итоги выполненной работы:
1. Рассмотрен принцип работы системы распознавания речи с применением глубоких нейронных сетей на основе архитектуры DeepSpeech.
2. Исследованы методы автоматического сбора данных для создания корпусов транскрибированной речи.
3. Созданы два корпуса русской транскрибированной речи «yt-vad-1k» и
«yt-vad-650-clean» объемом 1000 и 650 часов, пригодные для обучения современных систем распознавания речи с применением глубоких нейронных сетей.
4. Создана система распознавания русской речи, показывающая результат в 31% WER на корпусе речи с разнообразием голосов и шумов (набор данных «yt-vad-650-clean-test») и 21% WER на наборе с более чистой речью чтения текстов («voxforge-ru-clean-test»).
5. Создана система поиска по речи в большой коллекции медиафайлов с возможностью мгновенного перехода к воспроизведению искомого фрагмента.
Возможные применения результатов работы:
На основе метода создания корпуса транскрибированной речи для русского языка, предложенного в данной работе, могут быть собраны корпуса и для других языков. Архитектура DeepSpeech также имеет минимальное количество привязок к определенному языку (только задание алфавита), что позволяет использовать процесс обучения, описанный в данной работе, при создании систем распознавания речи для других языков. Известны успешные применения архитектуры DeepSpeech как для латинских языков, таких как английский, французский, так и для языков с гораздо большим размером алфавита, таких как китайский [15].
Дальнейшие перспективы разработки темы:
1. Дальнейшее исследование методов автоматического сбора корпусов транскрибированной речи и поиск источников для получения более качественных наборов данных.
2. Исследование применения других архитектур глубокой нейронной сети для повышения точности распознавания. Например, сравнение производительности при применении ячеек LSTM и GRU или рассмотрение
применения систем, основанных на механизме внимания вместо CTC.
3. Повышение скорости распознавания путем распараллеливания алгоритма лучевого поиска или переноса вычислений на графический ускоритель.
4. Исследование возможности применения архитектуры для распознавания на менее мощных ЭВМ (таких как мобильные устройства)
1. Рассмотрен принцип работы системы распознавания речи с применением глубоких нейронных сетей на основе архитектуры DeepSpeech.
2. Исследованы методы автоматического сбора данных для создания корпусов транскрибированной речи.
3. Созданы два корпуса русской транскрибированной речи «yt-vad-1k» и
«yt-vad-650-clean» объемом 1000 и 650 часов, пригодные для обучения современных систем распознавания речи с применением глубоких нейронных сетей.
4. Создана система распознавания русской речи, показывающая результат в 31% WER на корпусе речи с разнообразием голосов и шумов (набор данных «yt-vad-650-clean-test») и 21% WER на наборе с более чистой речью чтения текстов («voxforge-ru-clean-test»).
5. Создана система поиска по речи в большой коллекции медиафайлов с возможностью мгновенного перехода к воспроизведению искомого фрагмента.
Возможные применения результатов работы:
На основе метода создания корпуса транскрибированной речи для русского языка, предложенного в данной работе, могут быть собраны корпуса и для других языков. Архитектура DeepSpeech также имеет минимальное количество привязок к определенному языку (только задание алфавита), что позволяет использовать процесс обучения, описанный в данной работе, при создании систем распознавания речи для других языков. Известны успешные применения архитектуры DeepSpeech как для латинских языков, таких как английский, французский, так и для языков с гораздо большим размером алфавита, таких как китайский [15].
Дальнейшие перспективы разработки темы:
1. Дальнейшее исследование методов автоматического сбора корпусов транскрибированной речи и поиск источников для получения более качественных наборов данных.
2. Исследование применения других архитектур глубокой нейронной сети для повышения точности распознавания. Например, сравнение производительности при применении ячеек LSTM и GRU или рассмотрение
применения систем, основанных на механизме внимания вместо CTC.
3. Повышение скорости распознавания путем распараллеливания алгоритма лучевого поиска или переноса вычислений на графический ускоритель.
4. Исследование возможности применения архитектуры для распознавания на менее мощных ЭВМ (таких как мобильные устройства)



