Страница 1 из 4

Festival как альтернатива Alice

Добавлено: Пн янв 07, 2013 3:18 pm
Anton_kulibin
Все привет.
Может кому то и пригодиться, полдня убил на привязку Festival
говорит он конечно не как виндовая элис, но инета ему по крайней мере ненадо.
1. Делаем все ка в этой статье. Конечно меня пути под себя
http://ru.festivalspeaker.wikia.com/wik ... 0%B8%D1%8F
2. Вносим изменения в файл common.class.php следующим образом

Код: Выделить всё

if ($google_file) {
    @touch($google_file);
    playSound($google_file, 1, $level);
   } else {
   // safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
      safe_exec(''.DOC_ROOT.'/scripts/festival/saytext_ru.sh "'.win2utf($ph).'"'); // для festival
   }
  }
При выполнеии первого пункта не забываем давать права на выполнение скрипта и на чтение запись во все папки.
Я так бился почти час, пока не сменил владельца папки ./festival/data

Re: Festival как альтернатива Alice

Добавлено: Пн янв 07, 2013 4:33 pm
arturmon
нужная вещь )

Re: Festival как альтернатива Alice

Добавлено: Вт янв 08, 2013 1:22 pm
sergejey
О, клёво, нужно внести в общий репозиторий.

Re: Festival как альтернатива Alice

Добавлено: Вт янв 08, 2013 5:14 pm
Anton_kulibin
У меня вылезла проблема, нашел синтезатор по типу Festival, RHVoice называется, дак никак не могу с ним с воевать, почему то не работает
safe_exec(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"', 1, $level);
когда пишу
system(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"');
то нормально скрипт отрабатывает и говорит то что надо, но опять не срабатывает dindon, или срабатывает, но познее

Re: Festival как альтернатива Alice

Добавлено: Вт янв 08, 2013 7:46 pm
sergejey
safe_exec от system отличается только тем, что команда в первом случае ставится в очередь и отрабатывается отдельным циклом. поэтому, если с циклами проблема, то оно может и не работать.

safe_exec было вообще сделано больше для windows, т.к. у меня там наблюдался странный баг -- если делаю несколько exec или system от имени веб-сервера, то он (веб-сервер) перестаёт отвечать на запросы вовсе.

Re: Festival как альтернатива Alice

Добавлено: Ср янв 09, 2013 8:45 am
Anton_kulibin
мда, в том то и дело , вот например стоит у меня будильник на 6:45
ну ка положено

Код: Выделить всё

if (isWeekDay()) {
if (timeIs('06:45')) {
say("Доброе утро");
say("Температура на улице".(gg('sensorulica.temp'))." градусов");
}
}
отрабатывает первый say("Доброе утро");, второй нет, и уже потом через минуту пролетает dindon, так и получается если запускать без очереди, то последовательность say просто в моем случае работать не будет. System команду обрабатывает но не может вывести все сразу.
Помучаюсь еще, самое интересное что с фестивалем Safe_exec работала, думаю что весь гемор с доступом в linux

Re: Festival как альтернатива Alice

Добавлено: Чт янв 10, 2013 12:27 pm
Anton_kulibin
Может кто нибудь подсказать, с помощью safe_exec передать например в файл RHVoice.php переменную $ph
код RHVoice.php в него необходимо

Код: Выделить всё

<?
$str =;
$str =utf8_encode($str);
echo $str;
exec ('echo '.$str.' | RHVoice -v 3 > /media/data/public_html/scripts/festival/Voice.wav'); 

 ?>
из common.class.php передать переменную $ph. Уже весь мозг сломал, но мне необходимо сделать через safe_exec, в противном случае процедура выполняется без очереди

Код: Выделить всё

 if ($google_file) {
    @touch($google_file);
    playSound($google_file, 1, $level);
   } else {
   // safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level);
 	// safe_exec(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"', 1, $level);
//  Safe_exec(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"');
//safe_exec(DOC_ROOT.'/scripts/RHVoice.php '.$ph);
    // exec ('echo "'.$ph.'" | RHVoice | play -q -');
    safe_exec(''.DOC_ROOT.'/scripts/festival/saytext_ru.sh "'.win2utf($ph).'"');
   }
  }

Re: Festival как альтернатива Alice

Добавлено: Пт янв 11, 2013 4:26 pm
Anton_kulibin
Ну вот немножко обобщу поискав и почитав форумы нашел 2 синтезатора речи для Linux.
1. Festival (Festvox-ru если ставить из репозитория, голосовых файлов примерно 190Мб)
2. RHVoice в репозитории нет пришлось собирать самому офф. сайт http://ru.nvda-community.org/?page_id=10. deb пакет - http://yadi.sk/d/nJNfu-Be1nXDY, голос Елены - http://yadi.sk/d/EDmsXDoM1nTDr

Как работать с фестивалем писал выше не повторяюсь.

Для RHVoice создал php скрипт такого содержания

Код: Выделить всё

#!/usr/bin/php
<?php
for ($i=2;$i!=$argc;$i++) {$str.=" $argv[$i]";}
exec ('echo'.$str.' | RHVoice -v 2| play -q -');
//exec ('echo '.$str.' | RHVoice -v 3 > /media/data/public_html/scripts/festival/Voice.wav'); 
//exec ('aplay /media/data/public_html/scripts/festival/Voice.wav > /dev/null 2>&1');
 ?>
закоментированные строки это вариант с создание отдельного файла, но при каждой фразе он переписывает. Мне больше нравиться первый вариант.
В файле common.class.php изменил строчку

Код: Выделить всё

if ($google_file) {
    @touch($google_file);
    playSound($google_file, 1, $level);
   } else {
   // safe_exec('cscript '.DOC_ROOT.'/rc/sapi.js '.$ph, 1, $level); //вариант для windows
    safe_exec('sudo php '.DOC_ROOT.'/scripts/RHVoice.php -- '.win2utf($ph), 1, $level); //RHVoice
   //safe_exec(''.DOC_ROOT.'/scripts/festival/saytext_ru.sh "'.win2utf($ph).'"'); //festival
   }
  }
В результате сравнения я остановился на RHVoice, он более приближеный к реалиям, есть какие то правила произношения.
Выбирать вам.

Re: Festival как альтернатива Alice

Добавлено: Пт янв 11, 2013 4:29 pm
sergejey
Антон, а можно где-то сэмплы русские послушать? Может сможешь закинуть сюда пару файликов?

Re: Festival как альтернатива Alice

Добавлено: Пт янв 11, 2013 4:41 pm
Anton_kulibin
Сейчас смоделируюю
Сделал для обоих синтезаторов.


1. Festival - http://yadi.sk/d/i52n5YEw1mzVv
2.RHVoice - http://yadi.sk/d/8eaIhDqn1mzW5