Страница 92 из 157
(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string))))) (utt.wave.resample wholeutt 8000) (utt.wave.rescale wholeutt 5) (utt.send.wave.client wholeutt)))
Этот текст можно поместить в любом месте файла, но только так, чтобы он не попал в другие круглые скобки.
Второй (и более традиционный) способ - скомпилировать Festival со специальным патчем для Asterisk (располагающимся в подпапке contrib/ папки исходного кода Asterisk).
Информация по обоим методам имеется в файле README.festival, который находится в подпапке contrib/ папки исходного кода Asterisk. Для любого метода вам придется изменить список доступа Festival в файле festival.scm. Просто выполните поиск по слову localhost и замените его полным доменным именем своего сервера.
Оба метода настраивают Festival так, чтобы он мог правильно взаимодействовать с Asterisk. Настроив Festival, необходимо запустить сервер Festival. После этого можно вызывать приложение Festival() из диалплана.
Конфигурация Asterisk для работы с Festival
Конфигурационный файл Asterisk, обеспечивающий настройки для работы с Festival, называется festival.conf, что вполне логично. В этом файле задаются имя хоста и порт используемого сервера Festival, а также некоторые настройки для кэширвания речи, генерируемой Festival. Для большинства установок (если вы собираетесь запускать Festival на своем сервере Asterisk) прекрасно подходят настройки по умолчанию.
Запуск сервера Festival
Чтобы запустить сервер Festival для отладки, просто выполните команду festival с аргументом --server: [[email protected]/* */ ~]# festival --server Убедившись в том, что сервер Festival работает и не отклоняет ваших соединений, можно запустить Festival, введя следующее: [[email protected]/* */ ~]# festival_server 2>&1 >/dev/null &
Вызов Festival из диалплана
Теперь, когда Festival сконфигурирован и сервер Festival запущен, организуем его вызов в простом диалплане:
exten => 123,1,Answer()
exten => 123,2,Festival(Asterisk and Festival are working together)
Перед вызовом Festival() всегда должно быть вызвано приложение Answer(), чтобы гарантировать установление соединения по каналу.
Когда Asterisk соединяется с Festival, на терминале, с которого был запущен сервер Festival, должен появиться такой вывод:
[[email protected]/* */ ~]# festival --server