Сергей ЗЛОТНИКОВ (hardsoft@uct.kiev.ua)
Последние три-четыре
года все чаще задается один и тот же
вопрос: "На что тратится неуклонно
возрастающая вычислительная
мощность персональных компьютеров?"
Задумчиво мы сами себе отвечаем: "Не
на игрушки же". Так на что же?
Точнее всего определил проблему
основатель и теперешний владелец
небезызвестной Microsoft Corporation - Билл
Гейтс. Он авторитетно заявил, что
около трех четвертей всей мощности
системы уходит не на выполнение
полезной работы, а на обеспечение
удобного интерфейса.
Действительно, за последнее
время графическое оформление ОС и
прикладных программ прошло долгий
путь от алфавитно-цифрового,
предназначенного только для
специалистов в области ИТ, до простого
и удобного, понятного даже
начинающему пользователю. И недаром в
период господства аскетичной
скупости DOS, Norton Commander завоевал
огромную популярность. И причина
этого факта не в том, что панельки
весело синели на экране, а потому, что
пользователя наконец-то избавили от
необходимости говорить на "машинном"
языке. Вместо того, чтобы тщательно
вводить в командную строку зачастую
маловразумительные команды, любой
чайник, клацая по определенным
клавишам, мог просто скопировать файл
в нужное место.
Но, как говорится, совершенству нет
предела, и многие убеждены, что
современный ПК пока еще крайне
неудобен для человека. Дело в том, что
и у очень эффективного метода
визуализации данных, проще говоря, у
графического интерфейса, существует
недостатки. Ведь в данном случае все
строится на письменном обмене
информацией с пользователями, в то
время как повседневно мы общаемся
чаще всего не с помощью писем, а
словами. И выгода налицо, очевидно, что
любой человек говорит значительно
быстрее, чем пишет. Поэтому
напрашивается вывод - общение
человека с компьютером посредством
клавиатуры и мыши - вынужденный
компромисс.
Но, оказывается, идея говорящего и
понимающего устную речь компьютера не
так уж и фантастична. Но прежде
давайте внимательнее проанализируем
работу пользователя. Что же
получается? Основную часть времени и
сил занимает оцифровка данных.
Естественно, в целях ускорения
процесса было бы удобнее прослушать
поступающую корреспонденцию или
надиктовать текст. Вряд ли кто-нибудь
откажется от такой возможности устным
распоряжением запустить текстовый
редактор, надиктовать письмо или
отправить его адресату. Итак, перед
вами открываются большие перспективы
- например, вы сможете по телефону
строго спросить у своего PC: "Пришло
что-нибудь по электронной почте?"
или "Посмотри номер Васи Пупкина в
записной книжке". И не надо таскать
за собой ноутбук c модемом или PDA. Не
знаю, кому как, а мне нравится.
Еще в середине шестидесятых люди
попытались обучить вычислительную
технику говорить и слушать, именно это
побудило целый ряд военных научных
центров, прежде всего американских,
заняться исследованиями в данной
области.
Как же будут работать такие системы?
Во-первых, система состоит из двух
основных технологий: распознавания
речи (speech recognition (SR)) и речевого
синтеза, обычно называющегося text-to-speech
или сокращенно TTS, так как речь
обычно синтезируется из текстовых
данных. На рис. 1 показана архитектура
типичной программы TTS Engine.

Процесс пошел, когда программа
получает строку текста вроде: "Мужчина
вышел из оф.56 НБУ". Модуль
текстового анализа преобразует
числа в слова, идентифицирует
пунктуацию типа запятых, точек,
расшифровывает аббревиатуры и
сокращения. Текстовый анализ - задача
подчас сложная, потому что язык всегда
многозначен. Человек воспринимает
каждое слово, фразу в контексте и
смысловом (например, слово в
предложении), и бытовом (т. е. значение
играю и обстановка, и ситуация, и
знания собеседника) - компьютер не
владеет такой информацией, поэтому в
его работе и возникают ошибки. Но как
только программе удалось полностью
преобразовать текст в слова, она
расставляет ударения, интонирует
фразу, определяет громкость, темп,
мелодику.
Затем TTS ищет слова в словаре
произношения или выполняет некоторый
алгоритм, чтобы разбить их на фонемы.
Чтобы добиться результата, в
последнем случае то же придется
делать постоянный отбор. Связано это с
тем, что на произношение звука влияет
и его позиция в слове (под ударением
звуки четкие, а в безударном положении
или в конце слова "смазываются",
"глотаются" - это так называемое
редуцирование), и соседние звуки (допустим,
на "с" в слове "солнце"
влияет "о" - в лингвистике это
принято называть лабиализацией; ср.
"сила" - в этом случае мы слышим
несколько иную "с", с большой "примесью"
"и"). Теперь вам понятно, какие
танталовы муки испытывают
разработчики, насколько сложный
алгоритм применяется, чтобы учесть
все эти нюансы, чтобы правильно
рассмотреть контекст. Итого, в
результате такого анализа слова в
предложении разбиваются на фонемы.
Итак, фонемы проанализированы, и
информация о том, как их надо
произносить, находится в базе данных,
где звучание представлено в численном
виде. Как уже отмечалось выше,
соседство для фонемы не безразлично,
поэтому в такой базе данных
насчитывается до несколько тысяч
позиций. После дополнительной
обработки, сглаживающей переходы
между фонемами, цифровой звуковой
сигнал отправляют на сигнальный
процессор устройства вывода, например,
на звуковую плату PC.
Если выше речь шла о TTS-технологии,
теперь на рис. 2 предлагаем вам
ознакомиться с универсальной схемой программы
распознавания речи.

Когда человек говорит, sound
blaster'ом компьютера звуковые волны
преобразуются в цифровой звук.
Вначале, чтобы извлечь значимую
звуковую информацию из произнесенной
фразы, звуковой поток конвертируется модулем
частотного анализа в оптимальный
формат. Допустим, вы дважды записали
на компьютер слово "да", а затем
сопоставили полученные формы волны.
Несмотря на то, что результаты друг на
друга похожи, вам не удастся составить
никакого алгоритма, благодаря
которому их можно было бы сравнивать и
признать за один и тот же звук. Однако
после применения некоторых довольно
сложных математических методов, в
частности преобразования Фурье, и
такое вам будет по плечу.
Далее модулем распознавания фонемы преобразованный
звук раскладывается на фонемы,
алгоритм ищет соответствующую фонему
в базе данных "звук-фонема", где
содержится несколько тысяч позиций,
содержащих шаблон, который описывает
специфическое звучание фонемы. Хотя
теоретически можно использовать базу
фонем из программ TTS, в принципе это не
практикуется.
Поскольку на процесс сравнения звуков
с несколькими тысячами фонем
расходуется много ресурсов, программа
распознавания речи содержит модуль
предсказания фонем. Определяя с
некоторой долей вероятности фонемы,
которые могут встретиться в контексте,
он сужает число кандидатов. Например,
одни фонемы редко встречаются в
начале или в конце слова, другие -
избегают определенного соседства.
Затем с помощью базы данных
предсказания слов список еще более
сокращается, например, устраняются те
фонемы, которые не выполняют
слообразовательной функции. Допустим,
программе удалось распознать "да".
Естественно, она будет ожидать или
нового слова или продолжения,
например, звука "т" ("дата"),
"ч" ("дача") etc., но отнюдь не
"з", ведь "даз" - это и не
слово, и не начало слова (возможно,
после исследования речи младенца вы и
опровергните такое утверждение, но
подобная форма языка еще не
поддерживается современными
программами :-)). Этот заключительный
этап значительно сокращает
вычисление, поэтому для работы вам
подойдет даже 33 MГц 486-ого или
эквивалентный PC. Как только фонемы
проанализированы, они составляются
в слова, на чем задачу распознавания
можно считать успешно выполненной.
Если синтезирование речи - задача
выполнимая, при распознавании речи
исследователям пришлось столкнуться
с рядом серьезных проблем, многие из
которых не удалось решить и по сей
день. Если "перевести" фразу в
фонемы - задача сложная, но решаемая,
так как, во-первых, выделяется
конечное число фонем, во-вторых,
вариации на тему фонем в реальной речи
поддаются описанию и
структурированию, то
проанализировать фразу с точки зрения
лексики, морфологии и синтаксиса,
учитывая и просодическую систему
языка (например, ударение, паузу, темп,
тембр, мелодику) etc, очень и очень
затруднительно. Безусловно, в языке
существуют способы членения фразы на
слова, а слова на слоги, но привести их
к одному знаменателю, единому
алгоритму почти невозможно.
Когда человек, владеющий определенным
языком, слышит обращенную к нему
реплику, несмотря на различие в уровне
языковой практики, он владеет ключом к
расшифровке смысла, с детства им
усваивались связи, существующие
внутри сложнейшей организации языка,
языка как системы систем, языка как
иерархически упорядоченного системно-структурного
образования. Компьютеру же приходится
слишком многому учиться, он должен не
только произнести или услышать звук,
он должен понять смысл, определить
словоформу, составить все в
словосочетания и предложения, потом
обобщить это все на уровне текста, и
вдобавок "осознать", что, кто и
как от него требует, а вдруг некто
просто захотел подшутить.
Еще одна распространенная проблема
состоит в том, что программы
распознавания любят "ослушиваться".
Приведем в качестве примера слова
специалистов Microsoft. Как пишет Майк
Розак (Mike Rozak) в "Microsoft Systems Journal",
если пользователь говорит: "What mime is
it?" или "What mines it?" - не исключено,
что программа распознавания услышит:
"What time is it?" Иногда, даже если
пользователь говорит нечто такое, как
"Go away, you slime", программа вновь
признает в этом "What time is it?"
Несмотря на возникшие трудности,
человеку все равно очень хотелось
поговорить. Так как задача синтеза/распознавания
речи стала выполнимой на обычных РС,
со временем за дело взялись не только
военные специалисты - были
разработаны многочисленные образцы
"речевого" программного
обеспечения, поставляющегося как в
комплекте мультимедиа PC и звуковых
плат, так и отдельно.
Но для нас самыми интересными тут
будут "наши" разработки, так как
они позволяют общаться с машиной на
родном языке. Еще в 1993 году
появилсь продукт белорусских
программистов - синтезатор русской
речи "Фонемафон" (http://hotfiles.narod.ru/speech/fon.rar,
510 Кб). По словам разработчиков, это был
наукоемкий программный продукт, в
котором реализовалась модель устного
чтения человеком произвольного
текста. С точки зрения пользователя,
"Фонемафон" - это новое средство
для осуществления голосового вывода
информации из ПК, дополняющее, а
иногда заменяющее визуальный вывод на
дисплей. Теперь пользователь смог
получать часть информации с голоса. Он
имел доступ к машине, даже в отдалении
от нее, а если использовал
дополнительный телефонный интерфейс,
мог передавать или получать речевую
информацию по телефону.
На то время эта программа оказалось по-настоящему
революционной, но, к сожалению, она
имела недостатки. Так, требовалось,
чтобы тексты речевых сообщений были
подготовлены на должном уровне.
Конечно, синтезатор мог озвучить
любой текст без какой-то
дополнительной редакции, но правильно
интонированная фраза получалась
только, когда были расставлено
ударение, например: Все+ гото+во к за+пуску
програ+ммы с диске+ты, устано+вленной
на э+том устро+йстве.
Из более современных хотелось бы
выделить программу Dragon Dictate с
русской локализацией "Горыныч",
"Говорящую мышь" - и это
далеко не полный список.
Что же мешало широкому
распространению технологий
распознавания текста? Ответить на
этот вопрос не мудрено, - отсутствие
стандарта. Вроде бы, все программы
поддерживали одинаковые возможности,
но каждый речевой движок имел свои
особенности и собственный API. Итак,
если вы хотели использовать речь в
своем приложении, нужно было выбрать
определенный готовый движок и
написать программу с учетом всех его
особенностей. Естественно, прогресс
не стоял на месте - появлялся новый
движок, программу для совместимости с
новым API приходилось изменять. А когда
возникал вопрос, какой же движок
использовать (соответственно, какой API),
многие разработчики предпочитали
вообще отказаться от поддержки речи.
И тут за дело взялась Microsoft.
Ее Microsoft Speech API - попытка решить
данную проблему. Продвигая SAPI как
единый промышленный стандарт
речевого интерфейса, компания
надеется вдохновить разработчиков
писать приложения с поддержкой речи.
Что же представляет собой разработка?
Прежде всего, стандартный интерфейс, в
соответствии с которым разработчики
приложений и речевых движков могут
создавать свои программы - таким
образом решалась проблема
совместимости, ведь закономерно, что
все программные продукты,
соответствующие SAPI, автоматически
являются совместимыми друг с другом.
По сути речь идет о программной
прослойке между прикладными
приложениями и речевыми движками,
принцип действия которой показан на
рис. 3.

Действительно, API
стал стандартом в индустрии,
появилось множество программ,
использующих данный интерфейс. Microsoft
не остановилась на достигнутом и
разработала собственные движки для
распознавания и синтеза речи. А
программка Microsoft Agent может
взаимодействовать с различными
приложениями и озвучивать их с
помощью разнообразных персонажей. 5
июля 2000 года вышли движки от Microsoft на
русском языке. При этом сервис
бесплатный. Узнать подробнее и все это
выкачать можно на сайте http://msdn.microsoft.com/workshop/c-frame.htm#/
workshop/imedia/agent/default.asp.
Очередным свидетельством
популярности Microsoft'ского интерфейса
стало создание web-кольца - целого
ряда тематических ресурсов,
объединенных одной тематикой.
Навигатор этого кольца - http://nav.webring.org/hub?ring=agent&page=1.
На этих сайтах вы найдете множество
различных утилит, информацию и многое-многое
другое о Speech API. Если и этого вам
покажется мало, фирма Elan
предлагает свой вариант бесплатных
движков, включая русский, по адресу http://msdn.microsoft.com/workshop/imedia/agent/agentdevdl.asp
вы найдете все необходимое, чтобы
создать их самостоятельно. А
программку для чтения (http://www.elantts.com/agent).
Так что побольше общайтесь с
компьютером - доложу я вам, интересный
собеседник получается - слова
понимает и все на лету схватывает. А в
ответах строг, лаконичен и умен.
Источник: http://www.mycomp.com.ua/
|