roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 07:52

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 132 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 17 май 2009, 15:39 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Цитата:
А можно через комп записать на флешку все что нужно и потом только читать с неё?

Можно, так и сделано, правда когда я свой звонок/манок делал I2C EEPROM были самым доступным носителем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 19 авг 2009, 16:05 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 19 авг 2009, 16:13 
Не в сети
Аватара пользователя

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

_________________
злой полицейский


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 19 авг 2009, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
да, искать нада по семантике работы разные.. народ этим занимается..

а данные которые есть выкладывай, они тут не помешают..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 19 авг 2009, 17:51 
Не в сети
Аватара пользователя

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

Код:
#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]);"?

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

Чтобы воспользоваться прогой её надо компильнуть и в строке запуска написать что ты хочешь разложить после имени проги. То есть так:


Вложения:
Комментарий к файлу: Изучая фишки gcc...
.png
.png [ 31.35 КиБ | Просмотров: 3353 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 19 авг 2009, 23:39 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 20 авг 2009, 00:08 
Не в сети
Аватара пользователя

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


Ну можно и не по слогам, а имено парами "звуков". Я когда то так и хотел делать. вс-кр-ик-ну-л - пары микшировать между собой кросс-фэйдом. А можно даже так вс-ск-кр-ри-ик-кн-ну-ул лучше получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 20 авг 2009, 00:25 
Не в сети
Аватара пользователя

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

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

А если про качество говорить... То да - это далеко не лучший выход. Самый лучший, ИМХО (и только ИМХО), - полный цикл синтеза звука.
Более реальный - синтез по фонемам. Там нужно предварительно раскладывать слова на фонемы и потом уже запускать файлы со записями звучания этих фонем. Суда можно прикрутить простейшую обработку.
А по слогам - самый простой. На мой взгляд с него лучше всего начинать. А потом двигаться дальше... Чтобы через пару лет запустить и сразу вырубить с гримасой отвращения на лице :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 20 авг 2009, 12:51 
Не в сети

Зарегистрирован: 22 июл 2008, 10:07
Сообщения: 38
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C
Спасибо, 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);



как отделить слова друг от друга пока не знаю, признак пробела как-то надо замутить...


Вложения:
Комментарий к файлу: Набор гласных, согласных и парных звуков: 8 bit, PCM (Unsigned) 11 025 Hz
VOICE.rar [321.36 КиБ]
Скачиваний: 48


Последний раз редактировалось yakuzaa 24 авг 2009, 10:36, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 20 авг 2009, 18:30 
Не в сети
Аватара пользователя

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

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

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

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

И, я думаю, лучше каким-то образом наладить работу с русскими буквами. Если кодировка однобайтная (типа cp1251), то особых проблем возникнуть не должно... Хотя тут я могу ошибаться. Думаю, кто-нибудь подскажет )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 24 авг 2009, 18:34 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 24 авг 2009, 19:32 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
Ну тогда уж тут http://torrents.ru/forum/viewtopic.php?t=1557655


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 18 май 2010, 20:59 
Не в сети
Аватара пользователя

Зарегистрирован: 18 май 2010, 20:23
Сообщения: 2
Skype: leonidy85
прог. языки: C, C++, asm, Delphi
Strijar писал(а):

уже тут


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 18 июн 2010, 13:35 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Говорилка для AVR
СообщениеДобавлено: 18 июн 2010, 13:55 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
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);


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 132 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO