Compute the Speech Intelligibility Index (SII) described by ANSI specification S3.51997, including extensions for conductive hearing loss. Optionally apply interpolation obtain values for the required frequencies.
1 2 3 4 5 6 7 8 9 10 11 12 13  sii(speech = c("normal", "raised", "loud", "shout"),
noise, threshold, loss, freq,
method = c("critical", "equalcontributing",
"onethird octave", "octave"),
importance = c("SII", "NNS", "CID22", "NU6", "DRT",
"ShortPassage", "SPIN", "CST"),
interpolate=FALSE)
## S3 method for class 'SII'
print(x, digits=3, ...)
## S3 method for class 'SII'
plot(x, ...)
## S3 method for class 'SII'
summary(object, digits=2, ...)

speech 
Either a numeric vector providing E'[i], the
equivalent speech spectrum level (in dB) at each frequency, or a
character string indicating the stated vocal effort corresponding to
one of the standard standard speech spectrum levels ("normal",
"raised", "loud", "shout"). Defaults to 
noise 
A numeric vector providing N'[i], the equivalent noise spectrum level (in dB) at each frequency. If missing, defaults to 50 dB for each frequency. 
threshold 
A numeric vector providing T'[i], the equivalent hearing threshold level (in dB) at each frequency. If missing, defaults to 0 dB for each frequency. 
loss 
A numeric vector providing J'[i], the conductive hearing loss level (in dB) at each frequency. If missing, defaults to 0 dB for each frequency. 
freq 
Vector of frequencies for which 
method 
A character string specifying the SII calculation method ("critical", "onethird octave", "equalcontributing", "octave") 
importance 
Either a numeric vector providing F[i],
the transfer function (importance weights) at each frequency, or a
character string indicating which transfer function to employ
("SII", "NNS", "CID22", "NU6", "DRT", "ShortPassage", "SPIN",
"CST"). Defaults to the standard SII transfer function,

interpolate 
Logical flag indicating whether to interpolate from the provide measurement values and frequencies to those required by the specified method via linear interpolation on the log scale. 
object,x 
SII object 
digits 
Number of digits to display 
... 
Optional arguments to 
American National Standard ANSI S3.51997 ("Methods for Calculation of the Speech Intelligibility Index") defines a method for computing a physical measure that is highly correlated with the intelligibility of speech as evaluated by speech perception tests given a group of talkers and listeners. This measure is called the Speech Intelligibility Index, or SII. The SII is calculated from acoustical measurements of speech and noise.
The sii
function implements ANSI S3.51997 as described in
the standard, without any attempt to optimize the performance. The
implementation does, however, include the extension for handling
conductive hearing loss from Annex A (utilizing the optional
loss
argument), and for utilizing alternative band weights
(i.e. transfer function) appropriate for differing message contents
(e.g. types of speech) as described in Annex B or userspecified
band weights (utilizing the optional argument importance
).
Further, this implementation provides a mechanism for
interpolating/extrapolating available measurements to those required
for the specified calculation procedure. When
interpolate=TRUE
, required values for speech
,
noise
, threshold
, and loss
will be computed
using linear interpolation (of the logscaled data). In this case,
missing values may be provided and will be appropriately
interpolated.
The return value is an object of class SII, containing the following components:
call 
Function call used to generate the SII object 
orig 
List containing original (preextrapolation) values for

speech, noise, threshold, loss, and freq 
Values used in calculations (extrapolated if necessary) 
table 
SII calculation worksheet, containing columns corresponding to both Table C.1 and C.2 in Annex C of the standard. Table columns are

sii 
Calculated SII value 
Gregory R. Warnes greg@warnes.net
ANSI S3.51997, "American National Standard Methods for Calculation of the Speech Intelligibility Index" American National Standards Institute, New York.
Other software programs for calculating SII are available from http://www.sii.to/html/programs.html.
SII Constants: critical
, and
sic.critical
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  ## Example C.1 from ANSI S3.51997 Annex C
sii.C1 < sii(
speech = c(50.0, 40.0, 40.0, 30.0, 20.0, 0.0),
noise = c(70.0, 65.0, 45.0, 25.0, 1.0,15.0),
threshold= c( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
method="octave"
)
sii.C1 # rounded to 2 digits by default
print(sii.C1$sii, digits=20) # full precision
summary(sii.C1) # full details
plot(sii.C1) # plot
## The value given in the Standard is $0.504$.
## Same calculation, but manually specify the frequencies
## and importance function, and use default for threshold
sii.C1 < sii(
speech = c(50.0, 40.0, 40.0, 30.0, 20.0, 0.0),
noise = c(70.0, 65.0, 45.0, 25.0, 1.0,15.0),
method="octave",
freq=c(250, 500, 1000, 2000, 4000, 8000),
importance=c(0.0617, 0.1671, 0.2373, 0.2648, 0.2142, 0.0549)
)
sii.C1
## Now perform the calculation using frequency weights for the Connected
## Speech Test (CST)
sii.CST < sii(
speech = c(50.0, 40.0, 40.0, 30.0, 20.0, 0.0),
noise = c(70.0, 65.0, 45.0, 25.0, 1.0,15.0),
method="octave",
importance="CST"
)
round(sii.CST$table[,c(5:7,13)],2)
sii.CST$sii
## Example C.2 from ANSI S3.51997 Annex C
sii.C2 < sii(
speech = rep(54.0, 18),
noise = c(40.0, 30.0, 20.0, rep(0, 183) ),
threshold= rep(0.0, 18),
method="onethird"
)
sii.C2$table[1:3,1:8]
sii.C2
## Interpolation example, for 8 frequencies using NU6 importance
## weight, default values for noise.
sii.left < sii(
speech="raised",
threshold=c(25,25,30,35,45,45,55,60),
freq=c(250, 500, 1000, 2000, 3000, 4000, 6000, 8000),
method="critical",
importance="NU6",
interpolate=TRUE
)
sii.left

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.