Идея сделать робота пришла давно, и не какого-то примитивного объезжающего препятствия и моргающего светодиодами, а более менее, приближенного к человеческому функционалу. Проще говоря, он должен говорить, понимать, видеть и может быть ездить. Для начала решили научить его разговаривать, ниже небольшая шпаргалка как это сделать:
Пробуем установить синтезаторы речи, 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
В следующий раз опишем , как мы его научили транслировать видео
Комментариев: 11
m
04.03.2013 в 03:22 ответДа, Festival отличный Text-To-Speech движок. Круто, что под Raspbian'ом легко заводится
RomanNV5
04.03.2013 в 08:00 ответЗдорово! Вобще не слышал ранее об этом пакете. Мы с сыном собрались его радиоуправляемый вездеход в автономного робота на базе RPi превратить. А теперь он ещё и говорить сможет!
foxter6
04.03.2013 в 11:17 ответОтличный движок! Лучший из тех что пробовал. Как-то учил разговаривать свой домашний сервак, утром проговаривал прогноз погоды) Иногда неправильно ставит ударение, можно для исправления попробовать поставить 2 гласные подряд(говорил холОдно, если написать хоолодно, то произнесет хОлодно)
JackM10
04.03.2013 в 12:06 ответС ударением проблема легко решается: #echo “Привет дорог+ой друг” | festival –tts –language Russian гласная после + и есть ударная гласная
RomanNV5
05.03.2013 в 09:11 ответНаучить бы её разговаривать голосом GlaDOS из Портала...
ovaday11
07.10.2013 в 17:30 ответ+ Тоже интересуюсь)
JackM10
05.03.2013 в 16:19 ответСегодня дописал скрипт распознавания речи на движке google API , работает четко. Осталось создать диалоговую базу и подключить микрофон, жаль у нас такие не продаются. Тогда можно будет проводить беседу с роботом. Как все сделаю выложу скрипты , может кому нибудь интересно будет.
Kornell
16.06.2014 в 16:24 ответжаль, что google сильно ограничил использование — 50 запросов в день
m
05.03.2013 в 18:49 ответ>>Как все сделаю выложу скрипты , может кому нибудь интересно будет Да интересно. Лучше даже с видео, интересно, насколько качественно Google может распознавать русскую речь
kspitfire8
06.03.2013 в 04:34 ответДа, видео с результатом — было бы здорово! )
Serega0
10.03.2013 в 12:57 ответОлично