roboforum.ru

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

Говорилка для AVR

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Говорилка для AVR

Сообщение contr » 17 май 2009, 15:39

А можно через комп записать на флешку все что нужно и потом только читать с неё?

Можно, так и сделано, правда когда я свой звонок/манок делал I2C EEPROM были самым доступным носителем.
contr
 
Сообщения: 987
Зарегистрирован: 17 апр 2009, 15:09
Откуда: Rostov-Don
Предупреждения: -1

Re: Говорилка для AVR

Сообщение yakuzaa » 19 авг 2009, 16:05

кароче надыбал я звуковой фрамент со всеми гласными и согласными буквами, а также всеми вариантами слогов (ба,бя,би, ва,вя,ви... и.т.д).
Вопрос - как сделать счканирование строки, чтобы к, примеру, прога выделяла из нее слоги (к примеру, ра+ди+о+ко+т) и брала соотв. звуковые фрагменты. Как-то пока я себе этот алгоритм не совсем представляю...
Думмаю пока сделаьть так: SD карта, разбить фрагмент на файлы, записать на карту, avr-dos ит.д; ну или если на сях, то есть уже отлаженная связка SD-карта + FatFs + vs1053... Если хто хочет помучаться вместе со мной - выложу тут аудио-файлик и кой какие исходники для работы с картой...
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

Re: Говорилка для AVR

Сообщение Digit » 19 авг 2009, 16:13

не могу говорить с уверенностью, но вроде бы подобный алгоритм я встречал на сайте http://algolist.ru/. Там то ли семантический разбор текста, то ли еще что-то этом духе...
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Говорилка для AVR

Сообщение Duhas » 19 авг 2009, 17:10

да, искать нада по семантике работы разные.. народ этим занимается..

а данные которые есть выкладывай, они тут не помешают..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: Говорилка для AVR

Сообщение Snable » 19 авг 2009, 17:51

Хм... Семантика... Там простой алгоритм...

Код: Выделить всёРазвернуть
#include <stdio.h>
#include <string.h>

#define GLASNAYA 1
#define SOGLASNAYA 2
#define NEPONYATNO 3

//const char gl[] = "уеыаоэяиюё"; //10 букв
//const char sogl[] = "йцкнгшщзхфвпрлджчсмтб"; //21 буква
// ъ и ь тоже можно добавить... в гласные, наверное...
const char gl[] = "eyuioa"; //6
const char sogl[] = "qwrtpsdfghjklzxcvbnm"; //20


int f(char w)
{
   int i;
   for (i = 1; i<=6; i++)
      if (w==gl[i]) return GLASNAYA;
   for (i = 1; i<=20; i++)
      if (w==sogl[i]) return SOGLASNAYA;
   return NEPONYATNO;
}

void process_word(char *w)
{
   printf("%s : \n", (char*)w);
   int i;
   int l = strlen(w);
   for (i = 0; i<l; i++)
   {
      if (f(w[i])==SOGLASNAYA)
      {
         if (i+1>=l)
         {
            printf("%c ",w[i]);
            continue;
         }
         if (f(w[i+1])==GLASNAYA)
         {
            printf("%c%c ",w[i],w[i+1]);
            i++;
            continue;
         }  else // SOGLASNAYA
         {
            printf("%c ", w[i]);
            continue;
         }
      }
      if (f(w[i])==GLASNAYA) printf("%c ",w[i]);
      
   }
   printf("\n");
}

int main(int argc, char** argv)
{
   int i;
   for (i = 0; i<argc; ++i) process_word(argv[i]);
   return 0;
}



Звиняйте за корявый Си, если он корявый... Обычно на Си++ пишу...
Кстати, нет другого способа сделать это - "printf("%c ",w[i]);"?

Теперь осталось только вместо вывода на экран звуки издавать.

Чтобы воспользоваться прогой её надо компильнуть и в строке запуска написать что ты хочешь разложить после имени проги. То есть так:
Вложения
.png
Изучая фишки gcc...
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

Re: Говорилка для AVR

Сообщение boez » 19 авг 2009, 23:39

Предлагаю представить себе красивое произнесение таким девайсом к примеру слова "вскрикнул" ;)
В общем в слитной речи не все так просто со слогами...
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Говорилка для AVR

Сообщение Strijar » 20 авг 2009, 00:08

Предлагаю представить себе красивое произнесение таким девайсом к примеру слова "вскрикнул"


Ну можно и не по слогам, а имено парами "звуков". Я когда то так и хотел делать. вс-кр-ик-ну-л - пары микшировать между собой кросс-фэйдом. А можно даже так вс-ск-кр-ри-ик-кн-ну-ул лучше получится.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Говорилка для AVR

Сообщение Snable » 20 авг 2009, 00:25

yakuzaa писал(а):Вопрос - как сделать счканирование строки, чтобы к, примеру, прога выделяла из нее слоги (к примеру, ра+ди+о+ко+т) и брала соотв. звуковые фрагменты. Как-то пока я себе этот алгоритм не совсем представляю...

Собственно прога - ответ на этот вопрос.

А если про качество говорить... То да - это далеко не лучший выход. Самый лучший, ИМХО (и только ИМХО), - полный цикл синтеза звука.
Более реальный - синтез по фонемам. Там нужно предварительно раскладывать слова на фонемы и потом уже запускать файлы со записями звучания этих фонем. Суда можно прикрутить простейшую обработку.
А по слогам - самый простой. На мой взгляд с него лучше всего начинать. А потом двигаться дальше... Чтобы через пару лет запустить и сразу вырубить с гримасой отвращения на лице :D
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

Re: Говорилка для AVR

Сообщение yakuzaa » 20 авг 2009, 12:51

Спасибо, Snable!

перенес прогу на авр-ку в CVAVR - все пашет гууд, только циклы надо от нуля делать, массивы гласных и согласных все-таки нулевые элементы содержат...

Код: Выделить всёРазвернуть
const char gl[] = "eyuioa#"; //6
const char sogl[] = "qwrtpsdfghjklzxcvbnm"; //20

int f(char w)
{
   int i;
   for (i = 0; i<=6; i++)
      if (w==gl[i]) return GLASNAYA;
   for (i = 0; i<=19; i++)
      if (w==sogl[i]) return SOGLASNAYA;
   return NEPONYATNO;
}


юзаю функцию process_word(char *w);
мягкий знак у меня пока обозначается решеткой.

Код: Выделить всёРазвернуть
strcpyf(fname, "sireneven#kij parovozik");
process_word(fname);



как отделить слова друг от друга пока не знаю, признак пробела как-то надо замутить...
Вложения
VOICE.rar
Набор гласных, согласных и парных звуков: 8 bit, PCM (Unsigned) 11 025 Hz
(321.36 КиБ) Скачиваний: 48
Последний раз редактировалось yakuzaa 24 авг 2009, 10:36, всего редактировалось 1 раз.
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

Re: Говорилка для AVR

Сообщение Snable » 20 авг 2009, 18:30

только циклы надо от нуля делать

Это то да... Просто я потом русскому его пытался научить в кодировке UTF-8... А там это весьма весело... Кстати, тогда, наверное, вместо "<=" надо "<" ставить в условиях продолжения.

как отделить слова друг от друга

Вместо пробела ничего не воспроизводить некоторое время будет достаточно. Тоже самое вместо знаков и припинания и так далее... Для этого введена константа NEPONYATNO.

И, я думаю, лучше каким-то образом наладить работу с русскими буквами. Если кодировка однобайтная (типа cp1251), то особых проблем возникнуть не должно... Хотя тут я могу ошибаться. Думаю, кто-нибудь подскажет )))
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

Re: Говорилка для AVR

Сообщение Snable » 24 авг 2009, 18:34

Кстати, тем, кому интересна теория синтеза и анализа речи - есть ссылочка.
Тут кладезь знаний :-)
А для меня - источник геморроя - еще минимум 2 года придется грызть :-)
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

Re: Говорилка для AVR

Сообщение Strijar » 24 авг 2009, 19:32

Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

Re: Говорилка для AVR

Сообщение leonidy-85 » 18 май 2010, 20:59

Strijar писал(а):Ну тогда уж тут http://torrents.ru/forum/viewtopic.php?t=1557655

уже тут
Аватара пользователя
leonidy-85
 
Сообщения: 2
Зарегистрирован: 18 май 2010, 20:23
Skype: leonidy85
прог. языки: C, C++, asm, Delphi

Re: Говорилка для AVR

Сообщение Kozinaka » 18 июн 2010, 13:35

Торренты прикрыли. А что было по ссылке? :)
Аватара пользователя
Kozinaka
 
Сообщения: 85
Зарегистрирован: 17 ноя 2009, 16:21
Откуда: Москва
прог. языки: C/C++/C#
ФИО: Олег Козлов

Re: Говорилка для AVR

Сообщение galex1981 » 18 июн 2010, 13:55

h t t p : / / r u t r a c k e r . o r g / / f o r u m / v i e w t o p i c . p h p ? t = 1 5 5 7 6 5 5
Подборка книг по ИИ
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21