Contenuto principale

noiseCriteria

R2026b

Evaluate room background noise using noise criteria (NC) curves

Since R2026b

    Description

    NC = noiseCriteria(audioIn,fs) returns the NC level according to the ANSI/ASA S12.2-2019 standard [1]. The function calculates the NC level using either the speech interference level (SIL) or the NC tangency method, according to the procedure outlined in the standard.

    example

    NC = noiseCriteria(Leq) computes the NC level using equivalent continuous sound pressure level (SPL) measurements across octave bands.

    example

    NC = noiseCriteria(___,Name=Value) specifies options using one or more name-value arguments.

    [NC,SIL] = noiseCriteria(___) also returns the SIL.

    [NC,SIL,spectrumImbalance] = noiseCriteria(___) also returns a structure containing a summary of spectrum imbalances if detected.

    [NC,SIL,spectrumImbalance,rattleRisk] = noiseCriteria(___) also returns a structure detailing the likelihood of acoustically induced vibrations and rattles.

    noiseCriteria(___) without any output arguments plots the octave band SPL measurements against NC curves and displays the NC level.

    Examples

    collapse all

    Load a recording of a room with background noise.

    [audioIn, fs] = audioread("office_kitchen_44p1_20s.wav");

    If possible, enter the calibration factor for the microphone used to make the recording or calculate it using calibrateMicrophone. The microphone in this example has an associated reference recording at 1 kHz with an SPL meter reading of 64 dB.

    [audioRef, fsRef] = audioread("1khz_64db_44p1.wav");
    SPLreading = 64;
    calibrationFactor = calibrateMicrophone(audioRef,fsRef,SPLreading)
    calibrationFactor = 
    2.0836
    

    Plot the NC level for the room recording.

    noiseCriteria(audioIn,fs,CalibrationFactor=calibrationFactor)

    Figure contains an axes object. The axes object with title Noise Criteria, xlabel Octave-Band Center Frequency (Hz), ylabel Sound Pressure Level (dB) contains 26 objects of type line, text. These objects represent Measurement, NC-45 (tangency method).

    This room has an NC level of 45. Additionally calculate the SIL and analyze the room for spectrum imbalances and rattle risk.

    [NC, SIL, sI, rr] = noiseCriteria(audioIn,fs,CalibrationFactor=calibrationFactor)
    NC = 
    "NC-45 (500 Hz)"
    
    SIL = 
    38.9369
    
    sI = struct with fields:
        Summary: ""
        Details: [5×4 table]
    
    
    rr = struct with fields:
        Summary: "No acoustically induced vibrations and rattles issues detected."
        Details: [3×3 table]
    
    

    Collect equivalent continuous sound level (Leq) measurements of a room using an SPL meter with octave band filters centered at 16, 31.5, 63, 125, 250, 500, 1000, 2000, 4000, and 8000 Hz.

    Leq = [66, 46, 46, 49, 44, 46, 44, 38, 31, 19]; % readings from meter

    Use noiseCriteria to calculate the NC level using the readings from the SPL meter.

    NC = noiseCriteria(Leq)
    NC = 
    "NC-43 (1000 Hz)"
    

    Not all SPL meters cover the 16–8000 Hz frequency range required by the ANSI/ASA S12.2-2019 standard, so you can omit readings in the 16, 31.5, and 8000 Hz bands. The function ignores missing readings from these bands and calculates the NC level without them. You must specify all other bands.

    LeqNarrow = Leq;
    LeqNarrow([1:2,10]) = missing;
    NC = noiseCriteria(LeqNarrow)
    NC = 
    "NC-43 (1000 Hz)"
    

    Omitting readings from the 16, 31.5, and 8000 Hz octave bands rarely results in a significantly different NC designation. However, the rattle risk may be inaccurate with missing bands.

    [~,~,~,rr] = noiseCriteria(Leq)
    rr = struct with fields:
        Summary: "Moderately perceptible at 16 Hz (66 dB > 65 dB threshold)"
        Details: [3×3 table]
    
    
    [~,~,~,rrLimited] = noiseCriteria(LeqNarrow)
    rrLimited = struct with fields:
        Summary: "No acoustically induced vibrations and rattles issues detected."
        Details: [3×3 table]
    
    

    Input Arguments

    collapse all

    Audio input, specified as a column vector of real finite numbers. If audioIn is not calibrated, you can determine the calibration factor using calibrateMicrophone. Specify the first argument as either audioIn or Leq.

    For guidance on taking compliant measurements, see Calibration Factor for Audio Recordings.

    Data Types: single | double

    Sample rate in Hz, specified as a scalar equal to or greater than 16 kHz.

    fs is required when you specify the first argument as audioIn. This argument is invalid when you specify the first argument as Leq.

    Data Types: single | double

    Octave-band equivalent continuous sound level (Leq) measurements in decibels (dB), specified as a 10-element row vector. Each element must correspond to a measurement at nominal octave band center 16, 31.5, 63, 125, 250, 500, 1000, 2000, 4000, and 8000 Hz, respectively.

    If the SPL for a given band is unknown, specify it as missing. An NC level calculated with missing Leq values might not be compliant with ASA S12.2-2019.

    Specify either audioIn or Leq.

    For guidance on taking compliant measurements, see Obtaining Standard-Compliant Sound Level Measurements.

    Data Types: single | double

    Name-Value Arguments

    collapse all

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Example: noiseCriteria(audioIn,fs,CalibrationFactor=1.5)

    Microphone calibration factor, specified as a positive scalar. audioIn is multiplied by CalibrationFactor before analysis. To compute the calibration factor specific to your system, use the calibrateMicrophone function.

    CalibrationFactor is valid only when you specify the first argument as audioIn.

    Data Types: single | double

    Reference pressure for dB calculation in pascals, specified as a positive scalar. The default value, 20 micropascals, is the common value for air.

    PressureReference is valid only when you specify the first argument as audioIn.

    Data Types: single | double

    Option to screen audio input for surging, specified as true or false. If you set ScreenSurging to true, noiseCriteria uses a nonstandard heuristic to detect whether surging is present.

    For more information on surging and the heuristic, see Screening for Surging.

    ScreenSurging is valid only when you specify the first argument as audioIn.

    Data Types: logical

    Option to screen audio input for large random fluctuations, specified as true or false. If you set ScreenLargeRandomFluctuations to true, noiseCriteria follows screening criteria from ASA S12.2-2019 to determine if large random fluctuations are present.

    For more information on screening for large random fluctuations, see Screening for Large Random Fluctuations.

    ScreenLargeRandomFluctuations is valid only when you specify the first argument as audioIn.

    Data Types: logical

    Output Arguments

    collapse all

    NC level, returned as a string. When the function selects the NC curve using the SIL, NC has the format NC-SIL. When it selects the curve using the tangency method, NC has the form NC-CurveID (TC), where CurveID is the NC curve tangent to the SPL measurements and TC is the tangency frequency in Hz.

    For more information on the NC tangency method, see NC Tangency Method.

    Example: "NC-51 (125 Hz)" indicates an NC level of 51 using the NC tangency method, where the SPL in the octave band centered at 125 Hz was closest to the NC-51 curve.

    Example: "NC-25" indicates an NC level of 25 using the SIL.

    Speech interference level, returned as a scalar. The speech interference level is the average of the SPL measurements in the 500, 1000, 2000, and 4000 Hz octave bands. You can also compute SIL using the speechInterferenceLevel function.

    For more information, see Speech Interference Level.

    Spectrum imbalance, returned as a structure or character vector. When the function determines the NC level to be between NC-15 and NC-70, spectrumImbalance contains a summary of spectrum imbalance issues that might cause dissatisfaction for occupants in the room and the table of values used to determine the summary. When the NC level is lower than NC-15 or above NC-70, spectrumImbalance is a character vector stating that the standard does not define spectrum imbalance for the determined NC level.

    For more information on spectrum imbalance determination, see Spectrum Imbalance.

    Risk of acoustically induced vibrations and rattles, returned as a structure. rattleRisk contains a summary of octave bands that can contain perceptible rattle and the table of values used by the function to determine the risk.

    For more information on rattle risk, see Rattle Risk.

    More About

    collapse all

    References

    [1] Acoustical Society of America. Criteria for Evaluating Room Noise. ANSI/ASA S12.2-2019 (R2023). Acoustical Society of America, 2019.

    [2] Acoustical Society of America. American National Standard for Rating Noise with Respect to Speech Interference (R2011). ANSI/ASA S12.65-2006. Acoustical Society of America, 2011.

    Version History

    Introduced in R2026b