roboforum.ru

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

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

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

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

Сообщение yakuzaa » 10 мар 2009, 13:12

опааа! проект до жути интересен! У меня сейчас что-то похожее в mp3 плеере стоит - цифры от 0 до 19, затем десятки и сотни женским голосом записаны в AT45DB041, прога написана чтобы из этих кусочков числа набирать, голос оочень качественный.. а что если бы эта "говорилка" хранила свои сэмплы в датафлешке? тогда-же можно очень качественную говорилку сварганить - а то я глянул - здесь все буквы описаны мааленьким массивчиком...
Код: Выделить всёРазвернуть
uint8_t PROGMEM sound_A        []={(  46), 0xE1,0xC3,0xE1,0xC7,0x8F,0x0F };
uint8_t PROGMEM sound_E        []={(  46), 0xF8,0x03,0x0F,0x07,0xC1,0xE3 };
uint8_t PROGMEM sound_I        []={(  46), 0xFF,0x40,0x17,0xFF,0x00,0x03 };
uint8_t PROGMEM sound_O        []={(  46), 0xF8,0x7C,0xC1,0xF1,0xF8,0x03 };
uint8_t PROGMEM sound_U        []={(  46), 0xFE,0x00,0x7F,0xFC,0x00,0x03 };


и т.д.
кароче предлагаю сделать говорилке апгрейд! :beer:
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение Strijar » 10 мар 2009, 13:21

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

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

Сообщение Duhas » 10 мар 2009, 13:28

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

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

Сообщение yakuzaa » 10 мар 2009, 13:34

Выкладываю рабочие процедуры для вывода звука из AT45DB041

Низкоуровневая Voiceout([начало фрагмента] , [конец фрагмента]) служит для вывода определенного интервала страниц из памяти (всего из 2048)

вот, например фраза "тысяча" Voiceout(1256 , 1282); занимает всего 26 страниц...

матрица Say([номер сэмпла]) выводит уже "нарезанные" сэмплы

ну и самое интересное Corresp([любое число от 0 до 1999]) - набирает сэмплы в фразу

будет звучать как "тысяча девятьсот девяносто девять"

Добавлено спустя 4 минуты 28 секунд:
объясните, кто может - какие фонемы за что отвечают - я запишу голосовые фонемы и попробую это все в датафлеш запихать...
Вложения
dataflash.h
(4.15 КиБ) Скачиваний: 496
dataflash.c
(8 КиБ) Скачиваний: 478
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение Strijar » 10 мар 2009, 13:44

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


[[ru:Фонема]]

Фоне́ма (др.-греч. φώνημα «звук») — минимальная единица звукового строя языка.
Аватара пользователя
Strijar
 
Сообщения: 664
Зарегистрирован: 28 авг 2006, 17:09
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов

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

Сообщение yakuzaa » 10 мар 2009, 13:52

да емае! :lol:
я знаю что такое фонемы! мне надо чтобы кто-нибудь объяснил назначения фонем в массиве
например, понятно что "sound_E" в массиве - это гласная "Е"
а вот какую букву этот массив воспроизводит - вообще не понятно:
Код: Выделить всёРазвернуть
uint8_t PROGMEM sound_S_z2     []={(  46),                      0xAA,0xAA,0x5A,0xA5, 0x5A,0xAA };
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение Strijar » 10 мар 2009, 14:20

yakuzaa писал(а):я знаю что такое фонемы! мне надо чтобы кто-нибудь объяснил назначения фонем в массиве например, понятно что "sound_E" в массиве - это гласная "Е"
а вот какую букву этот массив воспроизводит - вообще не понятно:


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

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

Сообщение yakuzaa » 10 мар 2009, 14:24

понятно, знач. не знаете.... :pardon:
люююууди! по таблице может кто-нибудь подсказать?
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение Strijar » 10 мар 2009, 14:47

yakuzaa писал(а):понятно, знач. не знаете....


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

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

Сообщение Duhas » 10 мар 2009, 14:51

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

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

Сообщение yakuzaa » 10 мар 2009, 15:08

глянул - примерно понятно... думаю как сейчас сделать чтобы без особых переделок фонемы из датафлеш дергать... :o
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение Strijar » 10 мар 2009, 15:34

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

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

Сообщение yakuzaa » 10 мар 2009, 15:37

можно засемплировать не только отдельные фонемы, но и слоги, цифры... благо размер датафлеши позволяет...
yakuzaa
 
Сообщения: 38
Зарегистрирован: 22 июл 2008, 10:07
Откуда: Россия, Екатеринбург
прог. языки: BascomAVR | Delphi | VB | C

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

Сообщение dr-mobius » 31 мар 2009, 21:25

Привет всем.
Недавно видел плату с прикрученной SD картой.
Я так подумал прикинул и что надумал...
Записать на карту достаточное количество вариантов ответа, используя кодировку mp3.
Далее прицепить плату звукового сенсора..
Написать программу анализа вопросов и в зависимости от задаваемого вопроса проигрывать вариант ответа :)Сорри темой ошибся...
Последний раз редактировалось dr-mobius 31 мар 2009, 21:50, всего редактировалось 2 раз(а).
dr-mobius
 
Сообщения: 1
Зарегистрирован: 31 мар 2009, 20:51
ФИО: Влад

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

Сообщение =DeaD= » 31 мар 2009, 21:26

И? В чем фишка? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 0

cron