Thursday, July 18, 2024

Signal Processing in C++ Using Aquila 3.0

- Advertisement -

When it comes to modern information engineering, communication and signal processing are birds of a feather. Whether it is broadcast and communication, audio and video recording, RADAR engineering, remote sensing, biomedical engineering or seismic data processing, a communication engineer has to deal with many signals.

In this article, we introduce you to Aquila, an open source, cross-platform C++ library that helps the user perform all major digital signal processing (DSP) functions including finding various transformations, filtering operations, spectrogram computations and much more. The library, actively developed by Zbigniew Siciarz, is in its third stage of development.

What Aquila is capable of

- Advertisement -

If you would like to calculate the spectra of a signal using Fast Fourier Transforms (FFTs), compare two signals or extract features from a speech signal, this DSP library could be the appropriate solution for you.

Accepting the input. Aquila allows the user to input the signal in various data formats. It could be in the form of a text file or a .wav file. It supports the input in the form of an array or a vector in C++. The user can even input data in the form of a raw pulse code modulated data.

Signal and noise generators. The signals commonly used in DSP like sine wave, rectangular or square wave, triangular wave or saw tooth could easily be generated.
The library also contains common noise generators that include a white-noise generator and a pink-noise generator.

Fig 1
Fig. 1: A sample code using Aquila

Box 1White noise is a random signal with constant power spectral density, whereas for pink noise the power spectral density is inversely proportional to the signal frequency.

Windowing functions. Windowing functions find applications in spectral analysis and beam-forming filter designing. When we deal with the windows in signal processing, these are zero valued outside chosen intervals. Various window functions such as rectangular window, Hamming and Hanning windows, Barlett and Blackman could be easily implemented using this library.

Fast Fourier Transform. FFT has made signal processing in frequency domain as computationally feasible as in temporal or spatial domain. The user can find both the forward and the inverse FFT using the tool. He or she can have a visualisation of the frequency spectrum of sound or any other signal, with respect to time or other variables with the help of a spectrogram.

Filters. Application of filters on a signal essentially changes the shape of the spectrum of the signal. In frequency domain, spectrum of the signal is multiplied with the filter for modifying it. As per the documentation given on the website of the software (, Finite Impulse Response (FIR) and Infinite Impulse Response (IIR) filters are yet to be implemented.

Box 2

Fig 2
Fig. 2: Sample output after coding using the library

Feature extraction. The feature extraction of the signal allows the user to reduce the signal into easily comparable forms. This is very useful in speaker-identification or speech-recognition processes.

Besides extracting power or energy of the signal, the software allows the usage of Mel Frequency Cepstral Coefficients (MFCC). Although MFCC is considered as one of the standard methods for feature extraction, its sensitivity to noise due to its dependence on the spectral form is a clear disadvantage.

In order to overcome this problem, methods that use information in the periodicity of a speech signal are used. The algorithm for finding Human Factor Cepstral Coefficients (HFCC) for feature extraction is yet to be ported from the previous to the latest version of the software.

Dynamic time warping. Dynamic Time Warping (DTW) algorithm was originally developed for speech recognition.
Two sequences of feature vectors are time-warped and aligned. The process continues until a perfect match between the features occurs, based on certain matrices.

Who should use the tool
We had a quick overview over the various functionalities of the tool. The software is in a stage of continuous development, and a stable release of Aquila 3 that packs all algorithms in the previous versions ported is expected soon.

If you are a beginner trying to learn the basics of signal processing, Aquila could be an ideal tool for you. However, the library lacks advanced topics in signal processing such as wavelets and polyphase filters.

As a user at points out, another open source software called Signal Processing Using C++ (SPUC) provides features like digital-modulation schemes, which we do not find in Aquila. So the best solution in this regard will be to use both libraries through a wrapper to combine these.

For more information: click here

The author is assistant professor, department of ECE at SETCEM, Thrissur


Unique DIY Projects

Electronics News

Truly Innovative Tech

MOst Popular Videos

Electronics Components