ZX Forum #04
19 ноября 1997

Мир звуков Спектрума - глава 4.8: Синтезирование речи.

<b>Мир звуков Спектрума</b> - глава 4.8: Синтезирование речи.

         4.8. Синтезирование речи

   Синтезировать речь можно просто записы-
вая и воспроизводя  ее  как  любой  другой
звук с помощью подпрограмм из  главы  4.6,
но обычно действуют иначе. Сначала в  ком-
пьютер вводятся все  фонемы  определенного
языка, затем у пользователя  запрашивается
фраза, и наконец, компьютер последователь-
но воспроизводит входящие  в  нее  фонемы.
Этот способ позволяет  значительно  эконо-
мить память и воспроизводить абсолютно лю-
бые фразы. Вот программа, позволяющая Cпе-
ктруму разговаривать:

   10 CLEAR 25343: LET L=3
   20 PRINT "Wait please..."
   30 FOR A=25344 TO 25433: READ D: POKE A,D: NEXT A
   40 FOR A=0 TO 25: POKE 25437,A*L+100
   50 CLS: PRINT "Press any key, then say '";CHR$ (A+65);"'":
      PAUSE 0
   60 RANDOMIZE USR 25344: NEXT A
   70 CLS: INPUT "Enter phrase:"; LINE A$: PRINT A$
   80 FOR A=1 TO LEN A$
   90 IF A$(A)=" " THEN POKE 25433+A,32:NEXT A
  100 IF A$(A)>="a" THEN LET A$(A)=CHR$(CODE A$(A)-32)
  110 POKE 25433+A,(CODE A$(A)-65)*L+100: NEXT A: POKE 25433+A,0
  120 RANDOMIZE USR 25406: GOTO 70
  130 DATA 243,33,0,0,17,0,L,6,8,203,38,219,254,203,119,40,
           2,203,198,16,244,35,27,122,179,32,236,251,201
  140 DATA 243,33,0,0,17,0,L,62,7,6,8,230,239,203,6,48,2,246,
           16,211,254,16,244,35,27,79,122,179,121,32,234,251,201
  150 DATA 33,90,99,126,183,200,254,32,32,7,6,5,118,16,
           253,24,8,50,32,99,229,205,29,99,225,35,24,231

   Поясню некоторые строки:

 30 - считываются в память программы в ко-
      дах;
 40...60 - записываются фонемы  с микрофо-
      на;
 70 - ввод фразы;
 80...110 - фраза  заносится  в  память  в
      специальном формате;
 120 - вызывается подпрограмма воспроизве-
      дения;
 130...150 - подпрограммы в кодах.

   После запуска программа попросит немно-
го подождать, считывая  кодовую часть, за-
тем Вы должны будете последовательно  про-
изнести в микрофон 26 фонем.  После  этого
Вы можете вводить любые  фразы  и  наслаж-
даться их звучанием. При вводе  этих  фраз
допустимы прописные и  строчные  латинские
буквы и пробелы. Как будут звучать все ос-
тальные символы, никому неизвестно.  Ни  в
коем случае не  стоит  вводить  знак  "@",
иначе программа просто "зависнет".
   Эта программа написана как пример, поэ-
тому не содержит дополнительных  сервисных
возможностей (например, изменение  отдель-
ной фонемы), но Вы свободно можете их  до-
бавить.
   Для  изменения  длительности  отдельной
фонемы смените в десятой  строке  значение
переменной L (в данном  случае  оно  может
быть от 1 до 6).
   Если Вам  не  удалось  с  первого  раза
произнести все фонемы с удовлетворительным
качеством, то можете попытаться  еще  раз,
остановив  программу  с  помощью   клавиши
BREAK и выполнив команду  GOTO  40.  Когда
фонемы будут записаны, Вы можете сохранить
их на ленте, набрав  команду  SAVE  "name"
CODE 25600,6656*L (число  6656  получилось
путем умножения количества фонем  (26)  на
256). Лучше всего, если перед этим  блоком
будет записана  вышеприведенная  программа
со следующей строкой:

   35 LOAD "name" CODE 25600: GOTO 70

Записать эту программу можно с помощью ко-
манды SAVE "SPEAKER" LINE 10.
   К  сожалению, 26  фонем - это  маловато
даже для английского языка, не говоря  уже
про русский. Их количество можно, конечно,
увеличить, но при этом увеличится и  объем
занимаемой ими памяти. Тут  уж  ничего  не
сделаешь.
   Если Вы хотите, чтобы  Ваш  ZX-Spectrum
говорил по-русски, то  Вы  должны  подклю-
чить русский шрифт (подробнее см. в [1]) и
увеличить число фонем. А также сменить все
сообщения, выводимые на экран.
   Количество  русских  фонем  можно  зна-
чительно сократить, если  не  использовать
мягкие согласные (в компьютерном  исполне-
нии их мягкость практически не  слышна)  и
гласные "Е","Е","Ю" и "Я" (вместо них вво-
дите "Й" и, соответственно, "Э","О","У"  и
"А"). Твердый знак также заменяйте  буквой
"Й".
   И в заключение один совет. Гораздо при-
ятнее  слышать   нормальную   человеческую
речь, чем слова, выговариваемые в соответ-
ствии с правилами грамматики. Поэтому вво-
дите слова  как слышите:  sinclair - sink-
ler, компьютер - кампйутер.




Другие статьи номера:

Help - Описание оболочки электронного издания "ZX-FORUM 4".

Секреты успешного дизайна - глава для книги "Дизайн Ваших программ"

Экранные эффекты - Бегущая строка из R-Type.

Экранные эффекты - гашения экрана из Zynaps.

Экранные эффекты - "сворачивание" экрана из Comando Tracer.

Экранные эффекты - плавное "затухание" экрана из Сommando Tracer.

Экранные эффекты - модификация символьного набора для получения оригинального стилизованного шрифта из игры Rockstar.

Экранные эффекты - "выбегающая строка" из игры Rockstar.

Экранные эффекты - "наливающийся" экран из игры Rockstar.

Экранные эффекты - сложный многоступенчатый эффект из игры Bubbler.

Новые 40 лучших процедур - скроллинг экрана, слияние двух картинок, инвертирование экрана, поворот символов, замена атрибутов, заливка замкнутого контура, вычисление адресов в экране, копирование части экрана и т.д.

Технология спрайтов - часть 1: введение.

Технология спрайтов - часть 2: охота на спрайты (поиск и выдирание).

Технология спрайтов - часть 3: форматы спрайтов.

Технология спрайтов - часть 4: форматы спрайтов с маской.

Технология спрайтов - часть 5: структура спрайтовых блоков (как уживаются в памяти спрайт и маска, какие данные помогают нам оперативно находить адрес спрайта в памяти и многое другое.)

Технология спрайтов - часть 6: подготовка данных к печати.

Технология спрайтов - часть 8: печать спрайтов (координаты заданы в знакоместах).

Технология спрайтов - часть 9: печать спрайтов (координаты заданы в пикселях).

Технология спрайтов - часть 10: обзор программ для работы со спрайтами и графикой.

Мир звуков Спектрума - глава 1: Физика звука.

Мир звуков Спектрума - глава 2: Оператор BEEP, Создание эффектов на BEEPе, Создание музыки на BEEPе.

Мир звуков Спектрума - глава 3: Как получается звук (устройство BEEP'ра и способы звукоизвлечения).

Мир звуков Спектрума - глава 4: Программирование звука на ассемблере.

Мир звуков Спектрума - глава 4.1: Программирование звуковых эффектов - Тон, Шум, Комплексы эффектов.

Мир звуков Спектрума - глава 4.2: Программирование звуковых эффектов - Управление громкостью.

Мир звуков Спектрума - глава 4.3: Программирование звуковых эффектов - Управление тембром.

Мир звуков Спектрума - глава 4.4: Программирование звуковых эффектов - Программирование музыки.

Мир звуков Спектрума - глава 4.5: Программирование звуковых эффектов - Многоголосые мелодии (полифония).

Мир звуков Спектрума - глава 4.6: Обработка внешних сигналов - оцифровка.

Мир звуков Спектрума - глава 4.7: Обработка внешних сигналов - Реверберация.

Мир звуков Спектрума - глава 4.8: Синтезирование речи.

Мир звуков Спектрума - глава 4.9: воспроизведение звука на прерываниях.

Мир звуков Спектрума - глава 5: Оператор PLAY для музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 5.1: Создание эффектов оператором PLAY.

Мир звуков Спектрума - глава 5.2: Создание музыки на PLAYе.

Мир звуков Спектрума - глава 6.1: описание регистров музыкального сопроцессора AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 6.2: Программирование эффектов и музыки под музыкальный сопроцессор AY- 3-8910 (AY-3-8912).

Мир звуков Спектрума - глава 7: Обзор программного обеспечения ZX-Spectrum для создания звуков и музыки.

Мир звуков Спектрума - глава 7.1: Редактор звуковых эффектов SUPER SOUND.

Мир звуков Спектрума - глава 7.2: Музыкальный редактор Wham the Music Box.

Мир звуков Спектрума - приложения 1, 2: листинги звуковых эффектов SUPER SOUND'а, советы по использованию ассемблера.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Поэзия - Стихи от Broom'а.
О разном - обзор существующих прошивок: EWS 1.0, GLUK RESET SERVICE 5.3K, REAL CAMMANDER 1.95, NEOS, MADROM, QUICK COMMANDER 2.6. Схема 16кб Кеша.
Цены - основные цены на ZX компютеры и перефирию которую можно купить в Риге.

В этот день...   23 октября