Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

Подготовка данных для распознавания речи нейронной сетью

Разбираюсь с распознаванием речи с помощью нейронных сетей. Нашел довольно много информации об устройстве самих сетей, а вот с примерами их работы посложнее.
Допустим есть у меня какая-то сеть с N входами и M выходами. И есть звуковой сигнал с каким-то текстом. Как все это заставить работать вместе?
Получили мы, допустим, с помощью преобразования Фурье спектр. Ну можем как-то нарезать звуковой сигнал на какие-то мелкие кусочки. Опять же, как их выбрать длину куска? И что делать дальше? Что подавать на вход сети? И что сеть на выходе обычно дает? Буквы, соответствующие звукам или еще что-либо? (Допустим, стоит задача получить произнесенное предложение в текстовом виде)
Мне интересен сам алгоритм, как все это происходит от произнесения фразы человеком до получения этой фразы в текстовом виде. Информация, которую я находил освещает обычно либо работу нейронной сети, либо преобразование Фурье. Но как все это работает вместе - не очень понятно.


Ответ

Тема слишком обширная для краткого ответа - ваш вопрос - это повод для хорошего исследования. Однако, гипотезы выдвигать никто не запрещает.
Нейронные сети должны принимать на вход вектор признаков фиксированного размера. Значит нужно как-то нормализовать длину входного вектора. В вопросе вы указали, что есть коэффициенты Фурье после преобразования текста. Тексты бывают очень разной длины и чтобы получить одинаковое количество коэффициентов, длительность сигнала тоже должна быть одинаковой. К тому же найти корпус для обучения по текстам будет проблемой - такой корпус будет иметь монструозные размеры и неприемлимо большое время обучения. Вместо текста можно брать отдельные слова - текст можно разделить на слова, ориентируясь на паузы между словами. Следуя этой логике можно спуститься еще ниже и распознавать отдельные слоги или звуки. Вот пример для слова РОВНО

Здесь изображен сигнал с нормализованной амплитудой + плюс я обрезал паузу в начале записи. Как видно, между слогами очень осязаемая пауза и весь текст можно последовательно нарезать на такие отрезки - на мой взгляд с такими маленькими единицами информации работать легче, чем целиком со словами. Далее эти куски можно выровнять по длительности (по количеству сэмплов), вычислить коэффициенты и обучать или распознавать. Обучение это также отдельный большой вопрос, как и распознавание, а точнее, что делать после распознавания. Например, слово распозналось неверно и его нет в словаре.

Комментариев нет:

Отправить комментарий