|
|
  |
Voice recognition with AVR |
|
|
|
Oct 20 2008, 16:07
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Rst7 @ Oct 20 2008, 14:23)  Не передергивайте. Вы начали про "восьмибитные мипсы". Ну так вы предложение до конца дочитайте. Восьмибитные там значило, что на 16-битных операндах скорость будет меньше на порядок, а на 32-битных - на два порядка. Это чтобы человек 20 мипсами не обольщался. Цитата(Rst7 @ Oct 20 2008, 14:23)  Да и как бы смотрелся тот-же BF в выключателе света? Нормально. При условии, что включал бы и выключал свет, когда его попросят, а не когда попало, и не с десятой попытки, и звонил бы васе, а не пете. А не так, как в двух выше приведенных ссылках - в одной надежно распознаются только три команды, а во второй - слово "да" и только в условиях тишины. Ну т.е. мне совершенно не нужен выключатель, который перестает работать, когда у меня включена музыка или телевизор. А если он еще команды телевизора начнет исполнять, вообще будет смешно несмешно.
|
|
|
|
|
Oct 20 2008, 16:35
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Огурцов @ Oct 20 2008, 19:07)  Ну так вы предложение до конца дочитайте. Восьмибитные там значило, что на 16-битных операндах скорость будет меньше на порядок Для подавляющего большинства операций (сложение, сдвиг, сравнение, копирование) - ровно в два раза. Для умножения чуть больше в 3-5 раз. Для некоторых операций скорость даже выросла (напр мастабирование - деление на 2^8 будет быстрее т.к. не нужно делать &). Так откуда взялась разница на порядок? Цитата(Огурцов @ Oct 20 2008, 19:07)  Нормально. При условии, что включал бы и выключал свет, когда его попросят, а не когда попало, и не с десятой попытки, и звонил бы васе, а не пете. А не так, как в двух выше приведенных ссылках - в одной надежно распознаются только три команды, а во второй - слово "да" и только в условиях тишины. Тогда уж лучше обычный комп. Пусть распознает и раздает мелким девайсам команды.
|
|
|
|
|
Oct 20 2008, 17:15
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(defunct @ Oct 20 2008, 16:35)  Так откуда взялась разница на порядок? Распишите на AVR умножение двух 16-битных операндов. Двух 32-битных операндов. (Можно подсмотреть, например у GCC) Цитата(defunct @ Oct 20 2008, 16:35)  Тогда уж лучше обычный комп. Вместо выключателя по компу ? Однако...
|
|
|
|
|
Oct 20 2008, 17:37
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Огурцов @ Oct 20 2008, 20:15)  Распишите на AVR умножение двух 16-битных операндов. Двух 32-битных операндов. (Можно подсмотреть, например у GCC) 32-х битные расписывать не буду, нет смысла. Вначале надо разобраться с 16x. Решение тупо в лоб: Код .def AL = R24 .def AH = R25 .def BL = R22 .def BH = R23 .def CL = R20 .def CH = R21
;--> AX - op1 ;--> BX - op2 ;<-- CX - result Mul16: mul AL, BL; 2 такта movw CH:CL, r1:r0; 1 такт mul AL, BH; 2 такта add CH, r0; 1 такт mul AH, BL; 2 такта add CH, r0; 1 такт mul AH, BH; 2 такта add CH, r0; 1 такт ret; <-- не считаю т.к. в программе использовался бы макрос С ограничениями - произведение не может быть больше 65535. итого 12 тактов против 2. (в 6 раз, однако не на порядок). Таблично можно сделать быстрее. Цитата Вместо выключателя по компу ? Однако... Вы предлагаете вместо каждого выключателя по DSP. А я предлагаю 1 комп вместо всех выключателей.
|
|
|
|
|
Oct 20 2008, 18:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Rst7 @ Oct 20 2008, 20:26)  Точно. Давно не брал в руки своего Осла, подзабыл уже. Но помнится мне, что в весьма он недолго занимался постобработкой. Обычно не долго, поскольку обработка идет уже и при записи слова, НО важнее, что по отмашке, а не постоянно анализируя поток.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 20 2008, 19:28
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(defunct @ Oct 20 2008, 17:37)  mul AL, BL; 2 такта movw CH:CL, r1:r0; 1 такт mul AL, BH; 2 такта add CH, r0; 1 такт mul AH, BL; 2 такта add CH, r0; 1 такт mul AH, BH; 2 такта add CH, r0; 1 такт Ну так сколько чернил для шестнадцатого класса выдавливается из AVR ? Цитата(defunct @ Oct 20 2008, 17:37)  Таблично можно сделать быстрее. А думать пробовали ? ) Цитата(defunct @ Oct 20 2008, 17:37)  А я предлагаю 1 комп вместо всех выключателей. Я комп даже на лампочку в туалет не поставлю. Ну мало ли прижмет срочно, а будешь полчаса упрашивать свой выключатель, как дурак, свет включить ) Цитата(zltigo @ Oct 20 2008, 18:30)  Обычно не долго, поскольку обработка идет уже и при записи слова, НО важнее, что по отмашке, а не постоянно анализируя поток. По отмашке идет _только_ обработка словаря. Это можно и на PC сделать. Да хоть на крейе каком-нибудь. А вот разбор команд - в реалтайм, как ни крути, без отмашек, в шуме и с прочими прелестями.
|
|
|
|
|
Oct 21 2008, 14:11
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Огурцов @ Oct 20 2008, 22:28)  Ну так сколько чернил для шестнадцатого класса выдавливается из AVR ? но не на порядок же больше чем для восьмого. log2 != log10. Цитата А думать пробовали ? ) А что, смущает размер таблицы? да многовато.. ;> ну можно умножитель на CPLD прикрутить  дорого, но тем не менее потенциальная возможность ускорить с 12 до 6-ти тактов (4xOUT / 2xIN ) или 8-ми тактов (2xOUT, 2xLD) есть. Цитата(Огурцов @ Oct 20 2008, 22:28)  Я комп даже на лампочку в туалет не поставлю. Ну мало ли прижмет срочно, а будешь полчаса упрашивать свой выключатель, как дурак, свет включить ) Главное винду не ставить ;>
|
|
|
|
|
Oct 21 2008, 14:56
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Oct 20 2008, 16:37)  С ограничениями - произведение не может быть больше 65535 Если с такими ограничениями, то последние две инструкции не нужны Код mul AH,BH ; 2 такта add CH,r0 ; 1 такт Так что минус три такта, остаётся 9. А вообще, добавлять ro к CH это ошибка. Добавлять надо к третьему байту, которого в вашем случае нет.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Oct 21 2008, 15:53
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(defunct @ Oct 21 2008, 14:11)  но не на порядок же больше чем для восьмого. log2 != log10. Не знаю, как по-вашему, для меня один порядок - десять раз. Сэм-восэм или там 12-20 - тоже подходят, я не зануда. Цитата(defunct @ Oct 21 2008, 14:11)  А что, смущает размер таблицы? Бред ? Цитата(=GM= @ Oct 21 2008, 14:56)  Если с такими ограничениями, то последние две инструкции не нужны Не вдаваясь: тогда округление логично добавить ?
|
|
|
|
|
Oct 21 2008, 16:07
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Нет, народ. Это все измерение пиписек. При таком подходе, конечно, AVR не хватит. Надо подходить к решению (к оптимизации решения) задачи в комплексе. Если бы я банально собрал jpeglib, то на AVR оно еле-еле бы шевелилось.
Ну простой пример из моего кодера - в DCT, хоть оно и целочисленное, но удалось уменьшить разрядность умножения (точнее, количество операций mul) в связи с тем, что все коэффициенты, кроме одного не превышают 1, а тот, который превышает, тот так обрабатывается - b=a+(k-1)*a. А там этих умножений - как деревьев, которые все в гробах, - тьма...
И много других хитрых моментов есть.
Вообщем, пока тут всё голословные утверждения, хватит AVR или не хватит. И будут они голословными, пока нет хотя-бы наброска алгоритма.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Oct 21 2008, 16:12
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Огурцов @ Oct 21 2008, 18:53)  Не знаю, как по-вашему, для меня один порядок - десять раз. Сэм-восэм или там 12-20 - тоже подходят, я не зануда. так ежкин кот, сказал же, отличие по скорости между 8x операндами и 16x операндами в 2 раза. До порядка далеко. Цитата Бред ? Такой же как и ставить DSP в выключатель. Цитата(Rst7 @ Oct 21 2008, 19:07)  Вообщем, пока тут всё голословные утверждения, хватит AVR или не хватит. И будут они голословными, пока нет хотя-бы наброска алгоритма. Вроде mse говорил что щелкал FFT на m48 в real-time. Вот только сейчас не вспомню где искать. ;>
|
|
|
|
|
Oct 21 2008, 16:24
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата говорил что щелкал FFT на m48 в real-time. Ну мы, например, в аудио-тахометре (который измеряет частоту вращения по звуку) тоже не особо извращаемся, тоже FFT на m16. Раз в секудну обновляем показания. Клиенты вполне довольны  Весь вопрос, какого размера FFT нужен. И еще, не следует забывать, что FFT не самоцель. Например, в JPEG-кодере на обычных камнях DCT занимает примерно 50% и примерно 50% занимает квантизация и хаффман. А на BF - 25% DCT (конечно, многоствольные MAC-операции, все дела), остальное - 75%... Вот такая вот загогулина получается. Еще раз повторюсь, алгоритм надо рассматривать в комплексе.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|