Digital Signal Processing & STx - Completed Projects

Project Objective:

The project aims to implement an automatic sound recording system that would allow continuous sound recordings for any length of time (several weeks) without user intervention. The long-term investigation of sound data is used for the observation of noise emission from machines in continuous operation and for the documentation of noise situations. The hardware and system complexity are to be restricted to standard measurement microphones and standard PCs or for continuously running, suitable laptops with external disk storage units.


The recorder contained in the standard S_TOOLS-STx software package is controlled by the macro programming so that the sound files (about the length of one hour) are generated consecutively with date-and-time specification and then written on the hard disk. The intelligent segmentation algorithms insert automatic "tags" and annotations in real-time or in post-processing. The segmentation data are administrated dynamically and enable the direct inclusion of the recorded sound events in the sound data files, signal analytical processes, and statistical processes. Using the currently available storage units, e.g. disk storage on the scale of 1.28 TByte, continuous measuring (2-canal stereo, 44.1. kHz, 16bit) over a period of 2.5 months is possible.


For the investigation of noise emissions, e.g. traffic and environmental noise, permanent control stations that measure all sound sources in their time context are needed. Only with a broad analysis of the whole situation can noise pollution and health risks be collected.


PACS: 43.50.Rq; Project: NOIDESc: Deskriptoren zur Bewertung von Lärmsignalen (FFG-809085, bmvit-isb2).

Project Objective:

This project aims to implement generally applicable database functions in STOOLS-STx as, for example, the access to sound and metadata management of segments and annotations (list, sort, select etc.). The essence (sound data), segmentations, and manually compiled and calculated annotations (e.g. wave band level) are the basis of an integrated sound database. The essential demand is that the original sound data remain unchanged. Therefore the metadata have to be filed in separate *.xml files. In this way, a dynamic management of the metadata will be possible, but only the sound files should be opened in a write-protected way.


The segment lists implemented in STx keep all the annotations linked to each individual sound segment. The segments stay in the context of the continuous sound recordings and enable segment addressing, which is made of the numeric terms, treatment, and tapping of the segments (including the acoustic surrounding).


Signal databases are the basis for practically all applications that use realistic sound material. The time frequency representation, statistics, main component analysis, cluster analysis, etc. belong to these signal databases. Furthermore, signal databases are used for the realization of subjective evaluations and psychoacoustic experiments. The STx databases use more than 100 sound files and thousands of segments in a very short time.


PACS: 43.50.Rq; Project: NOIDESc: Deskriptoren zur Bewertung von Lärmsignalen (FFG-809085, bmvit-isb2). PACS: 43.72.Fx; Project: Akustische Phonetik, Sprechererkennung.


Extend the S_TOOLS-STx graphics library to enable graphs to be rotated and flipped horizontally or vertically without having to recalculate the data.


The base graphics object class was modified, adding rotation and flip settings. A new macro command was implemented to set a graph's rotation-and-flip values. Each graphic object was then modified to display itself correctly according to these settings.


Rotating and flipping graphical representations of data can now be achieved with on-macro command, rather than having to modify the data itself.


The Eval facility is an expandable and versatile class library for evaluating expressions of mixed type. It adds the Eval function to the STx programming language.

Eval supports real and complex numeric data as well as vectors and matrices of real and complex numbers. Eval supplies a large number of operations and functions for each kind of data, ranging from scalar and vector additions to statistical functions, order analysis, and signal processing (e.g. the Fourier transformation, several kinds of windowing functions, filtering functions, etc.).

The Eval functionality is an improvement over the historically grown evaluation functions already present in the STx macro language, including the int and num keywords and the position-dependent implicit argument evaluation. Eval combines all their functionality with a large and growing part of the functions that have traditionally been available only for SPU programmers. Over time, Eval is intended to provide a uniform and homogeneous means of accessing any of the diverse STx functions, regardless of their individual history.


  • Eval offers a uniform and homogeneous interface to the numeric functions available in STx, including those that were available only to SPU programmers in the past.
  • Eval empowers the STx programmer to use the programming design and style that best suits his or her needs, without being guided by existing restrictions like access only via SPUs. Thus, algorithmic problems may now be solved algorithmically, whereas the use of SPUs may be restricted to problems where there is a continuous flow of data that must be processed online.
  • Eval offers support for reference arguments. This means that an Eval function may return more than one data item (be it a number, a vector, or a matrix), which is not possible with the existing int, num, and implicit argument evaluation because of their outdated design. The support for reference arguments makes the interfaces of many functions more natural and, in some cases, is a necessary condition for implementing them at all (as opposed to offering them as SPU atoms only). At this time, there is already a growing number of functions that make use of this feature.
  • Due to the power of the already existing Eval functions, even complex calculations may be done by typing relatively simple formulae. By resulting in STx macro expressions that are shorter and more readable, this speeds up STx-based software development processes. It also both reduces the likelihood of programming errors happening and speeds up debugging and future maintenance.
  • Due to its carefully laid-out design, Eval offers a very thorough and fine-grained kind of error checking and reporting that has not been possible with the outdated int, num, and implicit argument evaluation. Compared with the traditional evaluation routines, Eval offers more than 25 additional error codes and error messages, thereby helpfully pointing even the less experienced programmer to the cause of their error.
  • Eval uses a manually laid-out, and manually optimized recursive descent parser (meaning that no excessively complicated or time-consuming compiling tools must be involved). This results in a very short and straightforward C++ source code that is easy to read and to extend and that compiles to a very compact and cache-effective binary object.
  • The STx integration of research results has further improved with the availability of Eval due to the fact that researchers may directly integrate their algorithms with the Eval functionality instead of programming SPU atoms of their own, as was necessary in the past.


The Eval class implements a single-pass, recursive-descent parser for the following grammar:

   AddSub := MulDiv ( "+" | "-" MulDiv )*
   MulDiv := Pwr ( "*" | "/" | "%" Pwr )*
   Pwr := BracketOrAtom ( "^" BracketOrAtom )*
   BracketOrAtom :="(" AddSub ")" |
   "|" AddSub "|" |
   "-" BracketOrAtom |
FunctionName "(" ArgumentList? ")" |
   some STX item
   ArgumentList := AddSub ( "," AddSub )*

The functionality of Eval is implemented in the CExEval class. Built-in functions are listed in a table both referring to their implementation and containing information of the number and kind of the arguments to the respective function. Adding a new built-in function is done by providing an implementation for the respective function and by adding an entry to the aforementioned table.

Available Eval functions

The following is a short list of some of the most important Eval functions available so far:

  • measurement functions: Cols, Rows, Min, Max, IMin, IMax, Sum, WSum, Abs, QDet
  • vector initialization and transformation: Fill, Init, Rand, VSubC, VSubN, Select, Sort, VV, VVCat, VVSet, VMCol, VMRow, Interp,Trn
  • trigonometric, transcendental, and other special functions: Sin, Cos, Tan, ASin, ACos, ATan, Exp, Sqrt, Log, Ln, Ld, Pi, E
  • complex arithmetic: CR2P, CP2R, CR2Len, CR2Phi, CGet, CSet, CMul
  • integration and differentiation: YDiff, YInt
  • statistics: Avr, Var, StdDev, Corr, Median, Hist, Dist, ModClust, HAClust, EM (Expectation Maximization), Density
  • data conversion: Lin2Log, Log2Lin, Hz2Cent, Cent2Hz, Hz2Bark, Bark2Hz, Hz2Mel, Mel2Hz, Hz2ERB, ERB2Hz
  • signal windowing functions: Window, WHanning, WHamming, WBartlett, WTapRect, WNutTall, WFlatTop, WBlackman, WKaiser, WGauss
  • signal processing: FFT, IFFT, DFT, Cepstrum, LPC, DCT, ZCross, IIR1, IIR2, FIR1, FIR2
  • order spectrum analysis: otrack1, sig2osp, asp2osp, ticks2f1
  • miscellaneous functions: IPeak, QInterp, RPoly, RPolyRef, HTH, ASeg1


Redesign the Institute's homepage using a Content Management System (CMS) to facilitate easy actualization by all Institute employees, easy extension of the homepage functionality and a consistent style.


The CMS 'Mambo' (today: Joomla) was chosen from the available open-source systems. The homepage was redesigned. The homepage content was transferred.


If employees can easily update their content from any web browser, the homepage will be more up-to-date.


The tsetse fly genus Glossina is a carrier of the sleeping sickness and of the Nagana epidemic, which affect the ungulates. Over the past years, the sicknesses carried by the tsetse flies has spread so rapidly that intensified disease-fighting measures were necessary. One of the most effective methods is the exposure of a sterile male. The sterilized flies are raised on a large scale using radiation and then released. During the culture, a continuous control of the quality of the flies is necessary. The objective of this project is to develop an acoustic quality check for the sterile males. The research has demonstrated that the quality control is only possible using the sound activity of the flies.


The tsetse fly uses its flying apparatus to produce sounds in addition to flying. Whereas the flying noise consists mainly of low frequent parts (<2000Hz) with only a few tonal parts, the "singing" consists of tonal components in the range of ca. 1-8kHz. For the detection of the singing, a high-pass-filtered spectrum of the interested frequency range is calculated (using DCT). From this spectrum, three parameters are extracted (energy in local peaks, 95 percent energy bandwidth, variance of the amplitudes), which are suitable for the determination of sounds with distinctive components. These single parameters are converted in weight values between 0 and 1 by using trigger functions. Afterwards, they are merged. The thresholds of the trigger functions are investigated in a separate measuring run from the background signal. The test version of this method was implemented in STx.


The program will be tested on the testse flies at the laboratory in the 2006/2007 winter semester. As a result of initial tests, it will probably be enhanced. As of 2007, the program is planned to be put into practice in an African institute.


The time/frequency transformations (wavelets, Cohen's class distributions developed in earlier projects (2006/2007) have been integrated into the spectrogram and parameter viewer in STx.


STx includes a number of applications with which one can segment and transcribe signals. All of these applications, however, have additional functionality not necessary for transcription (e.g. parameter extraction), and have not been optimised with transcription in mind. Since transcription and segmentation represents a large part of the time spent on speach analysis, this projects aim is to develop an application which includes everything to need for the job, and is easy to use. The application is included in the speach analysis script SPEXL.


  • waveform and spectrogram signal representations
  • convenient signal bracketing, zoom and playback functionality
  • existing segments displayed in graphs and as list
  • direct input of text and metadata
  • configurable attributes (segment templates)
  • interface to all STx analysis applications
  • hotkeys for all essential functions


A console is extremely helpful when developing scripts and applications. This new script console can execute (almost) all STx commands and allows access to variables and objects. The console was implemented with the help of an extended edit control and a macro class. Command line oriented versions of current STx functionality will be developed as and when needed.

The script debugger was extended during the console development, and a number of thread synchronisation problems were solved.


The methods for extracting speech parameters, most notably formants have been improved. Firstly, a new method was implemented, which measures formants taking some formant attributes (a model) into account. The model uses frequency range and rate of change attributes. Tracking is limited to the voiced parts of the signal. A test version of this method was integrated into the STx speech analysis application SPEXL.

Upcoming Events

Improving speech technology with the open source VOiCES dataset

ARI guest talk by Michael R. Lomnitz

19. September 2019


Seminar Room, Wohllebengasse 12-14 / Ground Floor

Read more ...


The 10th ISCA Speech Synthesis Workshop

20. - 22. September 2019

Vienna, Austria