roboforum.ru

Технический форум по робототехнике.

Простая аниматроника на Ардуино

Ответить

Re: Простая аниматроника на Ардуино

dimamichev » 31 июл 2020, 11:00

Сделал виртуального блючикена. Фразы записывал здесь:
https://apihost.ru/voice
Почему то процессинг избирательно позволяет использовать файлы (от размера как выяснилось не зависит, может 80 к выдать ошибку и 50 к, а 60 к пропустить ). Ошибка -IndexOutOfBoundsException (Эта ошибка выпадает в том случае, если мы пытаемся получить из массива элемент, позиция которого превышает размер массива) - такое пояснение нашёл, но смысл потаённый не ясен :) Поэтому дроблю на файлы-фразы и через кнопку перебор.

Код: Выделить всёРазвернуть
import processing.sound.*;
Amplitude amp;
SoundFile file;
float MUZ;
int i;
int m=0;
int m1=0;
int m2=0;
boolean fl_A=false;//
boolean fl_B=false;//
boolean fl_C=false;//
boolean fl_D=false;//
int nomer_treka=-1;//
void setup() {
  size(700, 700,P3D);
  background(0);
  amp = new Amplitude(this);
}     

void draw() {
  background(150);lights();
  translate(width/2, (height/1.5));
  delay(40);
  /////////////////// голосовые треки ///////////////////////////////////
  for (i=0;i<5;i++){MUZ=MUZ+100*amp.analyze();delay(3);}MUZ=MUZ/5;
  if (keyPressed&&key == ' ') {nomer_treka++;if(nomer_treka>2){nomer_treka=0;} delay(100);//если нажат пробел трек запускаем
  if(nomer_treka==0){ file = new SoundFile(this,"trek1.mp3");}
  if(nomer_treka==1){file.stop(); file = new SoundFile(this,"trek2.mp3");}
  if(nomer_treka==2){file.stop(); file = new SoundFile(this,"trek3.mp3");}
file.play();amp.input(file); }
  ///////////////////////////////////////////////////////////////////////
rotateY(PI*m/255); rotateZ(PI*m1/255);rotateX(PI*m2/255);//вращение аниматроника и глаз его
  if(fl_B==false){m++;}else{m--;}if(m==20){fl_B=true;}if(m==-20){fl_B=false;}
  if(fl_C==false){m1++;}else{m1--;}if(m1==10){fl_C=true;}if(m1==-10){fl_C=false;}
  if(fl_D==false){m2++;}else{m2--;}if(m2==5){fl_D=true;}if(m2==-30){fl_D=false;}
 
///////////////////// ИЗОБРАЖЕНИЕ АНИМАТРОНИКА /////////////////////////////////////////////////
strokeWeight(8);stroke(255); fill(255, 127,0);
rotateX(-PI/4);triangle(-150, 0, 150, 0, 0, -150);rotateX(PI/4);//верхняя часть рта
if(MUZ>10&&MUZ<22){rotateX(PI/4);triangle(-150, 0, 150, 0, 0, 150);rotateX(-PI/4);}else{rotateX(PI/2);triangle(-150, 0, 150, 0, 0, 150);rotateX(-PI/2);}//нижняя часть рта

noStroke();fill(255); translate(-90,-230,-30);rotateY(-PI*m/64); sphere(50);fill(150);translate(0,0,20);sphere(35);translate(0,0,-20);rotateY(PI*m/64); translate(90,230,30);//глаз
fill(255);translate(90,-230,-30);rotateY(-PI*m/64);sphere(50);fill(150);translate(0,0,20);sphere(35);translate(0,0,-20);rotateY(PI*m/64); translate(-90,230,30);//глаз

strokeWeight(4);stroke(0,100,255); noFill();translate(0,-50,50);for(i=0;i<47;i++){rotateY(-PI*i/32);arc(0, 0, 450, 700, 1.7*PI/2, 3*PI/2);translate(0,-450,0); strokeWeight(2);arc(0, 0, 150, 200,0, PI/2);//шевелюра
strokeWeight(4);translate(0,450,0);rotateY(PI*i/32);}translate(0,50,-50);//шевелюра
rotateY(-PI*m/255);
  //////////////////////////////////////////////////////////////////////
  }

Re: Простая аниматроника на Ардуино

Scorpio » 31 июл 2020, 17:52

Пошла программная движуха!
Приладь управление железным цыпленком по интернету. Чтобы давать домочадцам ценные указания, находясь вдали от дома.

Re: Простая аниматроника на Ардуино

Dmitry__ » 01 авг 2020, 00:18

Scorpio писал(а):Пошла программная движуха!

Я вот 30 лет думал, что умею писАть программы, но после прочтения исходника, генерящего ошибку "IndexOutOfBoundsException", понял, что я сопляк необстрелянный :lol:

Re: Простая аниматроника на Ардуино

Scorpio » 01 авг 2020, 02:03

Не парься! У тебя есть еще 30 лет, чтобы научиться)))

Re: Простая аниматроника на Ардуино

dimamichev » 01 авг 2020, 09:26

Ошибка выскакивающая устраняется путём смены используемого "ресурса текст-речь".
https://voxworker.com/ru
Добавил синхрон на реального аниматроника - виртуальный смотрится лучше. Записал сказку
https://proza.ru/2002/09/06-128
архив варианта прилагаю-переходы частей пробелом
Можно сделать приложение большое с выбором сказок, анимационных персонажей, панелью кнопок-опций. Но лень. Процессинг явно интереснее чем HiAsm.
Вложения
вид2.jpg
bluechiken.zip
(1.5 МиБ) Скачиваний: 0

Re: Простая аниматроника на Ардуино

Scorpio » 01 авг 2020, 15:43

У процессинга есть библиотека tts (текст в речь). Попробуй с ней поиграться. Чтобы не надо было звуковые файлы предварительно записывать.

Re: Простая аниматроника на Ардуино

dimamichev » 02 авг 2020, 09:26

Почитал тут,поставил библиотеку - русских букав не понимает.
https://www.local-guru.net/blog/pages/ttslib

Re: Простая аниматроника на Ардуино

Scorpio » 03 авг 2020, 00:50

Вероятно русскоязычный голосовой движок д.б. установлен на компе и выбран по умолчанию.

Re: Простая аниматроника на Ардуино

dimamichev » 03 авг 2020, 10:34

Не знаю, в панеле управления нашёл вкладку "преобразование текста в речь". Там кнопка "проба голоса". Ввёл текст в строку на русском - всё говорится на русском-женском :) А в примере библиотеки на мужском английском с машинным грубым призвуком-видимо не всё так просто.

Re: Простая аниматроника на Ардуино

Scorpio » 04 авг 2020, 02:32

Да, видимо как-то настраивать языки надо.

Re: Простая аниматроника на Ардуино

Bobbi86 » 30 сен 2022, 14:57

dimamichev писал(а):Ошибка выскакивающая устраняется путём смены используемого "ресурса текст-речь".

Добавил синхрон на реального аниматроника - виртуальный смотрится лучше. Записал сказку

архив варианта прилагаю-переходы частей пробелом
Можно сделать приложение большое с выбором сказок, анимационных персонажей, панелью кнопок-опций. Но лень. Процессинг явно интереснее чем HiAsm.


Вот в этом сервисе https://voicebot.su есть всякие прикольные звуковые эффекты, которыми можно дополнить речь персонажей. Будет интересно.
Вложения
2022-09-30_15-56-50.png

Re: Простая аниматроника на Ардуино

dimamichev » 30 сен 2022, 19:38

:)
Два года уже как не трогал аниматроника, всё уже позабылось.


Rambler\'s Top100 Mail.ru counter