[TC] конвертация текста в речь и наоборот -
Здравствуйте. В интернете есть огромное количество программ, позволяющих
конвертировать текст в речь. Но нет программ, позволяющих делать обратное
преобразование. Отсюда выходит вопрос: с точке зрения разработчика разве не
является ли задача перегонки речи в текст обратной к перегонки текста в
речь? Чем первая задача сложнее второй? Насколько я понимаю грубый алгоритм
такой: берем букву, по некоторой таблице сопоставляем ей конкретный звук из
таблицы с определенной частотой, длительностью. Обратная задача усложняется
лишь тем, что добавляется тембр. Но если весь документ озвучен одним
голосом, то нельзя ли его зафиксировать? Кто что может посоветовать почитать
на эту тему? Реально ли разработать под себя подобную прогу? (естесственно,
предполагаем, что звук монотонен и хорошо отфильтрован)
С уважением Константин minor04***@r*****.ru
Здравствуйте, Константин.
Ну это обратные задачи только по названию, но не по реализации.
По реализации - это принципиально отличающиеся алгоритмы и подходы.
Тем, что при text-to-speech у вас есть однозначный текст, которому вы
сопоставляете некие звуковые сигналы. В случае же speech-to-text у вас есть
высоковариативный набор звуковых сигналов, которым по вероятностным и
лексическим алгоритмам вы пытаетесь сопоставить некий текст. То есть при
speech-to-text исходный материал намного более сырой и требует несравнимо
более сложной обработки.
Нет, вариативность живой речи при произнесении одного и того же текста
огромна. К тому же мы работаем не с буквами, а с дифонами, которых намного
больше, чем букв.
Ваш алгоритм будет более-менее работать только в ситуации распознавания
синтезированной речи, отличающейся низкой вариативностью, а это задача
скорей высосанная из пальца и вряд ли актуальна в реальном мире.
Посмотрите для начала рассказы ЦРТ и Яндекса об их технологиях на Хабре. Это
должно дать представление о фундаментальности проблемы.
К тому же они используют различающиеся подходы, так что можно узнать сразу
несколько концепций. Например, за технологией Яндекса стоит громадная
статистическая база, которой вы, не являясь поисковой машиной, просто не
получите, да и без серьёзного кластера не обработаете.
Как home project, думаю, вряд ли. По крайней мере, если говорить о проценте
удачных распознаваний, который будет не стыдно произносить вслух.
Практика такова, что вопросами распознавания речи занимаются крупные команды
с фундаментальной теоретической базой, причём зачастую являющейся ноухау.
Все желающие уже берут у них STT просто как сервис.
Для домашних проектов, типа интерфейса голосового управления своей системой
умного дома, вполне реально бесплатно использовать API от Google или
Яндекса. Тех нескольких тысяч распознаваний в сутки, которые они дают,
должно вполне хватить.
Ну а если у вас какой-то крупный коммерческий проект, то закупайтесь
платными тарифными планами или встраиваемыми SDK от Nuance или ЦРТ.
На коленке реально писать алгоритмы распознавания чего-то менее
вариативного, нежели речь, например, хлопков в ладоши или свиста. Там,
действительно, просто сравниваете амплитуду колебания с эталонной,
рассчитываете условный коэффициент совпадения и, в зависимости от заданной
степени точности, даёте true или false. Например, можете написать утилиту,
выключающую компьютер по трём хлопкам.
Успехов. Никита.