Festival
Материал из Xgu.ru
Festival — система синтеза речи, разработанная в Эдинбургском университете.
Поддерживает английский, уэльский и испанский языки. Существуют пакеты расширения
для многих других языков, в том числе для русского.
Содержание |
[править] Начальная настройка Festival
По умолчанию Festival использует OSS, для того чтобы заставить его работать с ALSA, необходимо добавить такие строки в конфигурационный файл /etc/festival.scm или ~/.festivalrc[1]:
(Parameter.set 'Audio_Command "aplay -D plug:dmix -q -c 1 -t raw -f s16 -r $SR $FILE") (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Required_Format 'snd)
Пример использования:
%$ festival Festival Speech Synthesis System 1.96:beta July 2004 Copyright (C) University of Edinburgh, 1996-2004. All rights reserved. For details type `(festival_warranty)' festival> (SayText "Good morning, welcome to Festival") Warning: format is changed to S16_BE #<Utterance 0xb6a49fe8> festival>
[править] Русификация Festival
$ sudo apt-get install festvox-ru $ cat kiev-ru.txt | text2wave -eval '(voice_msu_ru_nsh_clunits)' > kiew-ru.wav
[править] Интеграция Festival и Asterisk
Festival можно использовать в сетях IP-телефонии как генератор речи. Для этого необходимо инсталлировать и запустить Festival-сервер, настроить его на работу с Астериск и указать в соответствующих места диалплана действия Festival()[2].
Конфигурация /etc/festival.scm:
;; Enable access to localhost (needed by debian users) (set! server_access_list '("localhost\\.localdomain" "localhost")) ;;; Command for Asterisk begin (define (tts_textasterisk string mode) "(tts_textasterisk STRING MODE) Apply tts to STRING. This function is specifically designed for use in server mode so a single function call may synthesize the string. This function name may be added to the server safe functions." (let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string))))) (utt.wave.resample wholeutt 8000) (utt.wave.rescale wholeutt 5) (utt.send.wave.client wholeutt))) ;;; Command for Asterisk end ;; set russian voice (comment the following 2 lines to use british_american) (language_russian) (set! voice_default 'voice_msu_ru_nsh_clunits)
Добавить в загрузку:
%# cp /usr/share/doc/festival/examples/festival.init /etc/init.d/festival %# chmod +x /etc/init.d/festival %# vi /etc/default/festival RUN_FESTIVAL=yes %# /etc/init.d/festival start %# ps aux | grep festival festival 9435 0.3 1.0 25564 21284 ? S 22:49 0:00 /usr/bin/festival --server -b /etc/festival.scm root 9459 0.0 0.0 3116 724 pts/1 R+ 22:49 0:00 grep fest
Подключаем Festival к астериску:
%# vi /etc/asterisk/extensions.conf +exten => 342,1,Answer +exten => 342,n,Festival('Hello from Festival') %# /etc/init.d/asterisk restart
Дополнительная настройка Asterisk, касающуюся интеграции с сервером Festival, выполняется в файле /etc/asterisk/festival.conf[3].
Если нужно выполнять динамическое генерирование проигрываемого текста налету, нужно использовать внешние программы (например, text2wave из пакета festival) и потом проигрывать полученный файл с помощью Playback.
[править] Подключение Festival через AGI
- Источник: [1]
Немного изменённый скрипт:
#!/usr/bin/perl use Asterisk::AGI; use File::Basename; use Digest::MD5 qw(md5_hex); $AGI = new Asterisk::AGI; my %input = $AGI->ReadParse(); my $f = $ARGV[0]; my $text = "@ARGV"; if (open(F, "$f")) { local $/; $text = <F>; } my $hash = md5_hex($text); my $sounddir = "/var/lib/asterisk/sounds/tts"; my $wavefile = "$sounddir/"."tts-$hash.wav"; unless (-f $wavefile) { open(fileOUT, ">$sounddir"."/say-text-$hash.txt"); print fileOUT "$text"; close(fileOUT); my $execf="text2wave -eval '(voice_msu_ru_nsh_clunits)' $sounddir/say-text-$hash.txt -F 8000 -o $wavefile"; system($execf); unlink($sounddir."/say-text-$hash.txt"); } $wavefile =~ s/.wav$//; $AGI->exec('Playback', $wavefile);
Вызов скрипта из диалплана:
exten => 8700,1,AGI(/usr/local/bin/asterisk-festival.pl,/var/tmp/burunduk-ru.txt)
При звонке на номер 8700 проиграется содержимое файла /var/tmp/burunduk-ru.txt.
[править] Дополнительная информация
- The Festival Speech Synthesis System (англ.)
- HOWTO: Make festival TTS use better voices (MBROLA / CMU / HTS) (англ.) — добавление поддержки более качественных голосов
- German Text-to-Speech (англ.) — коллекция всех существующих на сегодняшний день систем синтеза немецкой речи (некоторые образцы очень впечатляют)
[править] Примечания
- ↑ https://help.ubuntu.com/community/TextToSpeech
- ↑ http://lodge.glasgownet.com/2009/05/20/asterisk-and-festival-integration/
- ↑ http://www.voip-info.org/wiki/view/Asterisk+config+festival.conf