После того как ваша компьютерная система синтеза речи произнесла несколько слов, вы, несомненно, задумаетесь о возможностях разумного использования ее способностей. В настоящем разделе мы будем говорить о приложениях простейшей системы, включающей компьютер, клавишный пульт и дисплей, а также синтезатор речи. Ее блок-схема показана на рис. 8.1. Хотя на первый взгляд такую систему не назовешь мощной, существует множество проектов ее практического применения, к реализации которых вы можете приступить. И открывающиеся перед вами перспективы ограничены лишь вашим воображением. Рассмотрим некоторые возможные применения таких систем.
Рис. 8.1. Простейшая система синтеза речи
Говорящие часы
Это одна из простейших говорящих систем, которые вы можете сконструировать, и для практического результата вам потребуется лишь программа. Предполагается, что ваш компьютер может вести счет времени, располагая дата эгото электронными часами, работающими в реальном времени. Если такие часы в нем отсутствуют, то можно попытаться напжсать программу с временными циклами, которая введет необходимые обратные связи для счета секунд, минут и часов. В результате вы получите систему, состоящую из компьютера и синтезатора речи, которая будет говорить верное время по команде запроса или автоматически, скажем, с часовым интервалом. Для осуществления этого проекта нужна специальная программа, обеспечивающая правильный счет времени суток и запуск синтезатора речи, который по требованию объявляет время.
Программа, реализующая говорящие часы реального времени, может быть написана на ассемблере, либо на Бейсике, либо на любом другом языке программирования высокого уровня, который в конкретном случае определяется особенностями Таблица 8.1. Словарь компьютера. Естественно, одной из важнейших предпосылок для реализации данного проекта должно быть наличие периферийного синтезатора словаря, необходимого для выполнения функций говорящих часов; минимальный состав слов такого словаря приведен в табл. 8.1. Здесь перечислено в общей сложности 29 слов - их достаточно для полной характеристики времени суток при любых значениях часов и минут. Поскольку желательно иметь возможность не только объявлять часы, но также выдавать по команде верное время в любой момент, необходимо располагать речевыми средствами для счета и произнесения всей последовательности чисел от 0 до 59. При использовании синтезатора с фонемным возбуждением эти слова должны быть заранее закодированы через фонемы. Если синтезатор имеет готовки словарь, то следует найти коды команд., которые будут обеспечивать доступ к выражениям, указывающим нужное время суток. После того как в системе создан исходный словарь, можно приступить к генерации программы, которая позволит построить систему типа говорящих часов.
Таблица 8.1. Словарь говорящих часов
Блок-схема возможной программы для говорящих часов приведена на рис. 8.2. Хотя эта программа составлена в общей форме, она тем не менее достаточно специфична, чтобы ее блоки принятия решений можно было без особого труда превратить в программные блоки на языке программирования конкретного компьютера. Приведенная блок-схема программы сравнительно проста, однако некоторая сложность заключается в том, что время, выражаемое в часах и минутах, характеризуется в иной форме, чем время, выражаемое только в часах. Так, если часы просто объявляются автоматически, например "5 o'clock" (5 часов), то произносимое численное значение часов никогда не превышает 12. Если же с клавишного пульта вводится команда запроса времени в произвольные моменты, то речевой вывод времени между 5 и 6 часами может изменяться в пределах от 5:01 до 5:59. Простейшим способом словарного преобразования чисел в слова может быть построение таблицы с 60 числовыми входами для запроса минут в пределах от 00 = o'clock (час) до 59-fifty-nine. Таким путем доступ к значениям минут может производиться непосредственно из компьютерной памяти, что позволяет получать соответствующие табличные слова для возбуждения синтезатора. Если в синтезаторе имеется программа преобразования типа "текст - речь", то о таком преобразовании чисел, вероятно, не придется заботиться. Большинство программ преобразования текста в речь обладает способностью определять, как произносятся числа от 1 до 100, исходя исключительно из числового входа. В таком случае все, что необходимо задать синтезатору речи в качестве команды для произнесения времени,- это числовое значение текущего времени дня. Алгоритм "текст - речь" самостоятельно справится с выдачей минут в форме речи. Некоторые алгоритмы преобразования "текст - речь" обладают таким "интеллектом", который позволяет установить, что полученное ими от компьютера число указывает время, поскольку первые цифры в нем отделены от двух последних двоеточием. При поступлении на вход синтезатора цепочки текста "5:22" он произнесет время как five ... twenty two (пять ... двадцать два).
Рис. 8.2. Блок-схема программы для говорящих часов
Этот довольно простой эксперимент можно легко провести с любым компьютером, обладающим способностью читать показания внутренних машинных часов, которые отсчитывают время суток. В некоторых компьютерах это осуществляется посредством функции time$. В ряде других машин, оснащенных аппаратными часами, операция считывания времени сводится к чтению показания микросхемы часов, которое снимается с портов этого периферийного устройства. Если компьютер не имеет ни встроенных электронных часов, ни внешних аппаратных, то создание говорящих часов можно начать с построения очень точного хронирующего контура с длительностью цикла 1 с. Этот контур необходимо связать со схемой пересчета на 60, которая будет выдавать минутные отметки. Сигналы счета минут должны подаваться на другую схему пересчета на 60, которая отслеживает время в минутах между отсчетами часов. И наконец, следует ввести еще схему пересчета на 12, которая изменяет свое состояние каждый полный цикл 60-минутного счетчика и, таким образом, показывает часы. Числовой выход всех этих контуров говорящая система может использовать для сообщения по запросу точного времени суток. Чтобы лучше разобраться в работе программных часов, посмотрим на рис. 8.3. Приведенная здесь блок-схема программы показывает довольно простой путь построения программных часов, которые служат для запуска говорящей программы. Реализация такой программной системы в говорящем компьютере позволит весьма наглядно продемонстрировать возможности синтезированной речи. Говорящие часы будут продолжать говорить время, пока действует их управляющая программа, давая на протяжении всего дня показания текущего времени.
Рис. 8.3. Возможная структура программы для часов, показывающих время
Если, несколько расширив пример с говорящими часами, ввести в систему с общим контуром отсчета времени некоторую программу распознавания заданного момента времени, то в таком случае мы получим не просто говорящие часы, а часы, которые можно программировать таким образом, что в заданные моменты - или, возможнот даже в заданные моменты конкретных дней месяца - они будут произносить определенные фразы. Проявив еще немного творческой смекалки, можно построить говорящий будильник, который будет запрограммирован так, чтобы он будил вас утром фразой: "Вставай" или "Вставай, соня, уже поздно". Если у вас назначено свидание или вам следует о чем-то вспомнить в определенное время, то систему можно запрограммировать так, чтобы она в нужный момент выдала нужное сообщение. Например, вам захочется, чтобы в шесть часов вечера компьютер сказал: "Включи телевизор - время передачи новостей". Если у вас довольно напряженный распорядок дня, то вы можете составить календарь своих деловых и прочих встреч, где будет перечислено все, что необходимо сделать в течение каждого дня, и компьютер по утрам будет сообщать вам о намеченных на текущий день делах. Достоинство этой системы состоит в том, что она исключительно надежна и никогда не забудет напомнить вам о неотложных делах. Полезность создания подобной системы для занятого человека не вызывает сомнений. Утреннее словесное напоминание о намеченном распорядке дня, безусловно, поможет вам лучше организовать свою деловую жизнь.
Развлечения и игры
Мы рассмотрели лишь один пример использования простейшей системы синтеза речи. По мере того как вы будете открывать все новые возможности конкретного периферийного устройства с синтезатором речи и накапливать опыт работы с ним, у вас может зародиться мысль объединить речевое устройство с игровыми программами. Естественно, что это требует глубокого знания программ, которые вы хотите модифицировать. Так, если они написаны иа Бейсике, то вы сможете легко выбрать операторы "печатать" (которые, как правило, используются для взаимодействия с игрой) и либо заменить, либо дополнить эти операторы словесными, или наговариваемыми, сообщениями. Одной из самых распространенных игр, в которой введение словесных сообщений дает значительный эффект, является игра "Звездная дорога": ведь компьютер космического корабля начинает выглядеть куда реалистичнее, если он разговаривает.
Одно из ограничений, которое следует учитывать при введении в игры синтезированной речи,- это словарь, доступный данному периферийному устройству со средствами синтеза речи. Если синтезатор обладает способностью генерировать неограниченный словарь, то его возможности взаимодействия с компьютерной игрой будут поистине беспредельны. Если же, напротив, речевая система имеет весьма ограниченный словарь, то вам придется много потрудиться. Нередко вы сумеете найти слова, которые с успехом заменят недостающие словарю. Подумайте также об использовании омонимов, которые отличаются написанием от нужных вам слов, но звучат очень сходно. Другой, довольно искусственный способ, который можно применить для создания необходимых, но отсутствующих в словаре синтезатора слов, представляет собой конкатенирование, т. е. слияние двух имеющихся в словаре слов для генерации третьего. Например, использование слова be и числа 4 (four) позволят конкатенировать слово before. Таким искусственным сцеплением можно образовать еще много слов, так что, прежде чем опустить руки от тщетности поисков замены недостающему слову, попытайтесь скомпоновать это слово из тех, что имеются в словаре синтезатора.
Если вы пользуетесь синтезатором с фонемным возбуждением, то можете найти удачное применение роботизированному голосу этой системы. В прошлом некоторые киностудии и студии, занимавшиеся звуковыми эффектами, не жалели средств и сил, чтобы получить речь, имеющую "нечеловеческое звучание". Располагая же системой с фонемным возбуждением, можно по желанию .изменять звуки речи и фонемы. Если соответствующим образом подобрать высоту тоиа и звучание фонем, то фонемный синтезатор позволит создать весьма интересные звуковые эффекты. А присоединив к синтезатору .громкоговоритель, вы сможете произвести ошеломляющее впечатление на слушателей. Но все это не более ,чем только еще одна возможность использования синте-заторной системы.
Говорящие устройства для людей с дефектами зрения и слуха
Если перейти к более серьезным задачам, то и здесь фонемному синтезатору можно найти дело по плечу. Так, генерируемые им чистые фонемные звуки могут оказать огромную помощь в обучении правильной речи людей с расстройствами речи. Располагая простейшими средствами программирования фонем и устройством, Способным произносить их непрерывно, можно создать приспособление, о котором мечтают многие годы специалисты по исправлению речи. Это средство обучения, несомненно, окажет огромную помощь в исправлении дефектов речи у детей. Можно пойти и дальше. Используя фонемный синтезатор в сочетании со спектрографом для генерации видимых изображений речевых сигналов, мы получим устройство, которое можно применить для обучения речи глухих. Произнося звуки, они должны добиваться их визуального (по спектрограмме) совпадения со звуками синтезатора. Занимаясь подобными упражнениями, люди, которые никогда не слышали живой речи, могут самостоятельно научиться говорить.
Одно из наиболее важных применений простейшей системы синтеза речи - помощь слепым и людям с большой потерей зрения. Проблема ввода информации в компьютер для слепых в основном решена посредством клавиатуры со шрифтом Брайля. Однако вывод данных из компьютера оказывается в этом случае более сложной задачей, и до недавних пор наиболее эффективным решением ее считалось применение принтеров со шрифтом Брайля. Далее, если правильно подобрать синтезатор речи, который осуществлял бы вывод всей информации компьютера, в том числе и символов, соответствующих нажатию каждой клавишы, то слепые смогут эффективно использовать все широкие возможности компьютера. Для этого, конечно, необходима обширная компьютерная программа с алгоритмом преобразования "текст - речь", которая обеспечит неограниченный по составу словарь.
Большинство имеющихся в настоящее время в продаже синтезаторов с фонемным возбуждением наделены доступным для пользователя довольно простым алгоритмом преобразования "текст - речь". При отсутствии нужной вам преобразовательной программы вы можете поставить перед собой смелую задачу создания ее собственными силами. В данной области было выполнено немало работ, и результаты многих из них опубликованы1.
1 (См., например, следующие работы: Mcllroy M. D. Synthetic English Speech by Rule, Computer Science Technical Report 14, Bell Telephone.- N. Y.: Murray Hill, March 1974; Elowitz H. et al. Automatic Translation of English Text to Phonetics by means of Letter-to-Sound Rules, Naval Research Laboratory Report 7948, January 1976; Allen G. P. Synthesis of Speech from Unrestricted Text, Proceedings of the IEEE, April 1976, 64 (4), pp. 433-42. [Есть русский перевод: Аллен. Синтез речи из произвольного текста, ТИИЭР, 64, № 4, с. 161, 1976.]
Эти публикации помогут вам глубже понять механизм действия алгоритмов синтеза речи по правилам, используемым в фонемных синтезаторах.)
Если вы интересуетесь алгоритмами преобразования текста в речь, которые используются в большинстве фонемных синтезаторов, то данные публикации познакомят вас с "секретами" механизмов их работы. Указанные программы отличаются исключительной сложностью, поскольку в правилах произношения письменного английского текста имеются тысячи исключений. Ни одну из существующих программ построения синтезированной речи по правилам нельзя считать идеальной. Поэтому любое усовершенствование существующего алгоритма подобных программ, безусловно, найдет отклик и получит признание.
Еще одно применение
Мне хотелось бы здесь предложить еще одно применение простейшей системы речевого синтеза. Это - использование говорящего компьютера для обучения речи птиц. Компьютер способен многократно и монотонно ?повторять одно и то же слово, а это идеальный метод для обучения разговору попугаев и других говорящих пернатых. Однако не удивляйтесь, если ваша птица - будет безошибочно копировать все речевые изъяны синтезатора. Ведь она воспринимает многократное повторение не только слов, но и всех речевых дефектов устройства. Можно даже обучить птицу говорить голосом робота. Представляете себе эту картину!
Этим, конечно, не ограничиваются возможные приложения простейшей системы синтеза речи. Как я уже говорил, сфера ее применений зависит исключительно в вашего воображения. "Интеллект" такого синтезатора можно значительно развить, если управлять генерируемой им речью не с клавишного пульта, а программным путем, так что займитесь составлением программ, способных говорить. Работая над такими программами, вы лучше узнаете вашу систему и одновременно получите большое удовольствие.