Vox ex machine
АрхивМало кто знает, как человек общался с первыми вычислительными машинами. А происходило это таким образом: оператор брал в руки провода с двумя разъемами на конце и соединял между собой триггеры, из которых собственно и состояла машина, таким образом, чтобы при запуске выполнялась нужная последовательность команд. Внешне это очень напоминало манипуляции телефонных барышень начала века. А по сути - это была очень квалифицированная работа. Программирование осуществлялось даже, как бы это сказать, даже не в машинных командах, а на аппаратном уровне. Соответственно и квалификация тогдашних программистов была столь высокого уровня, что назвать их просто словом "программист" язык не поворачивается.
Потом задача упростилась, последовательность нужных команд стала записываться непосредственно в память машины, а для ее ввода стали применяться более скоростные и производительные устройства. Сначала это были группы тумблеров, переключая которые, оператор (или программист, - тогда эти понятия были во многом идентичны) мог набрать нужную команду и ввести ее в память машины. Затем появились перфокарты. Затем перфоленты. Скорость общения с машиной возросла. Количество ошибок при вводе резко уменьшилось. Но сущность этого общения, его характер не изменились.
Сам процесс общения с машиной долгое время оставался уделом специалистов, недоступным для понимания простыми смертными. Теми самыми "простыми смертными", которые, собственно говоря, и являлись потребителями компьютерных услуг. Они, эти самые потребители - бухгалтеры, математики, технологи, зачастую самой ЭВМ и в глаза-то не видели, и все общение с ней велось через посредника-"программиста". Компьютерный интерфейс на первых этапах развития компьютерной техники в качестве обязательного элемента непременно включал в себя человека-специалиста (что касается нашей страны, то здесь такое положение во многих местах сохранялось вплоть до начала девяностых, именно поэтому во многих конторах до сих пор имеют привычку назвать словом "программист" любого человека, способного различить пару клавиш на клавиатуре PC). Что, конечно по большому счету не потребителей не очень-то устраивало. Вот если бы можно было бы пообщаться с компьютером напрямую, да при этом еще и не загружать свой багаж знаний всяческими техническими компьютерными сведениями…
Такая возможность впервые возникла на т.н. малых машинах. Я до сих пор помню свои впечатления от знакомства с диалоговым интерфейсом. Это было чудовищное порождение советской промышленности под поэтическим названием "Наири". Конечно сейчас, задним умом я понимаю, что это было за убоище, но тогда диковинная возможность отстучать на клавиатуре адресованную непосредственно машине команду и получить осмысленный отклик казалась чудом. Особенно, если до тех пор весь процесс общения с машиной заключался в передаче в трясущиеся руки недоопохмелившегося лаборанта колоды перфокарт. С тем, чтобы через пару дней получить назад эту колоду с комментарием: "У вас тут ошибка, программа не пошла".
Именно поэтому измученным "программистозависимым интерфейсом" пользователям скудный диалоговый режим командной строки казался верхом совершенства. Именно ему сначала малые ЭВМ, а потом "персоналки" во многом были обязаны своим триумфальным шествием. Ведь теперь любой потребитель компьютерных услуг, мог не вдаваясь в технические трудности и выучив всего пару десятков команд операционной системы, сам общаться с компьютером без посредников. Именно тогда впервые возникает такое понятие, как "юзер", и именно появлению диалогового режима компьютерная традиция предписывает взлет и рацвет многих фирм, таких, например, как DEC.
А потом, появился его величество интерфейс графический, и общение с машиной еще более упростилось, необходимость в знании каких либо команд вообще отпала, и юзер стал общаться со своим железным другом на интуитивно понятном языке жестов. И на горизонте замаячил призрак звукового интерфейса…
Как-то совсем незаметно, исподволь, проблема интерфейса, которая на заре компьютерной эры казалась совершенно незначительной и малосущественной, приняла доминирующее значение. Плохо это или хорошо, но с каждым годом все больше внимания придается не тому, как компьютер работает, а то, как мы с ним общаемся. Может быть, я и ошибаюсь, но, по-моему, за последние полтора-два десятилетия компьютерная наука не вообще обогатилась какими-либо качественно новыми архитектурными решениями в области схемотехники или, скажем, идеологии функционирования компьютеров. Если и появляется что-либо новое, то это просто дальнейшее развитие или реанимация того, что в свое время было забыто или отложено до лучших времен. Все развитие компьютерной техники последних лет - это по сути всего лишь совершенствование интерфейса. И если мы чуть ли не каждый день слышим о появлении новых операционных систем, о новых и революционных решениях в области интерфейса, по появляющиеся новые модели процессоров даже если и содержат что-то новое по сравнению с предыдущими, это лишь реализация давно известных решений. Даже более того, любой "старый программист" не колеблясь скажет, что архитектурные решения многих современных компьютеров - это шаг назад по сравнению с тем, что было достигнуто двадцать и более лет назад.
А вот интерфейс шагает и шагает вперед. И его значение нельзя недооценивать. Сейчас в интернете вовсю циркулирует идея о том, что в скором будущем человечество разделится на две больших части: людей PC-совместимых и людей РС-несоместимых. Это действительно экспериментально подтвержденный факт, что довольно значительная часть человечества, просто в силу своих психологических особенностей, в силу особенностей мышления, неспособна освоить работу на компьютере в той мере, в какой это необходимо. Каждый, пожалуй, встречал у себя на работе людей, которые с обреченным видом тычут в клавиши компьютера и донимают соседей вопросами: "А почему у меня мышка не печатает?". И вовсе это не значит, что эти люди глупы или неспособны к обучению. Просто их психика, их мышление настроены так, что для них работа на компьютере - это задача повышенно сложности. Точно так же, как гениальный математик может быть неспособен к обучению иностранным языкам, а для великого поэта самой сложно задачей может стать научиться хорошо играть в шахматы.
На тему о PC-совместимости отдельных индивидов можно найти много серьезных психологических работ. Всерьез высказываются опасения о том, не уготовано ли в будущем для PC-несовместимых положение людей второго сорта. Короче, интересных материалов масса, и у меня одно время было даже стремление подготовить по этим материалам тему номера. Но, подумав, я отказался от этой идеи. И вот почему. Общение человека с компьютером - это как раз вопрос интерфейса. Поэтому, по большому счету, нельзя говорить о PC-несовметимости конкретного человека. Можно лишь говорить о конкретной реализации интерфейса, которая препятствует такой "совместимости". То есть проблема не носит фатального характера и легко снимается выбором "правильного" способа общения.
На начальном этапе, в период "программистозависимого интерфейса" почти сто процентов потребителей были "несовместимы" с компьютером. В эпоху командной строки - несколько десятков процентов. В эпоху графического интерфейса - еще меньше. Одна моя знакомая девушка, полностью пасуя перед 3.1, в 95 уже чувствует себя, как рыба в воде. Но я знаю и множество противоположных случаев, когда человек привыкший к командной строке, никак не может заставить себя перейти в "мастдайный" графический интерфейс. Да что там говорить, если чуть ли не половина пользователей, работая в Windows для копирования файлов вызывает из под DOS старый добрый "Нортон Командер".
Но как бы там ни было, вовсю продолжатся поиски такого интерфейса, который на сто процентов устроил бы всех. И на эту роль сейчас однозначно претендует интерфейс речевой. Собственно говоря, это как раз то, к чему человечество всегда стремилось в общении с компьютером. Еще в эпоху перфокарт во всех научно-фантастических романах, изображавших будущее, человек общался с компьютером именно голосом, точно так же как с другим представителем своего человеческого племени. "Послушай-ка, голубчик, говорил какой-нибудь будущий космонавт своему бортовому компьютеру, а рассчитай-ка ты мне курс на Альфу Центавра". "Извольте, - отвечал компьютер, - уже посчитал. На пять градусов правее надо взять, аккурат упремся".
И именно тогда, еще в эпоху перфокарт, или даже ранее, были предприняты первые шаги по реализации речевого интерфейса. Работы в этой области велись еще в то время, когда о доминирующем графическом интерфейсе еще никто даже и не помышлял. Все конкретные достижения, которые мы имеем в этой области ныне были заложены как раз тогда, а их теперешняя реализация обусловлена в основном тем, что компьютерная техника как раз достигла производительности, необходимой для их нормальной работы.
Но как бы то ни было, теоретические наработки в этой области мало изменились за прошедшие десятки лет, что заставляет некоторых специалистов крайне скептически относится к самой возможности реализации речевого интерфейса в ближайшие годы. Другие считают, что задача уже практически решена. Впрочем, все зависит от того, что следует считать решением этой задачи.
Собственно решение построения речевого интерфейса распадается на три составляющих.
- Первая задача состоит в том, чтобы компьютер мог "понять" то, что ему говорит человек, то есть он доложен извлечь из речи человека, содержащуюся в ней информацию. Пока что, на нынешнем этапе, эта задача сводится к тому, чтобы извлечь из речи содержащийся в ней текст. Задача понимания таких составляющих, как скажем, интонация, пока, в общем случае, не ставится. То есть эта задача сводится к замене клавиатуры микрофоном.
- Вторая задача состоит в том, чтобы компьютер воспринял смысл сказанного. Пока речевое сообщение состоит из некоего стандартного набора понятных компьютеру команд, скажем о дублировании голосом пунктов меню) то ничего сложного в ее реализации нет. Однако вряд ли такой подход будет удобнее, чем ввод этих же команд с клавиатуры или при помощи мыши. Пожалуй, даже удобнее будет просто щелкнуть мышкой по иконке приложения, чем четко выговаривать (к тому же мешая окружающим): "Старт! Главное меню! Ворд!" В идеале компьютер должен четко "осмысливать" естественную речь человека и понимать, что, к примеру, слова "Хватит!" и "Кончай работу!" означают в одной ситуации разные понятия, а в другой одно и то же.
- Третья задача состоит в том, чтобы компьютер мог преобразовать свою информацию в речевое сообщение, понятное человеку.
Так вот, из этих трех задач, достаточно ясное и окончательное решение существует только для третей. По сути, синтез речи - это чисто математическая задача, которая в настоящее время решена на достаточно хорошем уровне. И в ближайшее время, скорее всего будет просто совершенствоваться ее техническая реализация. Вот уже года полтора я играюсь со всякого рода программками для чтения вслух текстовых файлов, озвучкой диалоговых окон, пунктов меню и могу засвидетельствовать, что с главной своей задачей, а именно с генерацией разборчивых текстовых сообщений, они справляются без проблем.
Главным препятствием для окончательного решения первой задачи служит то, что, в общем-то, никто до сих пор толком не знает, каким образом можно расчленить нашу речь, чтобы извлечь из нее те составляющие, в которых содержится смысл. В том звуковом потоке, который мы выдаем при разговоре нальзя различить ни отдельных букв, ни слогов - даже вроде бы одинаковые для слуха буквы и слоги в разных словах на спектрограммах выглядят по-разному. Для получения более подробной информации отсылаю читателей к статье Вячеслава Алексеева из этой темы номера. Но, тем не менее, многие фирмы уже имеют свои методики (увы, тщательно скрываемые) позволяющие худо-бедно решить эту задачу. Во всяком случае, после предварительной тренировки современные системы распознавания речи работают довольно сносно и делают ошибок не больше, чем делали оптические системы распознавания лет пять-семь назад.
Что касается второй задачи, то она, по мнению большинства специалистов, не может быть решена без реализации систем искусственного интеллекта. Последние же, как известно, пока не созданы. Большие надежды возлагаются на появление т.н. квантовых компьютеров (см. тему номера…). Но если подобные устройства будут созданы, то это будет означать качественный переворот во всех компьютерных областях, и тогда, как знать, может быть, многие теперешние подходы к речевому интерфейсу вообще окажутся ненужными.
А пока, без полной реализации второй задачи, удел речевого интерфейса это всего лишь дублирование голосом команд, которые могут быть введены с клавиатуры или при помощи мыши. А здесь преимущества речевого интерфейса весьма сомнительны.
Впрочем, есть одна область, которая может оказаться очень привлекательной для многих. Это речевой ввод текстов в компьютер. Действительно, чем стучать по клавиатуре, гораздо удобнее продиктовать все компьютеру, чтобы он записал услышанное в текстовый файл. Здесь не вовсе не требуется, чтобы компьютер "осмысливал" услышанное, а задача перевода речи в текст более или менее решена. Недаром большинство выпускаемых ныне программ "речевого интерфеса" ориентированы именно на ввод речи.
Хотя и здесь находятся скептики. Я тоже отношусь к их числу. Если читать вслух, четко выговаривая слова, с паузами, монотонно, как это требуется для системы распознавания речи, то на машинописную страничку у меня уйдет пять минут. Печатаю на клавиатуре я с такой же скоростью. Но сочиняю, при наличии вдохновения, раза в два-три медленнее, а без оного медленнее раз в пять. Так что скорость "ввода" и при диктовке и при работе на клавиатуре у меня абсолютно одинакова. Но вот сочинять и одновременно выговаривать сочиняемое с "четкой артикуляцией", хоть убей, не смогу.
Мой адрес: aship@cterra.com, http://www.cterra.com/aship.