Присоединяйтесь!
Авторизация
tts    text-to-speach   

Raspberry espeak , festival

03 March 2013 - Автор JackM10

Идея сделать робота пришла давно, и не какого-то примитивного объезжающего препятствия и моргающего светодиодами, а более менее, приближенного к человеческому функционалу. Проще говоря, он должен говорить, понимать, видеть и может быть ездить. Для начала решили научить его разговаривать, ниже небольшая шпаргалка как это сделать:

Пробуем установить синтезаторы речи, espeak.

Espeak работает быстро, но на английском, русский там очень безобразный, если достаточно английского языка , то на нем можно остановиться и festival не ставить:

pi@raspberry:#apt-get install espeak

Запуск воспроизведения.

pi@raspberry:#espeak –v en –s 100 “Hello my darling”

если услышали что то в динамиках значит все ОК, в противном случае анализируем ошибки. Ниже вариант на русском языке:

pi@raspberry:#espeak –v ru –s 100 “привет дорогой друг”

Вариант чтения из файла: pi@raspberry:#espeak –v ru –s 100 ./text_file.txt

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

Установка festival: pi@raspberry:#apt-get install alsa-utils festival festvox-ru speech-tools

пакет festvox-ru занимаетпочти 200 мб , поэтому придется запастись терпением. После этого запускаем: pi@raspberry:#echo “Привет дорог+ой друг” | festival–tts –language Russian

Вот в вышеупомянутом варианте запуска проходит порядка 50-60 секунд прежде, чем начнется воспроизведение. Хочу заметить что плюсик перед буквой +о означает ударение

Вот вариант из текстового файла:

pi@raspberry:#festival

–tts –language russian ./text_file.txt

Существует вариант работы через сервер festival , в этом случае задержка составляет от 20 до 30 секунд.

Старт сервера:

pi@raspberry:#festival–server –language russian

Клиент:

pi@raspberry:#/usr/bin/festival_client --ttw ./text_file.txt | aplay

Другой вариант:

pi@raspberry:# echo "Привет " | /usr/bin/festival_client --ttw | aplay

Вышеупомянутые варианты работы с festival удобны для работы с меняющимися текстами, к примеру сообщением даты и времени через crontab. Если имеют место повторяющиеся фразы, например «Внимание» или «Тревога», то лучше создать архив .wav файлов и потом их использовать:

pi@raspberry:#cat /home/pi/wav/txt_file.txt | text2wav –otype wav –eval(‘language-russian’) –o /home/pi/wav/alarm.wav

В файле пишем типа «Внимание сработала сигнализация».

Тогда: pi@raspberry:#aplay /home/pi/wav_rep/alarm.wav работает просто мгновенно.

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

#!/bin/sh 
 stime_M=$(date +%M)  
stime_H=$(date +%H)  
stime_Mn=$(date +%m)  
stime_D=$(date +%_d) 
 stime_W=$(date +%w) 
 MN=$stime_Mn 
 WW=$stime_W    
 if [ $WW = 1 ]  then  week="Понедельник"  fi     
if [ $WW = 2 ]   then  week="Вторник"  fi    
 if [ $WW = 3 ]   then  week="Среда"  fi        
if [ $WW = 4 ]   then  week="четверг"  fi        
if [ $WW = 5 ]   then  week="пятница"  fi     
if [ $WW = 6 ]   then  week="суббота"  fi     
if [ $WW = 0 ]   then  week="воскресенье"  fi         
  if [ $MN = 01 ]  then  mon="января"  fi    
 if [ $MN = 02 ]   then  mon="февраля"    
 fi     if [ $MN = 03 ]   then  mon="марта"  
   fi     if [ $MN = 04 ]   then  mon="апреля"  
   fi        if [ $MN = 05 ]   then  mon="мая" 
 fi     if [ $MN = 06 ]    then   mon="июня"  
 fi     if [ $MN = 07 ]    then   mon="июля"  
 fi     if [ $MN = 08 ]    then   mon="августа"   fi  
   if [ $MN = 09 ]    then   mon="сентября"   fi  
   if [ $MN = 10 ]    then   mon="октября"  
 fi     if [ $MN = 11 ]    then   mon="ноября"   fi
     if [ $MN = 12 ]    then   mon="декабря"   fi  
   echo "Сегодня"  $stime_D $mon $week "Время в системе" $stime_H "часов" $stime_M "минут" | festival --tts --language russian

В следующий раз опишем , как мы его научили транслировать видео

03 March 2013
JackM10
автор статьи

Комментариев: 9

  1. admin

    03 March 2013 - Ответить

    Да, Festival отличный Text-To-Speech движок. Круто, что под Raspbian'ом легко заводится

  2. RomanNV5

    04 March 2013 - Ответить

    Здорово! Вобще не слышал ранее об этом пакете. Мы с сыном собрались его радиоуправляемый вездеход в автономного робота на базе RPi превратить. А теперь он ещё и говорить сможет!

  3. foxter6

    04 March 2013 - Ответить

    Отличный движок! Лучший из тех что пробовал. Как-то учил разговаривать свой домашний сервак, утром проговаривал прогноз погоды) Иногда неправильно ставит ударение, можно для исправления попробовать поставить 2 гласные подряд(говорил холОдно, если написать хоолодно, то произнесет хОлодно)

  4. JackM10

    04 March 2013 - Ответить

    С ударением проблема легко решается: #echo “Привет дорог+ой друг” | festival –tts –language Russian гласная после + и есть ударная гласная

  5. RomanNV5

    05 March 2013 - Ответить

    Научить бы её разговаривать голосом GlaDOS из Портала...

    • ovaday11

      07 October 2013 - ответить

      + Тоже интересуюсь)

  6. JackM10

    05 March 2013 - Ответить

    Сегодня дописал скрипт распознавания речи на движке google API , работает четко. Осталось создать диалоговую базу и подключить микрофон, жаль у нас такие не продаются. Тогда можно будет проводить беседу с роботом. Как все сделаю выложу скрипты , может кому нибудь интересно будет.

    • Kornell

      16 June 2014 - ответить

      жаль, что google сильно ограничил использование — 50 запросов в день

  7. admin

    05 March 2013 - Ответить

    >>Как все сделаю выложу скрипты , может кому нибудь интересно будет Да интересно. Лучше даже с видео, интересно, насколько качественно Google может распознавать русскую речь

  8. kspitfire8

    06 March 2013 - Ответить

    Да, видео с результатом — было бы здорово! )

  9. Serega0

    10 March 2013 - Ответить

    Олично

Отправить комментарий

Авторизуйтесь для отправки комментария

Присоединяйтесь
Новые сообщения