Russian Qt Forum
Сентябрь 20, 2019, 10:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2
1  Программирование / Алгоритмы / Re: Расчет мел-кепстральных коэффициентов сигнала : Апрель 02, 2018, 13:20
Такое впечатление, что студенты друг у друга копипастили с ошибками и вносили еще свои.
Вот здесь больше всего на правду похоже, может кому пригодится: http://library.eltech.ru/files/vkr/bakalavri/2381/2016%D0%92%D0%9A%D0%A0238104%D0%90%D0%9B%D0%95%D0%9A%D0%A1%D0%95%D0%95%D0%92%D0%98%D0%A7.PDF
Количество фильтров, на сколько я понял, должно быть равным количеству вычисляемых мел-кепстральных коэффициентов.
2  Программирование / Алгоритмы / Расчет мел-кепстральных коэффициентов сигнала : Март 29, 2018, 17:05
Кто-нибудь занимался получением мел-кепстральных коэффициентов сигнала.
Это, например, может использоваться для анализа речи.

Дело в том, что у меня уже в глазах рябит одни и теже формулы смотреть, которые записаны по-разному.
К сожалению, авторы либо небрежны и допускают ошибки, либо пропускают интересующую меня часть.

Суть алгоритма заключается в следующих этапах.

1. Берем wav-файл, считываем сэмплы, нормализуем их по максимальному значению, разбиваем их на фреймы по 128 мсек, например. Умножаем каждый фрейм на окно. У нас получится вектор векторов из амплитуд, т.е. double.
2. Далее, применяем дискретное преобразование Фурье - получаем тот же вектор векторов, но состоящий из комплексных чисел, соответствующих каждому семплу и содержащих амплитуду и фазу сигнала.
3. Длее вычисляем спектральную плотность для каждого семпла, т.е. получаем периодограмму (берем модуль каждого комплексного сигнала и возводим в квадрат, получаем double).
4. А вот дальше что делать не пойму. Надо перейти к мел-шкале, но как - не могу понять. Тут просто учитывается особенность человеческого уха, и есть формула перевода частоты в Герцах к частоте в мелах. Как это прикрутить к алгоритму - не понятно. Далее строится Банк фильтров, которые лучше пропускают низкочастотный сигналы и хуже высокочастотные. Формула есть - как ее применить не понятно из-за того, что не расписаны все переменные.
5. Дальше логарифмируем и должны получится мел-кепстральные коэффициенты. На сколько я понял, их заданное количество (рекомендуют 20-30) на фрейм.. (или на семпл?).. фильтров тоже заданное количество и тоже рекомендуют сделать около 20-30. Не понятно, есть свзь между ними или нет.

Я накидаю сюда ссылок, которые я смотрел, но они мне не помогли понять, как отфильтровать спектральную плотность и перейти к мел-шкале.

https://habrahabr.ru/post/144491/
http://www.ccas.ru/avtorefe/0014d
http://portal.tpu.ru/SHARED/s/STANKEVICHFV/publications/Tab/Thesis_Recognition_of_Musical_Instruments.pdf
http://elib.spbstu.ru/dl/2/v17-5884.pdf/download/v17-5884.pdf
http://practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/

3  Qt / Установка, сборка, отладка, тестирование / Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7 : Март 06, 2018, 13:53
Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?

а зачем ?


Если вам достанется старый проект, который трудно перенести с Qt4 на Qt5, но при этом нужно сделать так, чтобы он мог кушать более полутора гигов памяти, то вы призадумаетесь о 64-битной Qt4.


Судя по всему, собрать Qt-4.8 с помощью msvc, который идет с бесплатной студией Express, вряд ли удастся. Видел одну статью, как это сделать с помощью профессиональной версии. Т.к. платной студии у меня нет, то пытался собрать Qt4 с помощью MinGW-64, и тоже безрезультатно, были ошибки при сборке. Так и забросил это дело, но появился еще один проект, в котором инклудятся большие массивы данных прямо в стек, мне было лень переделывать программу, и я снова решил заполучить себе 64-битную Qt4. И на этот раз получилось!

Может кому пригодится.

Вам поможет msys2, в котором есть пакетный менеджер pacman, через который можно поставить все необходимое, и ничего компилировать не придется.

В консоли msys64:

Код:
pacman --needed -S git mingw-w64-x86_64-gcc base-devel
pacman -S mingw-w64-x86_64-qt4

Аналогично можно поставить qt5:

Код:
pacman -S mingw-w64-x86_64-qt5

Креатор устанавливать не нужно. В своем креаторе добавляете профиль, путь к qmake будет примерно таким: C:\msys64\mingw64\bin\qmake.exe

Одновременно qt5 и qt4 установлены быть не могут, но это не проблема, т.к. установка занимает около 2 минут. Найти в сети работающую Qt5 для 64-битного компилятора еще не проблема, а вот с qt4 я облазил очень много сайтов, и нигде не было работающего решения, а самому собрать так и не удалось.

Надеюсь, кому-то поможет.
4  Qt / Общие вопросы / Re: QTextEdit и QTextCursor - не понятное поведение : Январь 24, 2018, 08:40
В общем, свою проблему я решил, заменив setText на undo.. т.к. мне нужно было всего лишь отменить кое-какое редактирование пользователя.
Но почему объект QTextCursor, который является копией QTextEdit::textCursor(), изменяется после вызова функции QTextEdit::setText() - для меня осталось загадкой.
5  Qt / Общие вопросы / QTextEdit и QTextCursor - не понятное поведение : Январь 23, 2018, 09:31
Помогите разобраться. Суть задачи. Во время некоторых манипуляций юзера в QTextEdit вызывается QMessageBox с сообщением и делается setText, после которого курсор прыгает в начало текста, а надо, чтобы курсор оставался на месте.
Что я делаю. Завожу глобальную переменную в классе редактора:
Код:
QTextCursor lastCursor;

Пишу слот:
Код:
void ClassName::OnCursorPositionChanged()
{   
    if( !ui->editText->textCursor().atStart() )
    {
        lastCursor = ui->editText->textCursor();
        qDebug() << "*" << lastCursor.position();
    }
}

Соединяю слот с сигналом едитора:
Код:
connect( ui->editText, SIGNAL(cursorPositionChanged()), this, SLOT(OnCursorPositionChanged()) );

Т.о. мы имеем последнее положение курсора, но если курсор прыгнул в ноль, то мы храним предпоследнее - то, которое нам и нужно.

Далее в функции, где выводится QMessageBox и делается setText:
Код:
ui->editText->setTextCursor(lastCursor);
qDebug() << "@" << lastCursor.position();

И вот какой вывод я получаю, пощелкав по QTextEdit несколько раз, а потом вызвав мессадж и setText с кодом выше:
Код:
* 1053
* 3174
* 1404
* 1229
* 5309
* 5310
@ 7168
* 7168
Последнее положение курсора отрабатывает норм, но после активации кода с setText, почему-то вдруг lastCursor оказывается вконце текста. Теперь курсор прыгает не в начало, а в конец.
Как такое может быть? lastCursor в 2 местах только присутствует: в одном справа от оператора присваивания, в другом - слева. Все.
6  Qt / Общие вопросы / Re: Как сделать QTreeView редактируемым? : Январь 12, 2018, 09:46
Спасибо. Открыл проект с этим примером, и стало понятно. Я не сразу понял, что функция flags - это перегруженная функция.
Еще раз прихожу к выводу, что лучшая документация - это код.
7  Qt / Общие вопросы / Как сделать QTreeView редактируемым? : Январь 11, 2018, 16:08
У меня есть QTreeView и модель, наследованная от QAbstractItemModel.
Мне нужно добавить возможность редактирования этого дерева. Нигде нет этого параметру IsEditable. Нужно, чтобы по второму клику итем открывался для редактирования. Всякие там добавить или удалить итем понятно, как сделать.
Смотрел этот пример и не понял ничего: http://doc.qt.io/Qt-5/qtwidgets-itemviews-editabletreemodel-example.html
Там есть функция flags, которая возвращает Editable, но как это прикрутить к модели или к вьюверу? У них нет флагов, и у итема тоже.
8  Qt / Базы данных / Re: Вечная тема - Driver not loaded : Декабрь 04, 2017, 14:29
Проблему решил.
Оказывается, не хватало msvc2013, а точнее msvcr120.dll.
На машине стоит только msvc2010, и желательно ничего не устанавливать. Так что просто закинул либу к проекту.
Может кому пригодится. Если у вас аналогичная проблема, то попробуйте программу Depends.exe.
И смотрите зависимости не своего экзешника (там может быть много проблем, которые не обязательно решать), а библиотеки СУБД, в моем случае libpq.dll.
9  Qt / Базы данных / Re: Вечная тема - Driver not loaded : Декабрь 01, 2017, 16:20
Из-за чего может не грузиться драйвер qsqlpsql.dll?
Проект работает на 3 компах, на одном из которых не установлен Postgres.
Но на 4 компе с абсолютно голой windows 7 SP1 без обновлений - не работает.
Файл libpq.dll лежит рядом с исполняемым, qsqlpsql.dll лежит в sqldrivers, пробовал его пихать в plugins, не помогло.
Пробовал вообще все dll-ки из папки Postgres/bin пихать в каталог проекта, то же не работает.
Если удалить qsqlpsql.dll, то та же ошибка. Может он просто не находит плагин? Тогда куда его пихать?
Плагин не собирал сам, а брал из Qt5.6 готовый. Проект 64-битный.
10  Qt / Общие вопросы / Re: Много процессов или много потоков? : Ноябрь 28, 2017, 10:54
Многопроцессорную архитектуру не всегда можно организовать через shared memory. Если данные не структурированы, их не передашь куском памяти, контейнеры передавать можно только между потоками. Но мне видится так: если есть возможность разделять на процессы, то лучше ей пользоваться.
11  Qt / Общие вопросы / Re: Проблема с exe файлом : Ноябрь 28, 2017, 10:44
Обычно такое бывает, когда программа висит в отладке. Вы точно завершаете отладку перед повторным запуском? Если перезапустить Креатор, то работает?
И еще. Скорее всего у вас старый Креатор. Новый сам убивает процесс перед повторным запуском. Советую обновить Креатор, даже если у вас старая версия Qt.
12  Qt / Общие вопросы / Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows : Ноябрь 28, 2017, 10:25
Всем спасибо за отклик. Решил проблему с помощью Линукс на виртуалке. Все равно Валгринд только под Линь существует, так что не стал искать работающий отладчик под Вин. Но на будущее запомнил, что в msys2 работающий отладчик, на досуге как-нибудь гляну.
13  Qt / Общие вопросы / Re: Помогите портировать проект из Qt4-32 на Qt5-64 под Windows : Октябрь 27, 2017, 07:51
Старым добрым методом выпиливания нашел проблему - библиотека vlc-qt собрана была не правильно.
А можно поподробнее, как у вас дебаггер под виндой работает? Винда 64 или 32 битная?
Все мои попытки использовать msvc потерпели неудачу, да и привык я к гнусному компилятору.
14  Qt / Общие вопросы / Помогите портировать проект из Qt4-32 на Qt5-64 под Windows : Октябрь 26, 2017, 09:57
В связи с большими объемами информации, которые обрабатывает проект, переход от 32-битной архитектуры на 64 мне кажется наиболее правильным.
Проблема в том, что проект должен работать на Винде, и изначально он написан на Qt4.
Установить Qt4 64-бит на Винду не представляется возможным, было потрачено достаточно много времени на это впустую.
Но зато есть Qt-5.6.3-MinGW64, которая уже проверена одним достаточно большим проектом. Поэтому перенос на эту версию мне видится самым лучшим решением проблемы.
Сначала я установил такую же версию на Линукс, и собрал проект там, т.к. под Линуксом работает GDB.
Но к сожалению чуда не произошло, и в Винде программа крашится в самом начале запуска. Помогите советом, может есть какие-нибудь тулзы, о которых я не знаю, чтобы как-то локализовать проблему? Проект большой, метод выпиливания мне не хотелось бы применять. Пробовал тупо закомментировать весь main(), но все равно крашится. Никаких особых модулей программа не использует:
Код:
QT += core gui widgets sql
15  Qt / Установка, сборка, отладка, тестирование / Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7 : Октябрь 13, 2017, 09:59
Извиняюсь за неточность. QMAKESPEC надо задавать до конфигурирования!
С правильным QMAKESPEC не может сконфигурировать, пишет, что в mkspecs нет поддерживаемой платформы..
Значит папка win32-msvc2015 относится только к 32-битной версии.. Это печально..
Чем скомпилять КуТ? Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?
Может проще делать кросскомпиляцию из Линукс???
Страниц: [1] 2

Страница сгенерирована за 0.058 секунд. Запросов: 23.