Ir al contenido
Esta documentación describe la versión 4.0.0, todavía sin publicar. La versión actual en PyPI es la 3.3.0 y no incluye todo lo que se describe aquí.

emission.sound_power_high_frequency

La referencia de la API se publica en inglés en los dos idiomas: se genera a partir de los docstrings del código, que son su texto original.

Sound power levels in the 16 kHz octave band: ISO 9295:2015.

Some machines emit most of what matters above the range the general methods cover: the paper noise of a fast printer, the whine of a switched-mode power supply, the tone of a display. ISO 3741 stops at the 10 kHz one-third octave band and ISO 3744 at the same place, so ISO 9295 adds the octave band centred on 16 kHz, from 11,2 kHz to 22,4 kHz (clause 1), and determines the unweighted sound power level in its three one-third octave bands (12,5, 16 and 20 kHz) or in the narrow bands that hold its discrete tones.

Four methods are specified. Three of them use a reverberation test room with a microphone on a rotating boom, pointing upwards so that the equipment is heard at grazing incidence (clauses 5.4 and 5.5), and one uses a hemi-anechoic room (clause 9).

Mean level. The time-averaged band level over the four orientations of the equipment (), or over three revolutions of the boom (), is the energy mean of Formula (1):

A moving microphone spreads a discrete tone over sidebands. The analyser has to be at least as wide as Formula (2), with the speed of the microphone and the speed of sound; with a narrower FFT the sidebands are summed on an energy basis, Formula (3):

Method with the measured reverberation time (clause 6). Above 10 kHz the room absorption coefficient cannot be taken as small, so the Eyring relation gives it from the measured reverberation time , and the room constant follows from it ( the total room surface, its volume):

The sound power level in each band is then Formula (6):

Method with the calculated air absorption (clause 7). At 10 kHz and above practically all of the absorption of a reverberation room is in the air, so the room constant comes from the air absorption coefficient in nepers per metre, Formula (7), and Formula (6) is applied unchanged:

is Annex A (normative), which is ISO 9613-1 written in nepers rather than decibels and evaluated up to 22,4 kHz, where ISO 9613-1 stops at 10 kHz; air_absorption_np_per_m evaluates it with the library’s ISO 9613-1 implementation. Tables 1 and 2 print it for 18 °C to 27 °C, 40 % to 60 % relative humidity and 10 000 Hz to 22 400 Hz.

Method with a reference sound source (clause 8). The source under test and a calibrated reference source are measured in turn with the same bandwidth. For broadband noise the band level is Formula (8); for discrete tones the reference source is calibrated as a power spectral density, per unit bandwidth, and the noise bandwidth of the constant bandwidth analyser puts it back into the band, Formula (9):

Method with a free field over a reflecting plane (clause 9) is ISO 3744 (sound_power_pressure) with the three one-third octave bands of the 16 kHz octave; beyond a measurement radius of 2 m the surface level takes the absorption correction of Formula (10), with in decibels per metre:

Reference meteorological conditions. Clause 10.1 carries the levels of the reverberation-room methods to 101,325 kPa and 23,0 °C “de acuerdo con la Norma ISO 3741”, which is the reference-quantity correction and the radiation-impedance correction of ISO 3741:2010 clause 9.1.4 for a direct method and alone for the comparison with a reference source, exactly as ISO 3741 Formulae (20) and (21) apply them.

What to determine. Table 3 says which sound power levels a report carries for each type of noise, in the octave bands from 125 Hz to 8 kHz and in the 16 kHz octave: high_frequency_levels_to_determine reads it.

Formulae (4) to (10) carry no worked example in the standard and are pinned in closed form; Tables 1 and 2 are the numeric oracle of Annex A.

Auto-generated from the source docstrings by scripts/generate_api_docs.py (make api-docs). Do not edit by hand.

air_absorption_np_per_m(
frequencies_hz: ArrayLike,
*,
temperature_c: float,
relative_humidity_percent: float,
static_pressure_kpa: float = 101.325,
) -> NDArray[np.float64]

Air absorption coefficient in nepers per metre (ISO 9295 Annex A).

Formulae (A.1) to (A.5) of ISO 9295:2015 are the ISO 9613-1:1993 pure-tone attenuation written for the amplitude in nepers per metre, the unit Formula (7) takes, so this is the library’s ISO 9613-1 evaluation without its factor 8,686 (Annex A: “multiplicando el valor de en Np/m por 8,686 para obtener el valor de en dB/m”). The difference from air_attenuation is the range: Annex A evaluates the same formula up to 22,4 kHz, the top of the 16 kHz octave band, so no advisory is raised between 10 kHz and 22,4 kHz, where ISO 9613-1 stops tabulating.

Parameters

NameDescription
frequencies_hzFrequency or frequencies f, in hertz.
temperature_cAir temperature, in degrees Celsius. Outside -20 °C to +50 °C emits an AtmosphericAbsorptionWarning.
relative_humidity_percentRelative humidity h_r, in percent.
static_pressure_kpaStatic pressure p_s, in kilopascals (default 101,325 kPa, the pressure Tables 1 and 2 are printed at).

Returns: in Np/m, with the shape of frequencies_hz.

Raises

ExceptionWhen
ValueErrorfor a non-positive frequency, a temperature at or below absolute zero, a relative humidity outside [0, 100] % or a non-positive static pressure.
free_field_absorption_correction(
frequencies_hz: ArrayLike,
*,
radius_m: float,
temperature_c: float,
relative_humidity_percent: float,
static_pressure_kpa: float = 101.325,
) -> NDArray[np.float64]

Air absorption correction of the free-field method (ISO 9295 Formula (10)).

, with the air absorption in decibels per metre (Annex A times 8,686). Clause 9.8 adds it to the surface sound pressure level of ISO 3744 before the sound power is determined, and only when the measurement radius exceeds 2 m; at 2 m or less the clause asks for no correction and this returns zero. The surface level and the sound power level differ by the constant , so adding to the band levels sound_power_pressure returns is the same thing.

Parameters

NameDescription
frequencies_hzBand centre or tone frequencies, in hertz.
radius_mRadius r of the measurement hemisphere, in metres.
temperature_cAir temperature, in degrees Celsius.
relative_humidity_percentRelative humidity, in percent.
static_pressure_kpaStatic pressure, in kilopascals (default 101,325 kPa).

Returns: per frequency, in decibels.

Raises

ExceptionWhen
ValueErrorfor a non-positive radius or the atmospheric inputs air_absorption_np_per_m refuses.
high_frequency_levels_to_determine(
*,
noise_125_hz_to_8_khz: str,
noise_16_khz_octave: str,
) -> tuple[str, ...]

The sound power levels to determine for a type of noise (ISO 9295 Table 3).

Table 3 of ISO 9295:2015 pairs the noise of the equipment in the octave bands from 125 Hz to 8 kHz with its noise in the 16 kHz octave band and says what the determination has to give. The answer is a tuple of these identifiers, in the order the table names them:

  • "a_weighted_sound_power_level": the A-weighted sound power level from the octave bands of 125 Hz to 8 kHz, by ISO 3741 or ISO 3744 as appropriate (footnote a lets the one-third-octave and octave band levels of that range be given as well);
  • "one_third_octave_band_levels": the sound power level in each one-third octave band of the 16 kHz octave, by this standard (high_frequency_sound_power or high_frequency_sound_power_comparison);
  • "tone_level_and_frequency": the level and the frequency of the discrete tone in the 16 kHz octave;
  • "tone_levels_within_10_db": the levels and frequencies of every tone in the 16 kHz octave within 10 dB of the highest tonal level, the tones HighFrequencySoundPowerResult.within_10_db_of_maximum marks.

With no significant noise from 125 Hz to 8 kHz, footnote b notes that the noise lies outside the scope of ISO 3741 and ISO 3744, so only this standard applies and no A-weighted level is asked for.

Parameters

NameDescription
noise_125_hz_to_8_khzThe noise in the octave bands from 125 Hz to 8 kHz: "broadband" or "narrowband" (one row of the table), or "none" for no significant noise.
noise_16_khz_octaveThe noise in the 16 kHz octave band: "none", "broadband", "discrete_tone" or "multiple_tones".

Returns: The identifiers of the levels to determine.

Raises

ExceptionWhen
ValueErrorfor a noise type the table does not name, or for a combination it has no row for: no significant noise in either range, or broadband noise in the 16 kHz octave with none below it.
high_frequency_sound_power(
pressure_levels_db: ArrayLike,
*,
frequencies_hz: ArrayLike,
room_constant_m2: ArrayLike,
temperature_c: float = 23.0,
static_pressure_kpa: float = 101.325,
tonal: bool = False,
) -> HighFrequencySoundPowerResult

Sound power level in the 16 kHz octave band, direct method (ISO 9295 Formula (6)).

per band: Formula (6), carried to the reference meteorological conditions by the and of ISO 3741:2010 clause 9.1.4, which clause 10.1 points to. The same formula serves both direct methods; only the room constant differs, from the measured reverberation time (room_constant_from_reverberation_time, clause 6) or from the calculated air absorption (room_constant_from_air_absorption, clause 7).

Parameters

NameDescription
pressure_levels_db per band, in dB re 20 µPa, or an (N, bands) array of the time-averaged levels of the four orientations () or three boom revolutions (), energy-averaged by Formula (1).
frequencies_hzBand centre or tone frequencies, in hertz, one per band. A frequency outside 11,2 kHz to 22,4 kHz emits a SoundPowerWarning.
room_constant_m2Room constant R, in square metres, a scalar or one value per band.
temperature_cAir temperature in the room, in degrees Celsius (default 23,0 °C, the reference temperature).
static_pressure_kpaStatic pressure in the room, in kilopascals (default 101,325 kPa, the reference pressure).
tonalTrue when the bands are the narrow bands of discrete tones (clause 6.5), which changes how the result is drawn and read.

Returns: A HighFrequencySoundPowerResult with method='direct'.

Raises

ExceptionWhen
ValueErrorfor non-finite levels, a room constant that is not positive, frequencies that do not match the bands, or a temperature or static pressure ISO 3741 cannot correct from.
high_frequency_sound_power_comparison(
pressure_levels_db: ArrayLike,
*,
frequencies_hz: ArrayLike,
reference_pressure_levels_db: ArrayLike,
reference_sound_power_levels_db: ArrayLike,
noise_bandwidth_hz: float | None = None,
temperature_c: float = 23.0,
static_pressure_kpa: float = 101.325,
) -> HighFrequencySoundPowerResult

Sound power level in the 16 kHz octave band against a reference source (ISO 9295 clause 8).

For broadband noise, Formula (8): , per one-third octave band. For discrete tones, Formula (9) adds , because the reference source is then calibrated per unit bandwidth (clause 8.1) and is the noise bandwidth of the constant bandwidth analyser. Clause 10.1 adds the radiation-impedance correction of ISO 3741, as ISO 3741 Formula (21) does for its own comparison method.

Parameters

NameDescription
pressure_levels_db per band, in dB re 20 µPa, or an (N, bands) array averaged by Formula (1).
frequencies_hzBand centre or tone frequencies, in hertz, one per band.
reference_pressure_levels_db per band, in dB re 20 µPa, measured with the same bandwidth at the same location (clauses 8.3, 8.4); a 2-D input is averaged by Formula (1) as well.
reference_sound_power_levels_db of the calibrated reference source, in dB re 1 pW, a scalar or one value per band: per band for broadband noise, per hertz for tones.
noise_bandwidth_hz, the noise bandwidth of the analyser, in hertz, which selects Formula (9); None (default) selects Formula (8). Clause 8.5.2 allows 1 Hz for a constant percentage analyser, and holds an FFT to 112 Hz or less: a wider one emits a SoundPowerWarning.
temperature_cAir temperature in the room, in degrees Celsius (default 23,0 °C).
static_pressure_kpaStatic pressure in the room, in kilopascals (default 101,325 kPa).

Returns: A HighFrequencySoundPowerResult with method='comparison', tonal set when noise_bandwidth_hz is given.

Raises

ExceptionWhen
ValueErrorfor non-finite levels, reference levels that do not span the same bands, a non-positive bandwidth, or a temperature or static pressure ISO 3741 cannot correct from.
HighFrequencySoundPowerResult(
frequencies: NDArray[np.float64],
sound_power_level: NDArray[np.float64],
mean_pressure_level: NDArray[np.float64],
room_constant: NDArray[np.float64] | None,
reference_sound_power_level: NDArray[np.float64] | None,
reference_pressure_level: NDArray[np.float64] | None,
noise_bandwidth_hz: float | None,
c1: float,
c2: float,
method: str,
tonal: bool,
)

A sound power determination in the 16 kHz octave band (ISO 9295:2015).

One value per band: a one-third octave band of the 16 kHz octave for broadband noise, or the narrow band of a discrete tone.

Attributes

NameDescription
frequenciesBand centre or tone frequencies, in hertz.
sound_power_level per band, in dB re 1 pW, at the reference meteorological conditions of clause 10.1 (Formula (6) plus c1 and c2 for the direct method, Formula (8) or (9) plus c2 for the comparison).
mean_pressure_level per band, in dB re 20 µPa, the energy mean of Formula (1) over the orientations or revolutions supplied.
room_constantThe room constant R per band, in square metres, for the direct method (Formula (4) or (7)); None for the comparison.
reference_sound_power_level per band, in dB re 1 pW (per hertz for the tonal comparison); None for the direct method.
reference_pressure_level per band, in dB re 20 µPa; None for the direct method.
noise_bandwidth_hz of Formula (9), in hertz, for the tonal comparison; None otherwise.
c1Reference-quantity correction C1 of ISO 3741, in dB, for the direct method; NaN for the comparison, which does not apply it.
c2Radiation-impedance correction C2 of ISO 3741, in dB.
method'direct' (clauses 6 and 7) or 'comparison' (clause 8).
tonalTrue when the bands are the narrow bands of discrete tones rather than one-third octave bands of broadband noise.
HighFrequencySoundPowerResult.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the band levels, with the mean room level they came from.

Broadband bands are drawn as bars over the one-third octave bands; a tonal determination is drawn as one stem per tone on a frequency axis, with the line 10 dB below the highest tone that clause 13 c) reports down to. Requires matplotlib (pip install phonometry[plot]); returns the Axes.

Parameters

NameDescription
axExisting axes, or None to create a figure.
language"en" (default) or "es".
kwargsForwarded to the bar or stem drawing of .

Returns: The axes.

HighFrequencySoundPowerResult.within_10_db_of_maximum

Section titled “HighFrequencySoundPowerResult.within_10_db_of_maximum”

property

Bands whose level is within 10 dB of the highest one.

Clause 13 c) and Table 3 ask for the level and the frequency of every tone that lies within 10 dB of the highest tonal level in the band, so for a tonal determination this marks the tones the report has to carry.

minimum_analyzer_bandwidth_hz(
tone_frequency_hz: ArrayLike,
*,
microphone_speed_m_s: float,
speed_of_sound: float,
) -> NDArray[np.float64]

Narrowest analyser bandwidth that holds a tone seen by a moving microphone.

, ISO 9295:2015 Formula (2). The moving microphone spreads the energy of a discrete tone over sidebands either side of its frequency, and an analyser at least this wide collects the whole tone in one band; a narrower one (an FFT) needs its sidebands summed with tone_level_from_sidebands.

Parameters

NameDescription
tone_frequency_hzCentre frequency f of the tone, in hertz.
microphone_speed_m_sSpeed v of the microphone along its path, in metres per second.
speed_of_soundSpeed of sound c, in metres per second.

Returns: The minimum bandwidth , in hertz.

Raises

ExceptionWhen
ValueErrorfor a non-positive or non-finite input.
room_absorption_coefficient(
reverberation_time_s: ArrayLike,
*,
volume_m3: float,
surface_area_m2: float,
) -> NDArray[np.float64]

Room absorption coefficient from the reverberation time (ISO 9295 Formula (5)).

, the Eyring relation solved for the absorption coefficient. Clause 6.1 asks for it rather than the simpler Sabine one because above 10 kHz the room absorption coefficient cannot be taken as small compared with unity. The constant is the 0,16 the formula prints.

Parameters

NameDescription
reverberation_time_sMean measured reverberation time T per band, in seconds (scalar or one value per band); clause 6.2 averages three or four points of the microphone path.
volume_m3Room volume V, in cubic metres.
surface_area_m2Total room surface S, in square metres.

Returns: per band, in (0, 1).

Raises

ExceptionWhen
ValueErrorfor a non-positive or non-finite time, volume or surface.
room_constant_from_air_absorption(
frequencies_hz: ArrayLike,
*,
volume_m3: float,
surface_area_m2: float,
temperature_c: float,
relative_humidity_percent: float,
static_pressure_kpa: float = 101.325,
) -> NDArray[np.float64]

Room constant from the calculated air absorption (ISO 9295 Formula (7)).

, the room constant of the method of clause 7, with in nepers per metre from air_absorption_np_per_m (Annex A). The method takes all of the room absorption to be in the air, which clause 7.2 holds at 10 kHz and above; a band below 10 kHz emits a SoundPowerWarning, since the walls are no longer negligible there and the measured reverberation time of room_constant_from_reverberation_time is the method to use.

Parameters

NameDescription
frequencies_hzBand centre or tone frequencies, in hertz.
volume_m3Room volume V, in cubic metres.
surface_area_m2Total room surface S, in square metres.
temperature_cAir temperature in the room, in degrees Celsius.
relative_humidity_percentRelative humidity in the room, in percent.
static_pressure_kpaStatic pressure in the room, in kilopascals (default 101,325 kPa).

Returns: R per frequency, in square metres.

Raises

ExceptionWhen
ValueErrorfor a non-positive or non-finite volume or surface, for the atmospheric inputs air_absorption_np_per_m refuses, or where : the air alone would then absorb more than the room surface can, and Formula (7) has no finite room constant.
room_constant_from_reverberation_time(
reverberation_time_s: ArrayLike,
*,
volume_m3: float,
surface_area_m2: float,
) -> NDArray[np.float64]

Room constant from the measured reverberation time (ISO 9295 Formulae (4), (5)).

with from room_absorption_coefficient, the room constant of the method of clause 6. It goes into high_frequency_sound_power as room_constant_m2.

Parameters

NameDescription
reverberation_time_sMean measured reverberation time T per band, in seconds (scalar or one value per band).
volume_m3Room volume V, in cubic metres.
surface_area_m2Total room surface S, in square metres.

Returns: R per band, in square metres.

Raises

ExceptionWhen
ValueErrorfor a non-positive or non-finite time, volume or surface.
tone_level_from_sidebands(sideband_levels_db: ArrayLike) -> float

Total level of a tone from its sideband levels (ISO 9295 Formula (3)).

, the energy sum of the bands adjacent to the tone frequency that carry its energy when the analyser is narrower than minimum_analyzer_bandwidth_hz.

Parameters

NameDescription
sideband_levels_dbThe sideband levels , in decibels re 20 µPa.

Returns: , in decibels re 20 µPa.

Raises

ExceptionWhen
ValueErrorfor an empty or non-finite input.