CREU Blog 2017 - 2018 Research of JN Matthews

Audio Extraction From Video With Ffmepg

With the ability to display the results, the next step in the GUI was to allow the user to upload more types of files than just wav files. While the audio analysis functions require the audio in wav format, the original data files are more commonly in video form. (Our data set is specifically avi files, although I intend to support at least both avi and m4v file types) This would allow for a more intuitive local functionality for the user, as previously we had to manually extract the audio from the video files using a tool like audacity.

My research on this found that while there was no native tools for python to accomplish this, there is a terminal program, FFmpeg, which can convert between audio and video formats. There are a few python wrappers for ffmpeg. However, instead of using those, I decided to call it as a subprocess from python as that simplified both the decencies required for the GUI tool and the event handler code.

Despite a large amount of time and effort put into continuing to try to figure out how to exporting MATLAB code to an other form that does not require a license to run and can ideally be trigged by a python event, I still have not made any determinable process. The documentation suggests that there is both a way to compile a MATLAB script into a standalone executable and a way to export it to a python module. Using a simple proof-of-concept “hello world” script I’ve been attempting to try both paths. I did find some new information about the MATLAB Runtime Engine yesterday, so hopefully that will lead to more success next week.

Embedding Matplotlib Images In Tkinter Frames

I still haven’t had much success exporting MATLAB code to python yet. Despite my research I continue to run into compilation and linker errors, and am still not sure what the all of the dependencies required are.

In addition I’ve continued work on the GUI. I’ve been learning about Tkinter frames so that I can call mine and the lab’s previous work from it and plot the results. I’ve started by taking the Matplotlib results generated from the functionality and working to embed those plots in Tkinter frames.

Exporting Matlab Code

This week I continued to work on the exporting Matlab into callable executable problem. It has taken many iterations of failure and crashing Matlab runtime environments, but so far I have managed to update my version of Matlab to the most recent one and then determine which add-on applications were needed to install (libraryCompilation, etc.) Currently I have theoretically exported a function into a python module, however when I try to install those binaries I run into linker errors, and I’m still working to figure what is not working in that step.

In addition through discussing with the team to pin down more specific goals, I’ve been able to refine my literature review as well as Speech API search.

Gui For The Application

Before break we discussed building a GUI for the existing applications that the team has, to make it easier for other people without as much technical knowledge to use as well as allow people to run the code without needing access to the MatLab backend.

To the first end I’ve been researching GUI modules for python. The built in Tkinter module looked like it might useful and I spend much of the week learning how about the objects it has and how to nest them properly such that what appears on the window is usable. I found the this tutorial particularly helpful. I have had some prior experience with event based programing, but not with the style of graphical monitors that Tkinter uses. One of the first steps I’ve taken there is to figure out how to embed a file selection dialog, and retrieve the data from the various widgets.

In addition, I’ve started to look into how to port Matlab code, which is much of our backend, into python. So far I have not had much success with that, so hopefully I will understand that better next week.

Winter Break

This was the last week of winter break, and I look forward to going back to working with the team and continuing next week.