Рассмотренный нами пример преобразования речи в цифровой код с последующим декодированием - отнюдь не единственный возможный способ реализации данного метода синтеза речи. На практике используются другие способы, позволяющие более эффективно преобразовывать речь в цифровой код и хранить сигналы. Один из таких способов, получивший довольно широкое распространение в телефонии и в некоторых из существующих микросхем синтезаторов, называется дельта-модуляцией. Главное отличие этого способа от описанного ранее (см. рис. 6.5) заключается в том, что он основан на относительных изменениях амплитуды, а не на ее абсолютных величинах. Чтобы пояснить способ дельта-модуляции, обратимся снова к уже использованной аналогии, иллюстрирующей процесс выборки на примере визуальных сигналов наблюдения за автомобилем, движущимся по дороге. Пользуясь рассмотренным ранее методом параллельного кодирования, мы можем описать движение автомобиля из пункта А в пункт В следующим образом (по выборкам):
Автомобиль находится в 100 м от пункта А.
Автомобиль находится в 200 м от пункта А.
Автомобиль находится в 300м от пункта А.
Автомобиль находится в 400 м от пункта А.
Автомобиль находится в 500 м от пункта А и т. д.
Таким образом, в любой момент мы можем сказать, где находится автомобиль относительно начальной точки его движения. Этот способ отсчета абсолютных значений меняющейся величины показан на рис. 6.8. Если попытаться теперь представить движение автомобиля во времени в виде аналогового сигнала, то для точности аналогии достаточно заменить в отсчетах метры на вольты.
Рис. 6.8. Пример взятия абсолютных отсчетов
Посмотрим теперь, как меняется процесс взятия выборок при использовании дельта-модуляции, когда мы интересуемся лишь относительными изменениями, получаемыми в каждой конкретной выборке по сравнению с предыдущей. Следуя такому подходу, мы теряем информацию об абсолютных величинах сигнала при каждой выборке, но при последовательных выборках это не имеет значения. Исключая же избыточную информацию, мы увеличиваем возможности хранения информации о наблюдаемом аналоговом сигнале. При использовании дельта-модуляции движение автомобиля можно представить следующими отсчетами:
Автомобиль прошел 100 м от пункта А.
Автомобиль прошел 100 м от точки предыдущей выборки.
Автомобиль прошел 100 м от точки предыдущей выборки.
Автомобиль прошел 100 м от точки предыдущей выборки.
Автомобиль прошел 100 м от точки предыдущей выборки и т. д.
Если бы мы захотели продолжить наблюдение за автомобилем на протяжении сотен километров, то при первом способе отсчета (рис. 6.8) нам пришлось бы хранить в памяти числа, скажем, до 150 000 м и более. Каждый из отсчетов (выборок) давал бы нам точное значение расстояния, на которое автомобиль удалился от пункта А. Но с каждой выборкой величина, которую приходится хранить в памяти, возрастает. А как видно из рис. 6.9, при кодировании с дельта-модуляцией то же самое перемещение автомобиля описывается через разности (дельта) расстояний между каждыми соседними моментами выборок. Следовательно, даже при расстояниях в сотни километров наибольшее число, которое нужно хранить в памяти для описания поездки, составляет 100 м (отсчитываемые от точки последней выборки). Естественно, что для запоминания числа 100 в памяти требуется гораздо меньше места, чем для запоминания числа 150 000. Таким образом, на этом примере ясно, насколько должна увеличиваться эффективность цифрового кодирования и запоминания речи при использовании дельта-модуляции.
Рис. 6.9. Кодирование методом дельта-модуляции
Описанный процесс дельта-модуляции часто называют кодированием последовательных приращений, так как в нем кодируется лишь изменение сигнала между соседними выборками. Но как с помощью электроники реализовать кодирование речевого сигнала, поступающего с микрофона? Одна из возможных схем цифрового дельта-модулятора представлена на рис. 6.10. Сигнал речи, принятый микрофоном, фильтруется и усиливается так же, как в предыдущих случаях. Затем сигнал подвергается дельта-модуляции; для этого используется простая схема, состоящая из аналогового компаратора и контура обратной связи, содержащего аналоговый интегратор. В контуре обратной связи имеется также триггер D-типа, синхронизующий дельта-компоненту сигнала (изменение наклона) с тактовой частотой аналого-цифрового преобразования. Сигналы, с которыми имеют дело при кодировании методом дельта-модуляции, показаны на рис. 6.11. Отметим, что входной сигнал (верхний график) представляет собой колебание, где участки нарастания и спада чередуются с участками относительного постоянства (стабильности) сигнала. Стробированные выходные сигналы триггера D-типа (рис. 6.10) представлены на рис. 6.11 графиками А и В - это импульсы неизменной амплитуды 5В, которые поступают на интегратор, создавая на его выходе сигнал С. Изменения сигнала отсчитываются в каждый из периодов выборки Т (график А). Если входной сигнал продолжает нарастать, то о его увеличении свидетельствуют импульсы в точке А схемы. Импульсы же в точке В указывают на уменьшение входного сигнала. В те интервалы времени, когда величина входного сигнала остается неизменной, дельта-модулятор начинает генерировать поочередно импульсы А и В. Выходной сигнал в точке С - это результат сравнения сигнала обратной связи с сигналом на входе интегратора.
Рис. 6.10. Схема дельта-модулятора
На нижнем графике рис. 6.11 показан цифровой сигнал, который эта схема подает на компьютер. Этот двухуровневый сигнал записывается в память компьютера с той же самой частотой синхронизации, какая использовалась в схеме кодирования с дельта-модуляцией (рис. 6.10).
Рис. 6.11. Сигналы при кодировании методом дельта-модуляции
При кодировании с дельта-модуляцией для получения адекватного воспроизведения речи достаточно даже еще более простой схемы. На рис. 6.12 показан простой интегратор, весьма похожий на тот, что использовался в схеме кодирования. На вход Е интегратора от компьютера поступает двухуровневый логический сигнал, следующий с частотой, равной частоте выборок. Постоянную времени интегратора RCT выбирают так, чтобы она соответствовала продолжительности интегрирования в схеме выборок. Если на вход схемы воспроизведения речи поступает логическая единица, то интегратор дает кривую постоянного наклона одного знака. Когда же на вход поступает логический нуль, наклон кривой выходного напряжения интегратора меняет знак. В результате получается сигнал такого типа, как показано на графике F. Этот сигнал есть не что иное, как воспроизведение исходного входного сигнала, закодированного с использованием дельта-модуляции.
Рис. 6.12. Схема воспроизведения речи, закодированной методом дельта-модуляции
Как видим, полученная форма сигнала довольно хорошо соответствует исходной, отличаясь лишь небольшими искажениями. Степень искажений, создаваемых в процессе дельта-модуляции, обычно определяется одним из видов искажений при кодировании - так называемой перегрузкой по крутизне. Если крутизна входного сигнала меняется быстрее, чем могут проследить интеграторы, то выходной сигнал просто "не успевает" за изменениями входного. Эту типичную для процесса линейной дельта-модуляции трудность можно преодолеть, применив некую модификацию этого вида модуляции, называемую адаптивной импульсно-кодовой дельта-модуляцией. Этот модифицированный метод использован в некоторых микросхемах синтезаторов речи, в том числе в системе синтеза речи Диджи-токер фирмы "Нэшнл семикондактор".
Система на основе адаптивной импульсно-кодовой дельта-модуляции (АИКДМ) весьма сходна с аналогичной линейной системой; единственное различие между ними заключается в том, что система АИКДМ хранит в своей памяти не только направление изменения крутизны с момента последней выборки, но и величину этого изменения с того же момента. Это позволяет сохранить все преимущества предыдущей системы и одновременно исключить проблему перегрузки по крутизне. Проще говоря, вместо использования единственного бита, указывающего, является ли сигнал нарастающим или спадающим, можно брать четыре бита, которые будут характеризовать как нарастающий, так и спадающий сигнал одним из восьми возможных уровней в зависимости от конкретных условий изменения. Это дает возможность более точно описывать изменение сигнала между выборками, а также снимает проблему перегрузки по крутизне, с которой приходится сталкиваться при линейной дельта-модуляции.
Помимо описанных используются и другие методы синтеза речи путем кодирования сигнала; однако созданные на их основе системы по существу представляют собой лишь модификации описанных. Синтез речи по методу кодирования-восстановления речевого сигнала считается одним из простейших по способам реализации; он несложен также и для понимания. Как уже указывалось, этот метод сходен с цифровой записью. Способы запоминания речи могут быть, однако, различными, как было показано при рассмотрении "тахометра" речи; чтобы добиться высокой точности воспроизведения речи, необходима очень большая скорость выборки.
Из всех методов цифрового кодирования речевого сигнала наиболее эффективен метод АИКДМ. Представляя изменения входного сигнала от выборки к выборке значениями его наклона и амплитуды, удается сократить число необходимых битов памяти по каждой выборке. А как известно, основная проблема при разработке синтезаторов речи сводится к тому, как сократить объем памяти, необходимый для хранения одной произнесенной фразы.
Принципиально иной метод синтеза речи воплощен в синтезаторе с фонемным возбуждением, в котором используется синтез формантных частот. Внимательно познакомившись с действием этой системы, мы обнаружим значительные различия в названных методах электронного синтеза речи.