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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Пн янв 07, 2013 3:18 pm

Все привет.
Может кому то и пригодиться, полдня убил на привязку 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
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

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

Сообщение arturmon » Пн янв 07, 2013 4:33 pm

нужная вещь )
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт янв 08, 2013 1:22 pm

О, клёво, нужно внести в общий репозиторий.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Вт янв 08, 2013 5:14 pm

У меня вылезла проблема, нашел синтезатор по типу Festival, RHVoice называется, дак никак не могу с ним с воевать, почему то не работает
safe_exec(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"', 1, $level);
когда пишу
system(DOC_ROOT.'/scripts/festival/saytext.sh "'.$ph.'"');
то нормально скрипт отрабатывает и говорит то что надо, но опять не срабатывает dindon, или срабатывает, но познее
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт янв 08, 2013 7:46 pm

safe_exec от system отличается только тем, что команда в первом случае ставится в очередь и отрабатывается отдельным циклом. поэтому, если с циклами проблема, то оно может и не работать.

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Ср янв 09, 2013 8:45 am

мда, в том то и дело , вот например стоит у меня будильник на 6:45
ну ка положено

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

if (isWeekDay()) {
if (timeIs('06:45')) {
say("Доброе утро");
say("Температура на улице".(gg('sensorulica.temp'))." градусов");
}
}
отрабатывает первый say("Доброе утро");, второй нет, и уже потом через минуту пролетает dindon, так и получается если запускать без очереди, то последовательность say просто в моем случае работать не будет. System команду обрабатывает но не может вывести все сразу.
Помучаюсь еще, самое интересное что с фестивалем Safe_exec работала, думаю что весь гемор с доступом в linux
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Чт янв 10, 2013 12:27 pm

Может кто нибудь подсказать, с помощью 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).'"');
   }
  }
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Пт янв 11, 2013 4:26 pm

Ну вот немножко обобщу поискав и почитав форумы нашел 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, он более приближеный к реалиям, есть какие то правила произношения.
Выбирать вам.
Последний раз редактировалось Anton_kulibin Пт янв 11, 2013 10:27 pm, всего редактировалось 1 раз.
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Пт янв 11, 2013 4:29 pm

Антон, а можно где-то сэмплы русские послушать? Может сможешь закинуть сюда пару файликов?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Anton_kulibin
Сообщения: 354
Зарегистрирован: Вт окт 09, 2012 8:05 am
Откуда: Луза Кировская обл. Россия
Благодарил (а): 20 раз
Поблагодарили: 35 раз

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

Сообщение Anton_kulibin » Пт янв 11, 2013 4:41 pm

Сейчас смоделируюю
Сделал для обоих синтезаторов.


1. Festival - http://yadi.sk/d/i52n5YEw1mzVv
2.RHVoice - http://yadi.sk/d/8eaIhDqn1mzW5
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
Ответить