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