Компания Mozilla представила движок распознавания речи DeepSpeech 0.6
8 декабря 2019 года
Представлен выпуск развиваемого компанией Mozilla движка распознавания речи DeepSpeech 0.6, который реализует одноимённую архитектуру распознавания речи, предложенную исследователями из компании Baidu. Реализация написана на языке Python с использованием платформы машинного обучения TensorFlow и распространяется под свободной лицензией MPL 2.0. Поддерживается работа в Linux, Android, macOS и Windows. Производительности достаточно для использования движка на платах LePotato, Raspberry Pi 3 и Raspberry Pi 4.
В наборе также предлагаются обученные модели, примеры звуковых файлов и инструментарий для распознавания из командной строки. Для встраивания функции распознавания речи в свои программы предложены готовые к применению модули для Python, NodeJS, C++ и .NET (сторонними разработчиками отдельно подготовлены модули для Rust и Go). Готовая модель поставляется только для английского языка, но для других языков по прилагаемой инструкции можно обучить систему самостоятельно, используя голосовые данные (Архивная копия от 22 июля 2020 на Wayback Machine), собранные проектом Common Voice.
DeepSpeech значительно проще традиционных систем и при этом обеспечивает более высокое качество распознавания при наличии постороннего шума. В разработке не используются традиционные акустические модели и концепция фонем, вместо них применяется хорошо оптимизированная система машинного обучения на основе нейронной сети, которая позволяет обойтись без разработки отдельных компонентов для моделирования различных отклонений, таких как шум, эхо и особенности речи.
Обратной стороной подобного подхода является то, что для получения качественного распознавания и обучения нейронной сети движок DeepSpeech требует большого объёма разнородных данных, надиктованных в реальных условиях разными голосами и при наличии естественных шумов. Сбором подобных данных занимается созданный в Mozilla проект Common Voice (Архивная копия от 27 февраля 2020 на Wayback Machine), предоставляющий проверенный набор данных с 780 часами на английском языке (Архивная копия от 22 июля 2020 на Wayback Machine), 325 на немецком, 173 на французском и 27 часами на русском.
Конечной целью проекта Common Voice является накопление 10 тысяч часов c записями различного произношения типовых фраз человеческой речи, что позволит достичь приемлемого уровня ошибок при распознавании. В текущем виде участниками проекта уже надиктовано в сумме 4.3 тысячи часов, из которых 3.5 тысячи прошли проверку. При обучении итоговой модели английского языка для DeepSpeech использовано 3816 часов речи, кроме Common Voice охватывающей данные от проектов LibriSpeech, Fisher и Switchboard, а также включающей около 1700 часов транскрибированных записей радиошоу.
При использовании предлагаемой для загрузки готовой модели английского языка уровень ошибок распознавания в DeepSpeech составляет 7.5% при оценке тестовым набором LibriSpeech. Для сравнения, уровень ошибок при распознавании человеком оценивается в 5.83%.
DeepSpeech состоит из двух подсистем - акустической модели и декодировщика. Акустическая модель использует методы глубинного машинного обучения для вычисления вероятности наличия определённых символов в подаваемом на вход звуке. Декодировщик применяет алгоритм лучевого поиска для преобразования данных о вероятности символов в текстовое представление.
Основные новшества DeepSpeech 0.6 (ветка 0.6 не совместима с прошлыми выпусками и требует обновления кода и моделей):
- Предложен новый потоковый декодировщик, обеспечивающий более высокую отзывчивость и не зависящий от размера обрабатываемых звуковых данных. В итоге, в новой версии DeepSpeech удалось снизить задержку на распознавание до 260 мс, что на 73% быстрее, чем раньше, и позволяет применять DeepSpeech в решениях для распознавания речи на лету.
- Внесены изменения в API и проведена работа по унификации имён функций. Добавлены функции для получения дополнительных метаданных о синхронизации, позволяющие не просто получать на выходе текстовое представление, но и отслеживать привязку отдельных символов и предложений к позиции в звуковом потоке.
- В инструментарий для обучения модули добавлена поддержка использования библиотеки CuDNN для оптимизации работы с рекуррентными нейронными сетями (RNN), что позволило добиться существенного (примерно в два раза) увеличения производительности обучения модели, но потребовало внесения в код изменений, нарушающих совместимость с моделями, подготовленными ранее.
- Минимальные требования к версии TensorFlow подняты с 1.13.1 до 1.14.0. Добавлена поддержка легковесной редакции TensorFlow Lite, при использовании которой размер пакета DeepSpeech уменьшен с 98 MB до 3.7 MB. Для использования на встраиваемых и мобильных устройствах с 188 MB до 47 MB также сокращён размер упакованного файла с моделью (для сжатия использован метод квантования после завершения обучения модели).
- Языковая модель переведена на другой формат структур данных, позволяющий выполнять маппинг файлов в память при загрузке. Поддержка старого формата прекращена.
- Изменён режим загрузки файла с языковой моделью, что позволило снизить потребление памяти и уменьшить задержки при обработке первого запроса после создания модели. В процессе работы DeepSpeech теперь потребляет в 22 раза меньше памяти и запускается в 500 раз быстрее.
- Проведена фильтрация редких слов в языковой модели. Общее число слов сокращено до 500 тысяч самых популярных слов, встречающихся в тексте, использованном при тренировке модели. Проведённая чистка позволила снизить размер языковой модели с 1800МБ до 900МБ, практически не повлияв на показатели уровня ошибок распознавания.
- Добавлена поддержка различных техник создания дополнительных вариаций (augmentation) звуковых данных, используемых при обучении (например, добавление к набору вариантов, в которые внесены искажения или шумы).
- Добавлена библиотека с биндингами для интеграции с приложениями на базе платформы .NET.
- Переработана документация, которая теперь собрана на отдельном сайте deepspeech.readthedocs.io.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.