реклама на сайте
подробности

 
 
10 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Voice recognition with AVR
defunct
сообщение Oct 21 2008, 16:41
Сообщение #46


кекс
******

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



Цитата(Rst7 @ Oct 21 2008, 19:24) *
Еще раз повторюсь, алгоритм надо рассматривать в комплексе.

Ок предлагаю рассмотреть (даже не рассмотреть, а оценить потянет ли AVR) такой упрощенный алгоритм:

1. Зарание расчитать спектры гласных и согласных звуков (их будет упрощенно около 25) и хранить их во флеш.
2. Непрерывно оцифровывать входной сигнал с Fd = 3.2kHz (для 32xFFT на 10ms выборку, 100 выборок в секунду).
3. Для каждой выборки считать FFT в real-time и сравнивать с 25-ю эталонными спектрами.
4. При смене звука запоминать индекс предыдущего.
5. При отсутсвии совпадений с базовыми звуками - преобразовать все запомненные идексы в буквы и как рез-тат получить слово.


Кратко:
Непрерывная оцифровка 1 канала АЦП 3.2kHz
100 FFT на 32 точки за секунду.
2500 сравнений 32х байтных строк в секунду.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 21 2008, 16:54
Сообщение #47


Йа моск ;)
******

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



Цитата
Ок предлагаю рассмотреть


1. Ну видимо "заранее" - это вообще "зарание", так что живет отдельной жизнью и основной работе не мешает.

2. Не вопрос. А Fd=3.2 - так задумано?

3a (FFT) - вроде нормально, нет проблем. И вроде-бы недолго. Точно я могу сказать завтра. Кстати, обязательно ли FFT? Возможно ли DCT (ну дабы без комплексной части)?

3b (сравнения) - видимо, по методу наименьших квадратов? Или как? Уточните, плиз...

4 и 5 - ну это вроде тупая логика на 20-30 строк и ненамного больше тактов...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 21 2008, 18:03
Сообщение #48


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(=GM= @ Oct 21 2008, 16:02) *
Куда?

Между вторым и третьим байтом. Ну ежели мы первый и второй решили вдруг отбросить. Или я не понял.


Цитата(defunct @ Oct 21 2008, 16:12) *
так ежкин кот, сказал же, отличие по скорости между 8x операндами и 16x операндами в 2 раза.
До порядка далеко.

Какжежтак ? 12/2 = 6. А не 2. И что, простите, дальше 10/6 или 6/2 ?


Цитата(defunct @ Oct 21 2008, 16:41) *
Непрерывная оцифровка 1 канала АЦП 3.2kHz

Женщин в расчет не берем ? ) Я за 8kHz на входе(после DAC).

Цитата(defunct @ Oct 21 2008, 16:41) *
100 FFT на 32 точки за секунду.

М.б. нужно, чтобы фонема полностью помещалась в буфере FFT ?


Цитата(Rst7 @ Oct 21 2008, 16:54) *
3b (сравнения) - видимо, по методу наименьших квадратов?

Это хотя бы понятно как. Наверно, подойдет для начала.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 21 2008, 20:23
Сообщение #49


Ambidexter
*****

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



Цитата(Rst7 @ Oct 21 2008, 15:54) *
3b (сравнения) - видимо, по методу наименьших квадратов? Или как? Уточните, плиз...

Вместо евклидовой нормы можно попробовать применить чебышевскую, стоит оценить, т.к. разница может достигать 40%.


Цитата(Огурцов @ Oct 21 2008, 17:03) *
Между вторым и третьим байтом. Ну ежели мы первый и второй решили вдруг отбросить. Или я не понял.

Первый и второй остаётся, третий и четвёртый - нули, можно отбросить.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 21 2008, 20:34
Сообщение #50


кекс
******

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



Цитата(Rst7 @ Oct 21 2008, 19:54) *
2. Не вопрос. А Fd=3.2 - так задумано?

Да так задумано. Если AVR справится с этой задачей, можно будет пробовать повышать Fd.

Цитата
3a (FFT) - вроде нормально, нет проблем. И вроде-бы недолго. Точно я могу сказать завтра. Кстати, обязательно ли FFT? Возможно ли DCT (ну дабы без комплексной части)?

Думаю возможно, но это будет FCT.

Цитата
3b (сравнения) - видимо, по методу наименьших квадратов? Или как? Уточните, плиз...

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

Цитата
4 и 5 - ну это вроде тупая логика на 20-30 строк и ненамного больше тактов...

Тут согласен.

Цитата(Огурцов @ Oct 21 2008, 21:03) *
Какжежтак ? 12/2 = 6. А не 2. И что, простите, дальше 10/6 или 6/2 ?

9/2 = 4.5! это только умножение!
про большинство остальных операций уже упоминалась разница - ровно в 2 раза.
на некоторых операциях таких как "деление на определеннй коэффициент" можно выиграть в скорости.

Цитата
Женщин в расчет не берем ? ) Я за 8kHz на входе(после DAC).

пока нет - не берем. пока мы хотим проверить что AVR в стостоянии распознать одного мужика smile.gif
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 21 2008, 21:06
Сообщение #51


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(defunct @ Oct 21 2008, 20:34) *
9/2 = 4.5! это только умножение!

Ок, вот вам объективная граница одного порядка - sqrt(10) ~ 3.16 - одинаково далеко отстоит как от единицы, так и от десятки. Для двух порядков, соответственно ~31.6 снизу и ~316 сверху.

Цитата(defunct @ Oct 21 2008, 20:34) *
про большинство остальных операций уже упоминалась разница - ровно в 2 раза.

Ну да. Мы еще про деление не говорили. И как-то про 32-разрядное умножение больше не вспоминаем.
А если какой-нибудь sin(x)/x по ходу потребуется - на половине работы камень менять ? Нет уж, лучше перезаложиться, а потом, после решения, оптимизировать, чем сначала мучительно оптимизировать и таки не вписаться. Нет, но я не исключаю, что повезет и AVR хватит.

Цитата(defunct @ Oct 21 2008, 20:34) *
пока нет - не берем. пока мы хотим проверить что AVR в стостоянии распознать одного мужика

Жаль. А у меня кодеки на 8kHz без дела валяюцо - как раз для умного выключателя. В сортир. Ну разве что только самому монопольно пользоваться )


Цитата(defunct @ Oct 21 2008, 20:34) *
Есть над чем подумать. Метод наименьших квадратов - ресурсоемкий, конечно можно начать с него.

Если нужно привести результирующие данные к одному байту, тогда квадрат умножение не страшно. У нас 2500 тактов на семпл и два такта погоды не сделают - в остальных местах затыки ожидаются посерьезней.
Вообще, м.б. нейросеть ? НС по словарю очень хорошо работает.
Go to the top of the page
 
+Quote Post
Petka
сообщение Oct 21 2008, 21:20
Сообщение #52


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Огурцов @ Oct 22 2008, 01:06) *
Ок, вот вам объективная граница одного порядка - sqrt(10) ~ 3.16 - одинаково далеко отстоит как от единицы, так и от десятки. Для двух порядков, соответственно ~31.6 снизу и ~316 сверху.
Ну да. Мы еще про деление не говорили. И как-то про 32-разрядное умножение больше не вспоминаем.
А если какой-нибудь sin(x)/x по ходу потребуется - на половине работы камень менять ? Нет уж, лучше перезаложиться.

1. За оценку слова "порядок" a14.gif примерно так себе и представлял.
2. А вот почему Вам нужны именно 32битные операции? почему не 64? почему не 128? 256? а вдруг и 1024 бит не хватит? Для задачи "совпало - не совпало" обычно на выходе надо получать результат не точнее 1%. А это всего 7 бит конечной точности... Как раз по зубам AVR'ке. Другое дело что-бы получить результат точностью 7 бит надо хорошенько пошевелить мозгами над алгоритмом, который из пачки 8 битных значений делает одно 8битное. Глупо считать 32битное DCT, что-бы потом округлить его результат до 8бит. Однако сейчас жизнь такая, что проще поставить "DSP на выключатель". И дешевле (экономия на толковых программистах).
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 21 2008, 21:21
Сообщение #53


кекс
******

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



Цитата(Огурцов @ Oct 22 2008, 00:06) *
Ок, вот вам объективная граница одного порядка - sqrt(10) ~ 3.16 - одинаково далеко отстоит как от единицы, так и от десятки. Для двух порядков, соответственно ~31.6 снизу и ~316 сверху.

ЗачОт! smile.gif
Давайте тогда для двух порядков сделаем sqrt(100) будет 10.
Предлагаю не изобретать новых сущностей - на порядок это в 10 раз, и 16 битные операнды не замедлят вычисления на порядок.

Цитата
Ну да. Мы еще про деление не говорили. И как-то про 32-разрядное умножение больше не вспоминаем.

это не нужно.

Цитата
Нет уж, лучше перезаложиться, а потом, после решения, оптимизировать, чем сначала мучительно оптимизировать и таки не вписаться. Нет, но я не исключаю, что повезет и AVR хватит.

Неспортивно. Даже для ARM'а эту задачу уже неинтересно рассматривать, т.к. уже есть рабочие решения. К тому же мы хотим просто оценить - сможет/не сможет конкретно AVR.

Цитата
Жаль. А у меня кодеки на 8kHz без дела валяюцо - как раз для умного выключателя. В сортир. Ну разве что только самому монопольно пользоваться )

А что мешает эти же кодеки пользовать с Fd 3.2? ;>

Цитата
Вообще, м.б. нейросеть ? НС по словарю очень хорошо работает.
Вы серьезно? Реально НС в AVR уложить?
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Oct 21 2008, 21:49
Сообщение #54


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(Petka @ Oct 21 2008, 21:20) *
2. А вот почему Вам нужны именно 32битные операции?

Не мне - см. выше. Я говорил про 16x

Цитата(Petka @ Oct 21 2008, 21:20) *
Однако сейчас жизнь такая, что проще поставить "DSP на выключатель". И дешевле (экономия на толковых программистах).

См. выше - про и был первый пост. Про цену труда даже говорить не приходится. А про цены на камни я сказал - цена одного порядка (с)

Но кстати, я подумал некоторое время назад - даже при одинаковой цене какой-нибудь восьминогий AVR выигрывает, например, в том же выключателе (только не с голоса) - он будет горадо более надежен ввиду низкой тактовой, чем ARM на 200MHz с 200 ногами.


Цитата(defunct @ Oct 21 2008, 21:21) *
на порядок это в 10 раз

В природе чаще встречаются дробные величины.

Цитата(defunct @ Oct 21 2008, 21:21) *
Неспортивно. Даже для ARM'а эту задачу уже неинтересно рассматривать, т.к. уже есть рабочие решения.

Так зачем искать решение, если оно существует ? (с)

Цитата(defunct @ Oct 21 2008, 21:21) *
Вы серьезно? Реально НС в AVR уложить?

Не вопрос, если сможете FFT уложить, так и НС уложится. Более того, настроенную под конкретный словарь НС можно будет развернуть (на PC) в код, который и выполнять на AVR - будет на порядок (с) быстрее, чем работать с данными описывающими НС. Кроме того, на большом словаре наименьшие квадраты и разные другие последовательные алгоритмы будут существенно тормозить, в отличие от параллельной НС. В смысле параллельного поиска решения конечно, а не выполнения инструкций проца.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 22 2008, 05:14
Сообщение #55


Йа моск ;)
******

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



Цитата
Думаю возможно, но это будет FCT.


Ну в смысле Fast DCT? Слово Fast даже не обсуждается smile.gif

Цитата
Глупо считать 32битное DCT


Конечно, никто 32 бита не будет использовать. Видимо, будет 10 бит с гвардом в остальные 6. Это я сегодня покручу.

Цитата
Однако сейчас жизнь такая, что проще поставить "DSP на выключатель". И дешевле (экономия на толковых программистах).


Вот если это будет как раз выключатель, то надо ужиматься на полную. В серии все отобьется smile.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
blackfin
сообщение Oct 22 2008, 05:41
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Rst7 @ Oct 22 2008, 09:14) *
Ну в смысле Fast DCT? Слово Fast даже не обсуждается smile.gif
Кстати, на заметку - blackfin делает Fast DCT для матрицы из 8*8 16-битных чисел за ~300 тактов CPU.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 22 2008, 06:27
Сообщение #57


Йа моск ;)
******

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



Цитата
blackfin ... за ~300 тактов CPU.


AVR - больше чем за 3000.

Про DCT32. По быстрому скомпилил, без особой оптимизации. 16тибитный dct32 выходит в 4264 такта. Но там еще править и править, до оптимальности далеко...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Rst7
сообщение Oct 22 2008, 08:09
Сообщение #58


Йа моск ;)
******

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



Цитата
3. Для каждой выборки считать FFT в real-time и сравнивать с 25-ю эталонными спектрами.


Слушайте, а мы наверное один момент упустили. После FFT надо получить мощности на каждой частоте, т.е. sqrt(I*I+Q*Q), я прав?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Oct 22 2008, 08:17
Сообщение #59


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(ATLab @ Oct 19 2008, 04:34) *
Ой, ну автор насмешил! На PC эта хрень толком не работает, а он на АВР-ке собрался...

AVRка дает достаточно MIPS 8bit для таких задач...
Цитата(ATLab @ Oct 19 2008, 04:34) *
Речь - это не DTMF, таким наскоком ее не взять. Люди разные, голоса разные, а говорят одно и то же - фурье ничем не поможет. Да даже один и тот же голос, в разном настроении и с разной громкостью даст разные спектры.
Читайте про цифровую обработку речи. Мне, когда ее почитал, чуть не вывихнув мозги с кепстрами, стало понятно - ловить тут нечего.

Мой совет - поставьте такие мозги на полку... Они не пригодяЦЦо... crying.gif biggrin.gif А по-делу - если поделить один отсчет функции корреляции на отсчет образованный произведением корней из суммы квадратов корней эталонной и исследуемых функций на интервале(по сути модулей векторов) - получим значение корреляции не зависящее от амплитуды, а лишь от формы функции, и лежащее в интервале [0..1] - т.н. коэффициент корреляции.

Цитата(defunct @ Oct 19 2008, 07:46) *
PS: Кстати для DTMF детекта FFT избыточно.

При наличии помех - не так уж...
Цитата(defunct @ Oct 19 2008, 07:46) *
Это зависит от метода сравнения. В моем случае 20% - это много.
Грубо не вдаваясь в детали - представим, что спектр входного сигнала отмасштабирован так, что интеграл разности спекторв входного сигнала и эталонного на отрезке от 0 до Fd будет минимальным. Полное совпадение - когда интеграл равен 0. Полное несовпадение - равен X.
20% подобия соотв. - 0.8*X.

Нет уж, вдайтесь в детали. Я тоже занимался таким-же(искал корреляцию через RealFFT), но совсем не так! 07.gif И что-то мне подсказывает - Вы не на верном пути...
Цитата(=GM= @ Oct 20 2008, 15:25) *
Прошу простить джентльмены, что прерываю вашу высокоучёную беседу(:-), заинтересовало сравнение авр с арм

Неужто 8-битный авр и 32-битный арм различается всего в два раза? Что-то мне сомнительно, хотя Rst7 вроде можно доверять, э?(:-)

А вот интересно, во сколько раз будет разница между 8-битной авр и 32-битным дсп TMS320F2808 на команде, скажем, dmac, которая за один такт перемножает два первых знаковых 16-битных числа, лежащих в памяти, и добавляет это произведение к 32-битному аккмулятору АСС, и в том же такте также делает со вторыми знаковыми 16-битными числами, добавляя результат к 32-битному регистру Р?

Я понимаю, что по-хорошему надо бы написать пгм и посчитать такты, но может у кого-нибудь уже есть двойной МАС для авр?

Блин, что за глупое радиолюбительское хвастовство!? 07.gif Поставлена задача. Для AVR она реализуема и точка. К чему этот треп у кого что длинее? Давайте еще SHARC вспомним.
Цитата(zltigo @ Oct 20 2008, 17:49) *
Даже для простого выключаталя света такое использовать уже сложнее, ибо нет команды на старт, а вырезать самостоятельно слова и не иметь гарантированой паузы после захвата слова уже контроллер явно не с произвольными попугаями требуется.

В этом вопросе Вы ошибаетесь...

P.S.:Кстати, хочу напомнить новичкам, что вейвлеты считаются не в пример быстрее чем FFT! просто вся классика ЦОС либо написана до широкого их развития либо с радиотехническим "уклоном" - а там применение Фурье неизбежно в любом случае ибо частотный ресурс распределяется именно с помощью этого преобразования...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Petka
сообщение Oct 22 2008, 08:47
Сообщение #60


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Rst7 @ Oct 22 2008, 09:14) *
Вот если это будет как раз выключатель, то надо ужиматься на полную. В серии все отобьется smile.gif

Очень спорно. Пример: в оптических мышах используется DSP. Крупные серии позволяют делать масочные бескорпусные DSP "на заказ" при копеечной стоимости (оптические мышки в которых контроллер не самое главное стоят по 150р уже для конечного потребителя и в которых стоимость электроники не основное). Кроме того сделать "дешевле" это задача "китайцев". А у нас есть шанс конкурировать только в высоких технологиях, интеграции, качестве, инновациях.

Цитата(Rst7 @ Oct 22 2008, 12:09) *
Слушайте, а мы наверное один момент упустили. После FFT надо получить мощности на каждой частоте, т.е. sqrt(I*I+Q*Q), я прав?

Абсолютно прав. правда sqrt можно не считать. (потом всё-равно в квадрат возводить)
Go to the top of the page
 
+Quote Post

10 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016