• Регистрация
colinlovegood
colinlovegood 0.00
н/д

Приложение по анализу аудиофайла с графическим интерфейсом Matlab, AppDesigner

20.09.2019

Нужно через AppDesigner сделать приложение, анализирующее паузы в речи. В него нужно загрузить .wav файл с записью речи человека, а приложение, в свою очередь выведет:

осцилограмму записи с ползунком, перемещающимся при проигрывании;

СПМ сигнала;

таблицу с данными о начале и конца каждого слова.

 

В общем-то скрипт, который выводит графики СПМ и график начала и конца слова я написал. Остались вопросы:

Как перенести то же самое в AppDesigner? А то у меня даже воспроизведение аудио не работает.

Как реализовать ползунок, показывающий момент воспроизведения?

Как сделать, чтобы СПМ также выводилась именно момента воспроизведения, с окном в пару секунд?

(Тапками прошу не кидаться, изучаю Матлаб 3 дня)

Теги

    20.09.2019

    Лучший ответ

    • Marat+208.00
      30.09.2019 12:00

      Ну начнём с самого непростого. App Designer так же требует отдельного внимательного изучения, но в случае с проигрыванием аудио есть подсказочка. Я тут записывал видео, где функционал загрузки и прогигрывания аудио файла был как раз в App Dedsigner'e реализован. Желательно так же поизучать системные объекты, я ими пользовался.

      https://www.youtube.com/watch?v=gfaiUhCeIHM

      Касательно анимации - самый простой способ, наверное, это выводить один под другим два объекта типа UIAxes, первый будет статично показывать осциллограмму, а на втором просто будет перерисовываться крупная точка. У неё будет меняться значение координаты по оси х, шаг (или пауза для обновления) будет рассчитываться исходя из длительности файла. Или можно закрашивать осциллограмму линией другого цвета (просто передавая текущие значения отсчётов вектора аудио), тогда "прогресс бар" будет на одном объекте UIAxes виден.

      Но это будет именно прогресс бар, а не элемент управления - перематывать им, понятное дело, не удастся.

       

      Для вывода СПМ - так же рекомендую поизучать всякую потоковую обработку в MATLAB. Нужно в цикле буферизовать отрезок аудио (можно вручную, можно при помощи системных объектов), на этом отрезке проводить спектральный анализ (любым из подходящих методов), и этот "кратковременный" спектр уже отрисовывать на UIAxes. Обновления графических объектов будет происходить в цикле регулярно, должна получиться вполне себе "живая" и подвижная картинка спектра.

    Ответы

    • Marat
      Marat+208.00
      30.09.2019 16:35

      Ну начнём с самого непростого. App Designer так же требует отдельного внимательного изучения, но в случае с проигрыванием аудио есть подсказочка. Я тут записывал видео, где функционал загрузки и прогигрывания аудио файла был как раз в App Dedsigner'e реализован. Желательно так же поизучать системные объекты, я ими пользовался.

      https://www.youtube.com/watch?v=gfaiUhCeIHM

      Касательно анимации - самый простой способ, наверное, это выводить один под другим два объекта типа UIAxes, первый будет статично показывать осциллограмму, а на втором просто будет перерисовываться крупная точка. У неё будет меняться значение координаты по оси х, шаг (или пауза для обновления) будет рассчитываться исходя из длительности файла. Или можно закрашивать осциллограмму линией другого цвета (просто передавая текущие значения отсчётов вектора аудио), тогда "прогресс бар" будет на одном объекте UIAxes виден.

      Но это будет именно прогресс бар, а не элемент управления - перематывать им, понятное дело, не удастся.

       

      Для вывода СПМ - так же рекомендую поизучать всякую потоковую обработку в MATLAB. Нужно в цикле буферизовать отрезок аудио (можно вручную, можно при помощи системных объектов), на этом отрезке проводить спектральный анализ (любым из подходящих методов), и этот "кратковременный" спектр уже отрисовывать на UIAxes. Обновления графических объектов будет происходить в цикле регулярно, должна получиться вполне себе "живая" и подвижная картинка спектра.

      • colinlovegood
        colinlovegood0.00
        30.09.2019 16:54

        Большое спасибо за ответ. Программу уже реализовал. Правда, немного другим способом, но это не столь важно (получилось вывести "прогресс бар" линией на тот же UIAxes).

         

        Отдельное спасибо за видеоролики. Во многом учился именно по ним.