• Система автоматизации с открытым исходным кодом на базе 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, а вот последовательное чтение уже сильно оптимизировано, и для нормальных карт будет сильно быстрее вашей усреднённой цифры - но для озвученной задачи оно никакой рояли не играет.
И к чему вы вспомнили переключение контекста - опять непонятно.
 
Сверху Снизу