oldi

Экспериментируем с вокодером

Евгений Музыченко

Основные положения и немного теории

   Устройство речевого аппарата человека

   Модуляция

   Анализ и синтез звуков речи

   Вокодер

   Способы реализации вокодера

   Программный вокодер Cylonix

Работа с Cylonix Vocoder

   Выбор звуковых портов

   Структура окна вокодера

   Параметры анализатора спектра

   Выбор источника несущего сигнала

   Параметры несущего сигнала

   Параметры синтезатора

   Общие параметры

   Использование MIDI-контроллеров

   Работа со звуковыми файлами

   Другие программные вокодеры

 

Большинству из вас наверняка знаком необычный «синтетический» голос, часто звучащий при исполнении современных песен — «Бумажный змей» Аллы Пугачевой, «Die Roboter», «Autobahn» Kraftwerk, вступление к альбому «Time» Electric Light Orchestra и др. Такими голосами говорят всевозможные монстры и прочие персонажи в кино- и мультфильмах. В некоторых случаях подобного эффекта добиваются путем относительно простой обработки голоса — фленжером, хоровым эффектом, резонансным фильтром и т.п. Однако наиболее глубокое и яркое изменение голоса достигается при помощи алгоритма, называемого вокодером (voice coder — кодировщик голоса).

Первоначально идея вокодера возникла в сфере уплотнения голосовой информации, передаваемой по линиям связи, — сузить полосу частот, занимаемую одним речевым сигналом. Попутно изучалась возможность засекречивания телефонных и радиопереговоров: передавать по линии сжатый шумоподобный сигнал, бесполезный для возможного перехватчика, а на приемном конце восстанавливать исходный голосовой сигнал. Однако впоследствии оказалось, что эти методы имеют более широкое применение, и одна из их модификаций прочно обосновалась в музыке.

Основные положения и немного теории

Устройство речевого аппарата человека

Речевой аппарат состоит из генератора звука — голосовых связок и органов артикуляции — гортани, ротовой полости, языка, зубов и т.д. Колебания голосовых связок порождают основной звуковой сигнал заданной частоты (высоты) и амплитуды (громкости), а органы артикуляции придают ему те или иные оттенки, разделяют непрерывное звучание голосовых связок на отдельные звуки, фонемы и слова. Хотя голосовые связки могут изменять частоту и амплитуду своих колебаний в широких пределах, но подавляющая часть речевой информации формируется именно за счет работы органов артикуляции в «верхней» части речевого аппарата. Иначе говоря, речевая информация в большинстве языков практически полностью определяется согласными, в то время как гласные чаще всего служат лишь для связи согласных друг с другом.

Звучание голосовых связок складывается из колебаний множества мышечных волокон с частотами от сотен герц до единиц килогерц. В результате образуется периодический звуковой сигнал с достаточно богатым спектром, определяющий основной тембр голоса человека. В процессе работы органов артикуляции звучание голосовых связок меняет высоту и интенсивность, фильтруется (озвончается или приглушается), что придает голосу и речи характерную для конкретного человека манеру разговора.

Таким образом, заменив источник основного сигнала, можно получить совершенно иной тембр голоса, сохранив при этом его индивидуальные особенности и информацию, переносимую звуками речи. Например, вместо удаленных голосовых связок может быть вживлен искусственный генератор звука. При этом теряется способность произвольно управлять громкостью и высотой голоса, однако характер речи сохраняется.

Такой же эффект можно получить, если смоделировать работу органов артикуляции конкретного человека и обработать таким образом звуковой сигнал с достаточно богатым спектром. На выходе получится звучание в характерной манере; в результате — даже если обработка выполнена грубо — мозг слушателя все равно воспринимает звуки как человеческую, естественную речь, пусть даже с механическим, искусственным оттенком. Похожая ситуация бывает, когда один человек копирует манеру речи другого: даже не совсем похожий тембр голоса не может помешать мгновенному узнаванию того, кого копируют.

В начало

В начало

Модуляция

Модуляция (modulation) — изменение какого-либо параметра относительно его нейтрального значения. Например, модуляция в музыке подразумевает переход к смежным тональностям относительно основной, а модуляция звукового сигнала — изменение его основной частоты, амплитуды или спектрального состава. Сигнал, подвергаемый модуляции, обычно называют несущим (carrier).

В речевом аппарате органы артикуляции выполняют спектральную модуляцию основного сигнала, создаваемого голосовыми связками, ослабляя или подчеркивая различные частотные области. Дополнительно мышцы связок могут модулировать их колебания по частоте и амплитуде. Четкая и слаженная артикуляция придает речи разборчивость и чистоту.

Кроме звучания голосовых связок в формировании звуков речи определенную роль играет шум — хаотичные колебания частиц воздуха, проходящего через ротовую полость. Хотя шум не имеет определенной высоты (в нем присутствуют колебания множества разных частот), его звучание сильно зависит от распределения энергии колебания по частотам, которое также модулируется органами артикуляции. Так, в звуке «ш» основная энергия сосредоточена в области низких частот, а в звуке «с» — в области высоких.

В начало

В начало

Анализ и синтез звуков речи

Итак, звучание человеческой речи может быть разложено на два процесса: несущий сигнал (carrier) и модулирующий сигнал (modulator). При этом характер несущего сигнала определяет в основном звучание гласных звуков, а характер модулирующего — согласных. Поведение модулирующего сигнала может быть описано достаточно компактно, ибо звучание голосовых связок в речи играет роль «заполнителя», на долю которого приходится основная доля звуковой энергии.

«Выжатый» таким образом речевой сигнал может быть записан на носитель или передан по линии связи, после чего наложен на другой (искусственный) несущий сигнал, вследствие чего достаточно полно восстанавливаются структура речевой информации и манера разговора.

Первая операция носит название анализ, вторая — синтез. Обе операции могут выполняться несколькими различными способами, от которых зависят надежность и точность передачи речи, степень разделения несущего и модулирующего сигналов, трудоемкость процесса и т.п.

Хранение и передача только параметров модуляции требуют гораздо меньших накладных расходов, нежели передача всего голосового сигнала, поскольку скорость модуляции в сотни раз меньше скорости колебаний в несущем сигнале. Популярные ныне методы сжатия речи активно используют свойства речевого тракта, без чего невозможно достичь сжатия потока информации в десятки раз.

В начало

В начало

Вокодер

Вокодер состоит из двух основных блоков — анализатора исходного речевого сигнала и синтезатора (модулятора) результирующего сигнала. На вход анализатора подается речевой сигнал, из которого блок выделяет только параметры модуляции, отсекая основные (несущие) колебания голосовых связок. Полученный сигнал подается на вход модулятора вместе с новым несущим сигналом, который и модулируется в соответствии с изменениями исходного сигнала. Эффект получается примерно такой же, как если бы источник нового основного сигнала внедрили в тело человека вместо его собственных голосовых связок. Исключение составляют глухие и шипящие, то есть «неголосовые» звуки, с которыми многие вокодеры справляются хуже.

На вход вокодера может подаваться не только речевой сигнал, но и произвольный звук. Тогда вокодер будет пытаться следить за его изменениями и отражать их в звучании несущего сигнала.

В начало

В начало

Способы реализации вокодера

Существует несколько методов реализации вокодера как сочетания анализирующего и синтезирующего блоков. В основе цифрового анализатора всегда лежит какой-либо вид спектрального анализа, представляющего исходное звучание в виде совокупности гармонических частотных составляющих (преобразование Фурье). Дальнейшая интерпретация полученного спектра зависит от метода анализа.

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

Затем полученными амплитудными кривыми в блоке синтеза модулируется новый несущий сигнал, также разбитый на частотные полосы: каждая амплитудная кривая модулирует по амплитуде «свою» полосу несущего сигнала. Такой метод хорошо справляется с передачей гласных, однако практически нечувствителен к согласным и особенно к шипящим звукам, поскольку в несущем сигнале не предусмотрены «основы» для их создания. Кроме того, данный метод не в состоянии отследить изменения интонации, когда голосовые связки изменяют высоту своих колебаний, — полосовой вокодер отражает это простым смещением акцента в другую частотную область несущего сигнала, основная высота которого в любом случае остается неизменной. По этой причине для хорошей работы такого вокодера необходим несущий сигнал с богатым спектром, иначе при изменении высоты голоса на входе будут значительно меняться и амплитуда и разборчивость сигнала на выходе.

Блок анализа формантного вокодера прежде всего ищет в исходном сигнале форманты — типовые резонансные частоты речевого тракта, сочетание которых индивидуально для каждого человека. После «захвата» формантных частот блок следит за их перемещением по спектру, а также за шириной самих формант (сильный или слабый резонанс). Блок синтеза генерирует на основе нового несущего сигнала центральные формантные частоты, а затем управляет ими по закону, полученному от блока анализа. Вследствие этого формантный вокодер хорошо передает звуковысотные интонации, однако для обнаружения и передачи прочих сопутствующих звуков необходим дополнительный анализ исходного речевого сигнала — детектор шума для шипящих, анализатор «взрывных» звуков (типа «б», «п» и т.д.)

В вокодерах с линейным предсказанием происходит анализ наиболее вероятных состояний речевого тракта и образуемых при этом звуков. Выделенные параметры кодируются, а блок синтеза по полученному коду выдает заранее созданные заготовки звуковых фрагментов — голосовых, шипящих, взрывных и т.п. Иногда к блоку анализа добавляется еще один, локальный, блок синтеза, чтобы в результате получившейся обратной связи проверить, насколько верно был определен (предсказан) исходный звук. Поиск идет до тех пор, пока не будет обнаружено наиболее удачное описание исходного звука, после чего он считается распознанным и выдается из блока анализа наружу.

В начало

В начало

Программный вокодер Cylonix

Качественные аппаратные вокодеры — достаточно сложные и дорогие устройства. Однако современные компьютеры достаточно мощны, чтобы можно было реализовать метод полностью программно, что и сделал несколько лет назад James J. Clark, выпустив программу Cylonix Vocoder, для удовлетворительной работы которой вполне достаточно Pentium-120, а на новых Celeron и P-III задержка между входным и выходным сигналами практически незаметна.

Демонстрационная версия программы находится по адресу http://www.cim.mcgill.ca/~clark/cylonix.html.

Cylonix представляет собой наиболее простой, полосовой, тип вокодера, оперирующий с 18 полосами, на которые разбивается исходный речевой сигнал. Этого количества вполне достаточно для разборчивой передачи гласных, а передача неголосовых звуков в Cylonox оптимизирована другими способами.

Структурная схема Cylonix приведена в его системе интерактивной помощи (Help), в разделе Individual Channel Controls.

Для полноценной работы программы необходима полнодуплексная (full duplex) звуковая карта с возможностью одновременного и независимого ввода и вывода звука, которая также должна иметь возможность блокировки записи с собственного выхода (Wave Out). Этим требованиям удовлетворяют, в частности, карты Creative Sound Blaster.

К сожалению, многие современные карты (Aureal Vortex на чипе AU8820, ESS Solo-1 и т.п.) либо не имеют полного дуплекса, либо всегда записывают то, что воспроизводится на выходе. Иначе говоря, карты не являются в полном смысле слова полнодуплексными. В данной ситуации остается только либо использовать две звуковые карты (одну — для ввода с микрофона, а другую — для вывода звука), либо брать исходные сигналы из файлов, предварительно записывая их туда какой-либо другой программой.

Работа программы не гарантируется на процессорах Cyrix. Автор полагает, что причиной тому — особенности вычислений с плавающей точкой, реализуемых процессорами этого типа.

В начало

В начало

Работа с Cylonix Vocoder

Программа не требует установки — достаточно распаковать архив в любой пустой каталог и запустить файл Vocoder2.exe.

В начало

В начало

Выбор звуковых портов

При запуске вокодера выводится форма выбора звуковых портов, используемых для ввода исходного сигнала и вывода результата. При наличии одновременно доступных портов ввода и вывода (полнодуплексная звуковая карта или две независимые карты) выбирайте оба порта, в противном случае придется ограничиться только одним.

Регулятор времени ответа позволяет выбрать оптимальный баланс между задержкой сигнала от входа до выхода, которая образуется из-за буферизации цифрового звука, и накладными расходами программы и системы, из-за которых могут возникать сбои в звучании. Время ответа подбирается индивидуально для каждого компьютера.

16-разрядный режим позволяет улучшить качество сигнала, однако в вокодере он реализован некорректно и может давать сильные искажения сигнала.

После выбора устройств и режимов ввод/вывод звука запускается автоматически. При произнесении слов в микрофон должен отображаться динамический спектр; если нет реакции на микрофон — проверьте, разрешена ли запись с микрофона в микшере звуковой карты и не установлен ли регулятор уровня в положение минимального усиления.

В начало

В начало

Структура окна вокодера

Окно Cylonix поражает обилием кнопок и регуляторов — это действительно весьма мощная программа обработки звука. В верхней левой части окна расположены органы управления анализатором, в правой — генератором несущего сигнала, в нижней — синтезатором.

В правом верхнем углу имеется кнопка HELP, открывающая окно помощи (на английском языке).

В начало

В начало

Параметры анализатора спектра

В центре окна расположен дисплей анализатора, на который выводится спектр исходного сигнала, используемый затем в качестве модулятора для несущего.

Дисплей имеет и другую функцию: показ соответствия полос исходного сигнала полосам модулируемого; режим переключается кнопкой TDisp. По умолчанию установлено линейное соответствие; кнопки -2..+3 задают сдвиг полос синтезатора относительно полос анализатора; кнопки Inv, Lin, Rand устанавливают обратный, линейный и случайный порядок полос в анализаторе. Кнопка Swap меняет местами соседние полосы анализатора.

Кнопка Enh «расширяет» спектр путем подчеркивания его пиковых участков и ослабления более ровных, а Smth, наоборот, сглаживает спектр по амплитуде. В первом случае звучание становится более «острым», «прореженным», во втором — более сочным, густым.

Кнопка S/H (Sample and Hold) включает режим выборки и фиксации спектра на короткие промежутки времени, регулируемые движком Rate. Это придает звуку характер ступенчатого изменения и в чем-то похоже на работу стробоскопа, дающего короткие периодические вспышки света. С помощью кнопки Hold делается «мгновенный снимок» текущего спектра, после чего анализатор поддерживает на выходе постоянные значения, не реагируя на изменение исходного сигнала.

Кнопки Norm (нормальная — 1/3 октавы), Nrrw (narrow — узкая — 1/6 октавы) и Wide (широкая — 2/3 октавы) управляют шириной полос частотной фильтрации. При сужении полосы звук становится более четким, но менее богатым тембрально, и наоборот.

В начало

В начало

Выбор источника несущего сигнала

Несущий (carrier) сигнал для синтезатора по умолчанию вырабатывается генератором прямоугольных импульсов (кнопка Pulse), ширина которых задается движком Width, а частота — движком Freq. Ширина импульсов определяет основной тембр выходного сигнала, а частота — его высоту. Кнопка Yodel включает частотную модуляцию несущего сигнала со скоростью, определяемой движком Rate.

Кнопки Chor1/Chor2 подключают еще два генератора, частоты которых вместе с основным образуют минорный уменьшенный или мажорный аккорд.

Кнопка Noise выбирает в качестве несущего сигнала источник шума, а Extern включает режим извлечения и несущего, и модулирующего сигналов из входного сигнала. В последнем случае работают еще четыре кнопки разделения стереоканалов:

  • L/R: левый канал — модулятор; правый — несущий;
  • R/L: левый канал — несущий, правый — модулятор;
  • M/L: разность левого и правого — несущий; правый — модулятор;
  • M/R: разность правого и левого — несущий; левый — модулятор.

Варианты режима Extern полезны в том случае, когда оба сигнала желательно вводить извне. Например, при наличии стереомикрофона (двух микрофонов с общим кабелем) один человек может «тянуть» гласный звук в свой микрофон, «изображая» собой несущий сигнал, а второй — говорить в другой микрофон. В итоге получится, будто первый имитирует манеру второго.

Некоторые звуковые карты (например, Creative Sound Blaster) имеют только монофонический микрофонный вход, а сигнал от единственного микрофона подается в оба канала сразу. В этом случае может помочь режим разделения с вычитанием. Несущий сигнал по выбору подается в один из каналов линейного входа карты — левый или правый. Сигнал с микрофона будет подмешан микшером карты в оба канала, так что в одном канале окажется чистый сигнал с микрофона, а в другом — смешанный сигнал. Cylonix вычтет чистый сигнал из смеси, получив в итоге несущий сигнал, а чистый канал использует в качестве модулятора.

В начало

В начало

Параметры несущего сигнала

Регуляторы CGain и MGain задают уровень несущего и модулирующего сигналов для синтезатора; их центральные области работают как индикаторы перегрузки усилителей синтезатора. Регуляторы Mix и Sibil управляют смешиванием выходного и модулирующего сигналов на выходе вокодера: первый задает общее соотношение уровней, второй — уровень высокочастотных компонент модулирующего сигнала, что используется для регулировки разборчивости шипящих и «свистящих» звуков.

Кнопка V/U (Voiced/Unvoiced) включает режим улучшенного распознавания шипящих звуков, Track — отслеживания изменений высоты звуков. Функция отслеживания реализована упрощенно, о чем прямо предупреждает описание: слежение получается недостаточно плавным и реалистичным.

В начало

В начало

Параметры синтезатора

Область регуляторов синтезатора, состоящая из 18 движков и ряда кнопок, работает следующим образом. Девять кнопок, расположенных слева вверху, задают параметр, который будет регулироваться движками в каждом из полосовых каналов независимо:

  • Level — уровень выходного сигнала в каналах синтезатора;
  • Pan — стереопанорама, баланс стереоканалов. При подаче сигналов разных полос в разные каналы достигается интересный «обволакивающий» стереоэффект, особенно в наушниках;
  • Dist — уровень искажения типа overdrive, вносимого после выполнения модуляции. Позволяет придать звуку резкость, звонкость;
  • Delay — время задержки модулирующего сигнала в полосе относительно его прихода от анализатора. Придает звуку различные пространственные эффекты;
  • Echo — уровень повторений модулирующего сигнала (эхо) относительно его собственного уровня;
  • ETime — интервал повторений эхо;
  • Regen — величина обратной связи в эхо. Определяет время затухания повторений исходного сигнала;
  • Slew — скорость реакции анализатора на исходный сигнал. Позволяет сгладить резкость переходов между звуками, сделать спады и нарастания более медленными, плавными;
  • Warp — сжатие/расширение динамического диапазона модулирующего сигнала. Дает более или менее выраженное изменение результата при одинаковом изменении интенсивности исходного звука.

Четыре кнопки с изменяемыми названиями, расположенные правее, устанавливают заранее заданные значения (пресеты): Zero — минимум, Full — максимум, None — нет эффекта, Ramp — линейно, Rand — случайно, Slow — медленно, Fast — быстро и т.п.

Кнопка Slave (подчиненность) управляет взаимной фиксацией движков: если она нажата, то перемещение движка левой кнопкой мыши вызывает параллельное перемещение всех остальных, а правой кнопкой — перемещение, пропорциональное удаленности от «зацепленного» движка. При неактивной кнопке Slave движки перемещаются независимо.

В начало

В начало

Общие параметры

Кнопка Audio выводит окно настройки звуковых устройств, как в начале работы вокодера.

Вокодер может работать и в режиме простого эквалайзера; тогда исходный сигнал подается сразу же на частотные фильтры, управляемые только движками. Этот режим включается кнопкой EQ.

Кнопка LSet загружает настройки вокодера из файла, RSet — запоминают текущие настройки в файл.

В начало

В начало

Использование MIDI-контроллеров

Кнопка MIDI выводит окно настройки MIDI-устройств, используемых для управления вокодером. Со входного (Input) MIDI-порта вокодер будет получать управляющие сообщения, на выходной (Output) порт он будет выводить сообщения при воздействии на его органы управления. Таким образом, ряд сообщений от входного устройства будет передаваться на выходное, попутно управляя работой самого вокодера.

Кроме самих устройств необходимо выбрать входной и выходной MIDI-каналы. Режим OMNI разрешает прием сообщений со всех каналов одновременно.

Каждый из MIDI-контроллеров (сообщения типа Control Change) может быть связан с любым из органов управления вокодером посредством кнопки Edit Controller Assignments.

Если у вас есть MIDI-клавиатура с колесами, движками и педалями, вы можете управлять вокодером непосредственно с их помощью. Можно также управлять при помощи джойстика, установив программу Joy4MIDI, MIDIJoy или подобную, преобразующую воздействия на джойстик в серии MIDI-сообщений, и драйвер типа Hubi's Loopback, чтобы передавать эти сообщения программе вокодера.

Работа со звуковыми файлами

Кнопка Load позволяет загрузить Wav-файлы, содержащие несущий и/или модулирующий сигналы. Таким образом можно промодулировать один произвольный звуковой сигнал изменениями другого. Если один из загружаемых файлов является стереофоническим, то будет предложено либо выбрать, из какого канала извлечь сигнал, либо взять сумму/разность каналов.

Кнопки PCar/PMod включают проигрывание несущего/модулирующего сигнала, а кнопки RptC/RptM — режим зацикливания (Repeated).

Помимо статьи на диске вы найдете файлы образцов звучаний для исходного сигнала:

  • church — церковный орган, нота «до» первой октавы;
  • churchmajor — то же; мажорный аккорд на этой же ноте;
  • overdrive — гитара с эффектом Overdrive, большая терция на ноте «до»;
  • choir_aah_A3 — хор, нота «ля» большой октавы;
  • choir_aah_A5 — то же; нота «ля» первой октавы;
  • celstial — синтетический тембр, минорный аккорд на ноте «до» первой октавы.

Вы можете загрузить каждое из звучаний в качестве несущего сигнала (carrier), запустить его в режиме зацикленного воспроизведения, после чего подавать вокодеру модулирующий сигнал — с микрофона или также из файла.

Функцией загрузки придется воспользоваться и в том случае, если звуковой адаптер не позволяет работать в полном дуплексе. Тогда придется вначале записать речь с микрофона в файл — например, посредством стандартной для Windows программой звукозаписи («Фонограф»), после чего загружать звук из файла в Cylonix.

Кнопка Rec включает режим записи выходного сигнала вокодера во внутренний буфер, Play — проигрывает записанный сигнал из этого буфера. Визуально начало и конец проигрывания никак не отображаются, поэтому остановить проигрывание до его завершения невозможно, что довольно неудобно.

В коммерческой версии доступна кнопка Save, сохраняющая сигнал, записанный в буфере, в файл на диске.

В начало

В начало

Другие программные вокодеры

Я выбрал для этого описания программу Cylonix только потому, что она представляет собой самостоятельный вокодер, созданный скорее для демонстрации возможностей и развлечения в реальном времени, нежели для профессиональной обработки звука и его записи. Для достижения более высокого качества и реализма следует воспользоваться профессиональным звуковым редактором. Встроенный вокодер есть в Cool Edit Pro (доступен в режиме Multitrack), а для редакторов Cubase, WaveLab или Sound Forge, можно подключить внешний модуль (plugin) вокодера — Vocode, HyperPrizm, Orange или любой другой.

КомпьютерПресс 3'2001