• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

JL SoC

pvvx

Активный участник сообщества
Тут то прикол в том, что счас nikolz вдрух сядет и начнет писать на asm для DSP, вместо отсылки по чужим ссылкам Ж)
Код:
/************ Поиск полигона ***********************************************/
Search_pol:
                i1 = fdata; l1=0;
s_in_next_sec:
                call Read_cashe;
                if ne jump search_err_ar;
                m1 = -256;
                modify(i1,m1);
                m1 = 1;
                ax0 = dm(x);            // lon
                ax1 = dm(y);            // lat
for_search:
                ay0 = fdata;
                ar = i1;
                ar = ar - ay0;
                if ge jump s_in_next_sec;

                sr0 = dm(i1,m0);        //+0   lsw 
                sr1 = dm(i1,m0);        //+1   msw 
                ar = tstbit 15 of sr1;  // начало блока полигона ?
                if eq jump format_err;  // нет. "ошибка формата"
                ar = tstbit 7 of sr0;   // конец блока полигонов ?
                ar = sooNoPol;          // "Полигон не найден"
                if ne jump no_search;   // да. "Полигон не найден"
                ar = clrbit 15 of sr1;
                dm(func_sec) = ar;     
                sr = lshift sr0 by 8(lo);
                dm(func_ptr) = sr1;   
                sr = lshift sr0 by 4(lo);
                sr = lshift sr0 by -12(lo);
                ar = pass sr0;        // клетка полностью перекрывается этим полигоном ?
                if eq jump Go_next_map; // да.
                sr0 = dm(i1,m0);      // площадь полигона low 16 bit
                sr1 = dm(i1,m0);      // площадь полигона hi 16 bit
                ar = ar + 1;          // получить в ar число точек в полигоне - 1
                cntr = ar;
                ay0 = dm(i1,m0);
                ar = ay0 - ax0, ay0 = dm(i1,m0);
                ar = ay0 - ax1, my0 = ar;
                mx0 = ar;
                do calc_Sx until ce;
                 ay0 = dm(i1,m0);
                 ar = ay0 - ax0, ay0 = dm(i1,m0);
                 ar = ay0 - ax1, my1 = ar;
                 mr = ar*my0(ss), my0 = my1;
                 mr = mr - mx0*my1(ss), mx0 = ar;
                 ar = pass mr2, ay0 = sr0;
                 if ne jump calc_Sx;
                 ar = ay0 - mr0, ay0 = sr1;
                 ar = ay0 - mr1 + C - 1, sr0 = ar;
calc_Sx:         sr1 = ar;
                none = pass ar;
                if lt jump for_search;
                call SM_off;           /* отключить SM */
                none = pass 0;         // полигон найден.
                rts;
/* "Не найдена карта" или "Полигон не найден" */
no_search:
                call search_err_ar;
                none = pass 1;
                rts;
format_err:
                   ar = sooErr2;                  // "сбой формата полигонов"
search_err_ar:
                dm(error_code) = ar;
search_err:
                call SM_off;           /* отключить SM */
                none = pass -1;
                rts;
Эт мелкий кусок из программы к тому устройству...
 

pvvx

Активный участник сообщества
Но я больше железячник, мне интересно исполнение.
Ну в том проекте вдвоем справились: подбор элементов, схема, заказ плат и монтаж опытных, все программы, инструкции исполнителям остальных задач, математика, алгоритмы, обкатка… и даже частичная после-продажа, чтобы дополнить свою личную прибыль :)
Вот от этого проекта остались уточненные до 1 метра карты Киева :) Там тоже были наездники, которые наезжали треки для совмещения карт и фотоснимков... Можно точно бомбить, но наверно там уже изменилось многое - 20 лет прошло... :(
 

pvvx

Активный участник сообщества
Тогда это было интересно, да прикольно – садится в авто кто и не верит, что машина знает текущий адрес. Соглашались на том, что она читает таблички на домах :) По другому было не убедить и не объяснить. Из-за этого были проблемы и при продаже – клиент не верил, что это возможно и в 90% требовалась частная демонстрация…
 

nikolz

Well-known member
Тогда это было интересно, да прикольно – садится в авто кто и не верит, что машина знает текущий адрес. Соглашались на том, что она читает таблички на домах :) По другому было не убедить и не объяснить. Из-за этого были проблемы и при продаже – клиент не верил, что это возможно и в 90% требовалась частная демонстрация…
Если Вы действительно хотите понять что из себя представляет TTS, то почитайте хотя бы книгу
Лобанов,Цирульник.Компьютерный синтез и клонирование речи (2008)
чел всю жизнь занимался разработкой подобных систем.
-------------
прочитаете, тогда побеседуем по теме без трепа.
 

pvvx

Активный участник сообщества
Если Вы действительно хотите понять что из себя представляет TTS, то почитайте хотя бы книгу
Лобанов,Цирульник.Компьютерный синтез и клонирование речи (2008)
чел всю жизнь занимался разработкой подобных систем.
-------------
прочитаете, тогда побеседуем по теме без трепа.
Дык уже "почитали" и и выяснили - реализация требует Intel AVX2 2 ядра X ГГц. На остальных платформах не работает.
И это только сама "говорилка" скриптов, без разбора текста, слов с ударениями и прочего. Требуется ручная обработка или типа ИИ.
 

pvvx

Активный участник сообщества
Говорилок существует два типа:
1 использующие заранее заготовленные и обработанные куски слов
2 генерирующие фонемы, их огибающие, стыковку и скорость

Для большинства технических устройств достаточно сборщика из готовых кусков звука или целых слов, даже не фонем. Слова и предложения там описываются скриптом для выборки и стыковки этих кусков. Там всё жестко и все фразы заранее назначены.
А для вашей задачи - чтения книг – нужен разбор текста, что есть задача сложнее фонемо-говорилки.
 

Alcest

Member
Есть огромное количество начитанных профессиональными актерами книг. Тут задача озвучить название файла, и номер главы, страницы, абзаца при необходимости. А не текст книги читать от начала до конца.
 

pvvx

Активный участник сообщества
Есть огромное количество начитанных профессиональными актерами книг. Тут задача озвучить название файла, и номер главы, страницы, абзаца при необходимости. А не текст книги читать от начала до конца.
Это всё и делает "Алиса" с минимальным скриптом управления. Но как запихать "интеграцию" и связь по инет в JL чип знает только nikolz.
Но пока он не может скрестить инет-радио в ESP с BT колонкой...
Так что ждать ещё долго:
прочитаете, тогда побеседуем по теме без трепа.
nikolz ещё не подготовил ссылок для чтения, т.к. их пока нема.
 

nikolz

Well-known member
Есть огромное количество начитанных профессиональными актерами книг. Тут задача озвучить название файла, и номер главы, страницы, абзаца при необходимости. А не текст книги читать от начала до конца.
это задача минимум.
А максимум - это читать текст с листа. Т е скачиваешь из интернета текст книги и читалка тебе читает.
В результате на флешку можно тысячи книг записать
----------------------------
Да, начитанные книги есть, но как быть с новыми книгами.
Кроме того, есть решения клонирования голоса.
т е можно читать например сообщение о погоде голосом Есенина.
-------------------------
Голос - это не только монотонное чтение книги, но и интонация , ударения и эмоции.
Это тоже формирует генератор голоса и для этого делаются специальные библиотеки .
------------------------------
Кроме того, есть самостоятельная задача - синтез речи не говорящими и не слышащими.
-----------------------
Нашел интересные разработки последних лет.
Процессор с одним ядром 3.7 ГГц синтезирует высококачественный голос в 10 раз быстрее реального времени.
А это уже реально на микропроцессорах.
 

nikolz

Well-known member
Это всё и делает "Алиса" с минимальным скриптом управления. Но как запихать "интеграцию" и связь по инет в JL чип знает только nikolz.
Но пока он не может скрестить инет-радио в ESP с BT колонкой...
Так что ждать ещё долго:

nikolz ещё не подготовил ссылок для чтения, т.к. их пока нема.
Алиса - это огромные системы в облаке,
а мне надо автономные и дешевые.
 

Alcest

Member
Голос - это не только монотонное чтение книги, но и интонация , ударения и эмоции.
Это тоже формирует генератор голоса и для этого делаются специальные библиотеки .
А вот тут уже ни одна программа не справится, потому как для правильных интонаций нужно понимать смысл прочитанного.
 

beacon

Member
скачиваешь из интернета текст книги и читалка тебе читает
Отдел фантастики на втором этаже(с)
Т.е., это я не к тому, что задача в принципе нереализуема - а к тому, что при чём тут дешёвые чипы с весьма лимитированными ресурсами и возможностями?
Полноценная "читалка тебе читает" - это т.н. "нейронная сеть", т.е., многосвязный древовидный список. Для которого нужен очень быстрый произвольный доступ к памяти (и достаточный объём оной), а вовсе не всякие там dsp.
 

nikolz

Well-known member
Отдел фантастики на втором этаже(с)
Т.е., это я не к тому, что задача в принципе нереализуема - а к тому, что при чём тут дешёвые чипы с весьма лимитированными ресурсами и возможностями?
Полноценная "читалка тебе читает" - это т.н. "нейронная сеть", т.е., многосвязный древовидный список. Для которого нужен очень быстрый произвольный доступ к памяти (и достаточный объём оной), а вовсе не всякие там dsp.
скажу немного не в тему , но в качестве ответа.
-----------------
Как-то слушал лекцию на ютубе нобелевского лауреата по финансам, которую тот читал для работников гугл.
Лекция об инновациях.
Пересказывать не буду, лишь один пример.
Есть так называемые разрушительные инновации .
Суть их в следующем.
Когда Выпускается новое изделие, то оно обычно дорогое и купить его могут лишь состоятельные.
Именно на этот рынок и направлены усилия крупных производителей.
------------------
Но вот появляется некоторая поделка с подобными функциями, стоит дешево, но и функции скромные. Рынок мелкий и крупные игроки его просто не замечают.
--------------
Но в один прекрасный момент функции этой поделки уравниваются с дорогим изделием либо даже превосходя их, но цена существенно меньше
и рынок этого товара резко расширяется, так как тех, кто может его купить становится существенно больше.
В итоге данная инновация разрушает рынок своего дорогого конкурента.
Крупные игроки просто не могут быстро перестроиться.
 

pvvx

Активный участник сообщества
Отдел фантастики на втором этаже(с)
Т.е., это я не к тому, что задача в принципе нереализуема - а к тому, что при чём тут дешёвые чипы с весьма лимитированными ресурсами и возможностями?
Полноценная "читалка тебе читает" - это т.н. "нейронная сеть", т.е., многосвязный древовидный список. Для которого нужен очень быстрый произвольный доступ к памяти (и достаточный объём оной), а вовсе не всякие там dsp.
Всё та-же фигня из 2001 года на тупеньком DSP:
Код:
/* ================================ */
/* ____ u-law expand 512 bytes ____ */
/*    max 12+18*256 = 4620 Tcpu     */
/* производится передискретизация в 2 раза (16kHz) */
/* Буфер выводится за 0.064 сек или 2 560 000 Tcpu */
/* 0.0001 сек требуется на чтение сектора (5Mb/s),
 т.е. за вывод буфера можно прочитать до 500 секторов SmartMedia!? */
Expand_wave:
                i0 = fdata;
                l3 = LENGTH(bufdac);
                i3 = bufdac;
                cntr = 256;
                ay0 = 0x2000;
                my0 = 0x8000;
                mx1 = dm(old_dac);
                do fildbuf until ce;
                 ar = dm(i0,m0);
                 sr = lshift ar by 8(lo);
                 sr = sr or lshift sr0 by -8(lo);
                 RX1 = sr0;
                 sr = lshift ar by 8(lo);
                 ar = RX1;
                 ar = ar + ay0;
                 RX1 = sr1;
                 sr = lshift ar by -2(lo);
                 ar = RX1;
                 ar = ar + ay0, mx0 = sr0;
                 sr = lshift ar by -2(lo);
                 mr = mx1*my0(uu), mx1 = sr0;
                 mr = mr + mx0*my0(uu);
                 mr = mx0*my0(uu), dm(i3,m0) = mr1;
                 mr = mr + mx1*my0(uu), dm(i3,m0) = mx0;
                 dm(i3,m0) = mr1;
fildbuf:         dm(i3,m0) = mx1;
                dm(old_dac) = mx1;
                rts;
Т.е. за это время, пока выводится кусок звука в 0.064 сек, при правильной организации базы, сканируется там сканируется к 256 килобайт...
А что будет на современных SoC? Наверно за вывод звука-пука без проблем построится любая цепочка с мульоном вложенных индексов.
ПО для SoC - это не база данных в Linux/Windows, где каждый вызов строки/индекcа идет переключение контекста ядра CPU с опустошением кэш.
См. fork() / vfork()
 

pvvx

Активный участник сообщества
Алиса - это огромные системы в облаке,
а мне надо автономные и дешевые.
Если JL это что-то из обрезков Blackfin, то у него архитектура фон Неймана с узким местом доступа к памяти. И китайцы наверняка влепили обычную QSPI Flash, тем самым ограничив скорость выполнения сложных задач до 25MIPS. Это как в ESP32 – 2 ядра тянут код с SPI Flash с итогом до 20МБайт в секунду, а программный “кэш” (IRAM) читает Flash блоками и при чтении одного байта вся шина и 2 ALU ждут чтения блока в малый IRAM… Итоговая производительность в ESP32 на 2 ядра при первом чтении кода или большого витвистого кода (их IDF) не лезущего в “кэш” и выходит до уровня STM32 на 8..16 МГц (десяток MIPS).
 

nikolz

Well-known member
Если JL это что-то из обрезков Blackfin, то у него архитектура фон Неймана с узким местом доступа к памяти. И китайцы наверняка влепили обычную QSPI Flash, тем самым ограничив скорость выполнения сложных задач до 25MIPS. Это как в ESP32 – 2 ядра тянут код с SPI Flash с итогом до 20МБайт в секунду, а программный “кэш” (IRAM) читает Flash блоками и при чтении одного байта вся шина и 2 ALU ждут чтения блока в малый IRAM… Итоговая производительность в ESP32 на 2 ядра при первом чтении кода или большого витвистого кода (их IDF) не лезущего в “кэш” и выходит до уровня STM32 на 8..16 МГц (десяток MIPS).
Про фантастику.
есть такой древний фантастический рассказ, называется примерно "уровень шума"
Суть его в том, что работники ФБР показали группе творческих личностей фильм,
в котором с поля взлетает инопланетная тарелка, которую при взлете сбивают.
Потом им показывают обломки и предлагают создать подобное устройство.
Они сначала сомневаются, но фильм же видели, потом начинают придумывать.
В конце рассказа они создают прототип и им объясняют что фильм был фейком,
чтобы в их головах подобное устройство перешло из отдела - "это невозможно", в раздел- "как это сделать"
=====================
относительно нейронных сетей.
это же сети а не дерево решений.
т е это слои нейронов - узлов и соединения узлов в слоях между собой
В самых распространенных сетях соединения всегда с младшего слоя на старший.
-------------------
На самом деле нейронные сети - это некоторая альтернатива научному познанию мира.
Т е в данном случае - человек дурак и лентяй, он не хочет изучать явление, а запихивает это все в сеть которая методом тыка пытается угадать ответы.
Так как суперкомпьютеры могут перелопатить кучу, то из кучи говна можно найти золотой самородок.
--------------------------
 

beacon

Member
Всё та-же фигня из 2001 года на тупеньком DSP:
А какое отношение имеет этот код к тому, о чём я писал?
С ресемплированием dsp как раз справляется на отличненько - а у меня речь о "ползании" по случайным адресам; при этом доступ к данным на SD карточке - порядка 1ms, а вот последовательное чтение уже сильно оптимизировано, и для нормальных карт будет сильно быстрее вашей усреднённой цифры - но для озвученной задачи оно никакой рояли не играет.
И к чему вы вспомнили переключение контекста - опять непонятно.
 
Сверху Снизу