stipa
MATLAB implementation of the Speech Transmission Index for Public Address (STIPA) method for evaluating the speech transmission quality.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (8.1%) to scientific vocabulary
Keywords
Repository
MATLAB implementation of the Speech Transmission Index for Public Address (STIPA) method for evaluating the speech transmission quality.
Basic Info
Statistics
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
- Releases: 1
Topics
Metadata Files
README.md
Speech Transmission Index for Public Address (STIPA)
Speech Transmission Index (STI) is a metric ranging between 0 and 1 predicting the speech intelligibility when speech is passed through a transmission channel, defined in the IEC 60268-16 standard[^1]. It is based on an analysis of the amplitude modulations, which simulate speech signals.
[^1]: International Electrotechnical Commission,“Sound system equipment – Part 16: Objective rating of speech intelligibility by speech transmission index,” 2020. Number IEC 60268-16:2020, edition 5.0.
The full STI model consists of 98 separate test signals using 14 different modulation frequencies in 7 octave bands, which requires approximately 15 minutes of measurements. STIPA is a simplified form of the full STI based on measurements using a lower number of modulation indices. Specifically, STIPA uses only one test signal with 2 modulation frequencies in each of the 7 octave bands. Recommended measurement duration shall be approximately 18 seconds, with a recommended range of 15 s to 25 s.
This MATLAB implementation of STIPA allows users to generate the STIPA test signal of defined length and sampling frequency and then compute the STI using the direct STIPA method.
Apart from the direct STIPA method, the norm also specifies the indirect method usually denoted as STIPA(IR), which is based on measuring the impulse response. However, the indirect method is not suitable for applications involving non-linear components in the transmission chain, as it relies on the assumption of linearity and may lead to potential inaccuracies in measurements.
The quality of speech transmission and the likelihood of intelligibility of syllables, words, and sentences being comprehended for native speakers with healthy hearing can be represented by the following table^2.
| STI value | Quality according to
IEC 60268-16 | Intelligibility
of syllables in % | Intelligibility
of words in % | Intelligibility
of sentences in % |
|:----------------:|:---------:|:-------------:|:-------------:|:--------------:|
| 0 – 0.3 | bad | 0 – 34 | 0 – 67 | 0 – 89 |
| 0.3 – 0.45 | poor | 34 – 48 | 67 – 78 | 89 – 92 |
| 0.45 – 0.6 | fair | 48 – 67 | 78 – 87 | 92 – 95 |
| 0.6 – 0.75 | good | 67 – 90 | 87 – 94 | 95 – 96 |
| 0.75 – 1 | excellent | 90 – 96 | 94 – 96 | 96 – 100 |
The uncertainty associated with a single STIPA measurement is 0.02 to 0.03. Thus, to obtain higher accuracy, it is recommended to perform multiple measurements and average the results.
Note, that to obtain correct measurements of STI, it is necessary to follow the recommendations according to IEC 60268-16.
Usage
Typical usage of STIPA test consists of three steps:
1. Generate the STIPA test signal using generateStipaSignal.
2. Broadcast the STIPA test signal through the transmission channel and capture it.
3. Compute STI using stipa.
A simple demonstration of the provided STIPA implementation is provided in demonstration.m file.
Generate STIPA test signal
The STIPA test signal can be generated using
matlab
signal = generateStipaSignal(duration);
where duration specifies the duration of test signal in seconds.
If no sampling frequency is specified, the default value of 96 kHz is used.
To specify the sampling frequency, just call the function with the second parameter fs with the value of sampling frequency in Hz.
The minimum sampling frequency is 22,050 Hz.
matlab
signal = generateStipaSignal(duration, fs);
The generated test signal can be saved as audio file using the
audiowrite
function, e.g.:
matlab
audiowrite('./testSignal.wav', signal, fs);
Compute STI
Since STIPA evaluates the quality of speech transmission system based on the modulation depths of the measured signal, only the vector of measured signal and its sampling frequency fs is required to compute the STI value:
matlab
STI = stipa(signal, fs);
Note that the sampling frequency fs may differ from the sampling frequency of the generated STIPA test signal according to the recording device used.
Apart from the STI, the stipa function can also output the Modulation transfer ratios mk:
matlab
[STI, mk] = stipa(signal, fs);
In special cases, the stipa function allows to input also reference signal and the Modulation Transfer values are computed as a ratio of reference and signal modulation depths:
matlab
STI = stipa(signal, fs, reference);
and it is also possible to specify sampling frequency of reference signal fsRef if it differs from the sampling frequency of the measured signal:
matlab
STI = stipa(signal, fs, reference, fsRef);
Two additional optional name-value arguments, Lsk and Lnk, can be provided to adjust the STI calculation for auditory masking and threshold effects, and ambient noise.
Both Lsk and Lnk should be vectors of length 7, representing the levels of signal and ambient noise in each frequency band, respectively.
To adjust the Modulation Transfer Function (MTF) computation for auditory masking and threshold effects, use:
matlab
STI = stipa(signal, fs, 'Lsk', Lsk);
To also account for the effect of ambient noise, use:
matlab
STI = stipa(signal, fs, 'Lsk', Lsk, 'Lnk', Lnk);
Requirements
The code has been developed in MATLAB version R2022a. The implementation requires the following MATLAB toolboxes: - Signal Processing Toolbox, - Audio Toolbox.
Verification tests
IEC-60286-16 revision 5 requires to verify STIPA implementations using the test signals described in Annexes A and C. Several test signals developed by Embedded Acoustics, along with the test signal description, are available at http://www.stipa.info/index.php/download-test-signals.
To verify the STIPA implementation in this repository, please follow these steps:
1. Download zip files with testing signals using the link above.
2. Unzip the folder with the testing signals into verification folder.
3. Run stipaVerificationTests.m script.
Note that the verification tests evaluates only 4 out of 5 tests available (Annex A.2.2, A.3.2.1, C.3.2, and C.4.2) since Annex C.3.3 aims at modulation depth testing of indirect method using impulse responses – STIPA(IR), which is not part of this implementation.
Control Measurements
To compare the STIPA implementation in this repository with a licensed commercial device, we conducted a series of measurements in the university auditorium.
The results and more details about the measurement setup can be found in the controlMeasurements.md file.
License
The code of this toolbox is distributed under the terms of the GNU General Public License 3.
Citation
If you use this software in your work, please cite the article Matlab Implementation of STIPA (Speech Transmission Index for Public Address Systems).
bibtex
@article{zaviska2024stipa,
title = {{MATLAB Implementation of STIPA (Speech Transmission Index for Public Address Systems)}},
author = {Z{\'a}vi{\v{s}}ka, Pavel and Rajmic, Pavel and Schimmel, Ji{\v{r}}{\'i}},
year = {2024},
month = {apr},
journal = {Journal of the Audio Engineering Society},
number = {10713},
pages = {1--7},
url = {https://aes2.org/publications/elibrary-page/?id=22526},
}
© Pavel Záviška, Brno University of Technology, 2023–2025
Owner
- Login: zawi01
- Kind: user
- Repositories: 1
- Profile: https://github.com/zawi01
Citation (CITATION.cff)
cff-version: 1.2.0
title: Speech Transmission Index for Public Address (STIPA)
message: >-
If you use this software in your work, please cite it
using the metadata from "preferred-citation".
type: software
authors:
- family-names: Záviška
given-names: Pavel
orcid: 'https://orcid.org/0000-0003-2221-2058'
affiliation: Brno University of Technology
repository-code: 'https://github.com/zawi01/stipa'
abstract: >-
MATLAB implementation of the Speech Transmission Index for
Public Address (STIPA) method for evaluating the speech
transmission quality.
keywords:
- audio
- evaluation
- speech
- psychoacoustics
- intelligibility
- speech-transmission-index
- stipa
license: GPL-3.0
version: 1.0.0
date-released: '2024-06-18'
preferred-citation:
type: article
authors:
- family-names: Záviška
given-names: Pavel
orcid: 'https://orcid.org/0000-0003-2221-2058'
affiliation: 'Brno University of Technology'
- family-names: Rajmic
given-names: Pavel
orcid: 'https://orcid.org/0000-0002-8381-4442'
affiliation: 'Brno University of Technology'
- family-names: Schimmel
given-names: Jiří
orcid: 'https://orcid.org/0000-0002-7870-4345'
affiliation: 'Brno University of Technology'
journal: Journal of the Audio Engineering Society
title: Matlab Implementation of STIPA (Speech Transmission Index for Public Address Systems)
number: 10713
url: https://aes2.org/publications/elibrary-page/?id=22526
month: 6
year: 2024
GitHub Events
Total
- Watch event: 5
- Push event: 1
Last Year
- Watch event: 5
- Push event: 1