In a previous post of mine (which you should read now if you haven’t already) I explained how to create a MATLAB executable for the widely used PESQ algorithm. The main reason for wanting to do this was to save time when running a large amount of speech quality tests and the speed increases obtained from using a PESQ MEX function were amazing! At the time of writing that post, the MEX function was approximately 8 times faster than anything else online that I could find. In fact, it is still the fastest implementation I can find, however, I think there is room for improvement and I finally found some time to get it working. In this post, I will show step-by-step how you can compile the PESQ MEX function to accept audio vectors directly from MATLAB and, which, should give great speed increases when run on parallel cores.
After having spent a good while looking for a working copy of the Perceptual Evaluation of Speech Quality measure implemented in MATLAB, I ended up using the readily available “wrapper” functions found on the MATLAB file exchange site. While these wrappers work a treat they are a bit slow as they require a call to the system to run the PESQ binary file. The PESQ binary file is compiled from the source code found on the ITU site for the PESQ standard. The source code is written in C which MATLAB supports for its MATLAB executable (MEX) compilations. That was what then prompt me to look for a MEX compiled version of the PESQ measure but to my surprise I couldn’t find any. I managed to get the ITU standards’ source code compiled and working in a MEX function and I will go through the few steps required to do it. Continue reading A fast MATLAB executable (MEX) compilation of the PESQ measure