_pv 52 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба Это хорошая идея, если коэффициент нормировки будет константой для всех вариантов. Ну или хотя бы зависеть только от исходного числа отсчётов (которое не есть степень двойки) и желаемого (степень двойки, например 512). если буфер добить нулями и сделать FFT то при правильной нормировке (Sqrt[512/348]) разницы нет и быть собственно не должно. небольшая разница есть только из-за того что точек всё-таки не сильно много, и сетки частот разные. зелёный график - ДФТ посчитанное Герцелем с шагом 1Гц. синий(348 точек) и желтый (512 точек = 348 + нули) график просто берут из него точки по разным сеткам частоты 8000/348 = 23Гц и 8000/512 = 15.6Гц соответственно но если ваши алгоритмы распознавания чувствительны к такой разнице, то думаю можно сразу закапывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
olegas 0 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба Ну так, заранее вычислите эти коэффициенты и разместите их в таблице. Я, наверное, неоптимально представляю, но для N отсчётов ДПФ требуется матрица размером N^2. Взяв по максимуму N=500 получим: 4*N^2=4*500^2/1024=976 КБ. Многовато. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба 1) считайте ДПФ Герцелем - пример в предыдущем посте на картинке. там только один косинус для каждой частоты считать надо. и можно и без таблицы. 2) делайте FFT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 30 сентября, 2016 Опубликовано 30 сентября, 2016 · Жалоба Я, наверное, неоптимально представляю, но для N отсчётов ДПФ требуется матрица размером N^2. Взяв по максимуму N=500 получим: 4*N^2=4*500^2/1024=976 КБ Ну прямо в лоб-то считать не надо. Ваша таблица по рядам (и по столбцам) будет многократно повторяться. Лучше составьте таблицу одного периода синуса на N=500 точек (для двоичного ЦПУ практичнее брать число N степени двойки, например N=512). Для первой палки считаете МАКи, беря синусы: 0,1,2,..,499 (всего 500), для второй палки берете каждый второй: 0,2,4,..,498,0,2,4,..,498 (всего 500). Для третьей палки берете каждый третий:0,3,6,.. (всего 500) и так далее. Ну и не надо считать компоненты спектра (пресловутые "палки") выше частоты Найквиста, поскольку амплитудный спектр симметричен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aser 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба Для обработки речи что ДПФ, что БПФ - всё едино, т.к. любой микропроцессор успевает. Например, в телефонном вокодере по 200 выборкам делают автокорреляцию, по автокорреляции строят АР-фильтр, через фильтр пропускают синусоиды разной частоты, выбирают синусоиды, на которые фильтр хорошо окликается и делают интерполяцию частоты речевого сигнала. На все это и многое другое типа вычисление периода основного тона, подбор сигнала возбуждения тратится всего 20 млн.оп./с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться