Приложение по анализу аудиофайла с графическим интерфейсом Matlab, AppDesigner
20.09.2019
Нужно через AppDesigner сделать приложение, анализирующее паузы в речи. В него нужно загрузить .wav файл с записью речи человека, а приложение, в свою очередь выведет:
осцилограмму записи с ползунком, перемещающимся при проигрывании;
СПМ сигнала;
таблицу с данными о начале и конца каждого слова.
В общем-то скрипт, который выводит графики СПМ и график начала и конца слова я написал. Остались вопросы:
Как перенести то же самое в AppDesigner? А то у меня даже воспроизведение аудио не работает.
Как реализовать ползунок, показывающий момент воспроизведения?
Как сделать, чтобы СПМ также выводилась именно момента воспроизведения, с окном в пару секунд?
(Тапками прошу не кидаться, изучаю Матлаб 3 дня)
Лучший ответ
Ну начнём с самого непростого. App Designer так же требует отдельного внимательного изучения, но в случае с проигрыванием аудио есть подсказочка. Я тут записывал видео, где функционал загрузки и прогигрывания аудио файла был как раз в App Dedsigner'e реализован. Желательно так же поизучать системные объекты, я ими пользовался.
https://www.youtube.com/watch?v=gfaiUhCeIHM
Касательно анимации - самый простой способ, наверное, это выводить один под другим два объекта типа UIAxes, первый будет статично показывать осциллограмму, а на втором просто будет перерисовываться крупная точка. У неё будет меняться значение координаты по оси х, шаг (или пауза для обновления) будет рассчитываться исходя из длительности файла. Или можно закрашивать осциллограмму линией другого цвета (просто передавая текущие значения отсчётов вектора аудио), тогда "прогресс бар" будет на одном объекте UIAxes виден.
Но это будет именно прогресс бар, а не элемент управления - перематывать им, понятное дело, не удастся.
Для вывода СПМ - так же рекомендую поизучать всякую потоковую обработку в MATLAB. Нужно в цикле буферизовать отрезок аудио (можно вручную, можно при помощи системных объектов), на этом отрезке проводить спектральный анализ (любым из подходящих методов), и этот "кратковременный" спектр уже отрисовывать на UIAxes. Обновления графических объектов будет происходить в цикле регулярно, должна получиться вполне себе "живая" и подвижная картинка спектра.
Ответы
Ну начнём с самого непростого. App Designer так же требует отдельного внимательного изучения, но в случае с проигрыванием аудио есть подсказочка. Я тут записывал видео, где функционал загрузки и прогигрывания аудио файла был как раз в App Dedsigner'e реализован. Желательно так же поизучать системные объекты, я ими пользовался.
https://www.youtube.com/watch?v=gfaiUhCeIHM
Касательно анимации - самый простой способ, наверное, это выводить один под другим два объекта типа UIAxes, первый будет статично показывать осциллограмму, а на втором просто будет перерисовываться крупная точка. У неё будет меняться значение координаты по оси х, шаг (или пауза для обновления) будет рассчитываться исходя из длительности файла. Или можно закрашивать осциллограмму линией другого цвета (просто передавая текущие значения отсчётов вектора аудио), тогда "прогресс бар" будет на одном объекте UIAxes виден.
Но это будет именно прогресс бар, а не элемент управления - перематывать им, понятное дело, не удастся.
Для вывода СПМ - так же рекомендую поизучать всякую потоковую обработку в MATLAB. Нужно в цикле буферизовать отрезок аудио (можно вручную, можно при помощи системных объектов), на этом отрезке проводить спектральный анализ (любым из подходящих методов), и этот "кратковременный" спектр уже отрисовывать на UIAxes. Обновления графических объектов будет происходить в цикле регулярно, должна получиться вполне себе "живая" и подвижная картинка спектра.
Большое спасибо за ответ. Программу уже реализовал. Правда, немного другим способом, но это не столь важно (получилось вывести "прогресс бар" линией на тот же UIAxes).
Отдельное спасибо за видеоролики. Во многом учился именно по ним.