Class EventPostProcessing.PostProcessingConfig
The properties in this config class are required to combine a sequence of similar syllables into a single event.
An example configuration:
PostProcessing:
# The following generic post-processing steps are determined by config settings.
# Step 1: Combine overlapping events - events derived from all profiles.
# Step 2: Combine possible syllable sequences and filter on excess syllable count.
# Step 3: Remove events whose duration is too small or large.
# Step 4: Remove events whose bandwidth is too small or large.
# Step 5: Remove events that have excessive noise in their side-bands.
# 1: Combine overlapping events
CombineOverlappingEvents: true
# 2: Combine possible syllable sequences
SyllableSequence:
SyllableStartDifference: 0.6
SyllableHertzGap: 350
FilterSyllableSequence: true
SyllableMaxCount: 2
ExpectedPeriod: 0.4
# 3: Remove events whose duration lies outside 3 SDs of an expected value.
#Duration:
# ExpectedDuration: 0.14
# DurationStandardDeviation: 0.01
# 4: Remove events whose bandwidth lies outside 3 SDs of an expected value.
Bandwidth:
ExpectedBandwidth: 280
BandwidthStandardDeviation: 40
# 5: Filter the events for excess activity in their sidebands
SidebandAcousticActivity:
LowerSidebandWidth: 150
#UpperSidebandWidth: 200
MaxBackgroundDecibels: 12
#MaxActivityDecibels: 12
Combine events
The CombineOverlappingEvents
parameter is typically set to true
, but it depends on the target call. You may wish to
set this true for two reasons:
- the target call is composed of two or more overlapping syllables that you want to join as one event.
- whistle events often require this step to unite whistle fragments detections into one event.
Combine syllables
Add a EventPostProcessing.SyllableSequenceConfig object to combine syllables.
Filtering
Use the parameter Duration
to filter out events that are too long or short.
This filter removes events whose duration lies outside three standard deviations (SDs) of an expected value.
ExpectedDuration
defines the expected or average duration (in seconds) for the target eventsDurationStandardDeviation
defines one SD of the assumed distribution. Assuming the duration is normally distributed, three SDs sets hard upper and lower duration bounds that includes 99.7% of instances. The filtering algorithm calculates these hard bounds and removes acoustic events that fall outside the bounds.
Use the parameter Bandwidth
to filter out events whose bandwidth is too small or large.
This filter removes events whose bandwidth lies outside three standard deviations (SDs) of an expected value.
ExpectedBandwidth
defines the expected or average bandwidth (in Hertz) for the target eventsBandwidthStandardDeviation
defines one SD of the assumed distribution. Assuming the bandwidth is normally distributed, three SDs sets hard upper and lower bandwidth bounds that includes 99.7% of instances. The filtering algorithm calculates these hard bounds and removes acoustic events that fall outside the bounds.
Filtering on side band activity
The intuition of this filter is that an unambiguous event (representing a call or syllable) should have an "acoustic-free zone" above and below it. This filter removes an event that has "excessive" acoustic activity spilling into its sidebands. Such events are likely to be broadband events unrelated to the target event. Since this is a common occurrence, a sideband filter is useful.
Use the keyword SidebandAcousticActivity
to enable sideband filtering. There are four parameters, the first two set the width of the sidebands and the second two set decibel thresholds for the amount acoustic noise/activity in those sidebands.
LowerSidebandWidth
sets the width of the desired sideband "zone" below the target event.UpperSidebandWidth
sets the width of the desired sideband "zone" above the target event.
There are two tests for determining if the acoustic activity in a sideband is excessive, each having a single parameter:
MaxBackgroundDecibels
sets a threshold value for the maximum permitted background or average decibel value in each sideband. The average is taken over all spectrogram cells included in a sideband, excluding those adjacent to the event.MaxActivityDecibels
sets a threshold value for the maximum permitted average decibel value in any one frequency bin or timeframe of a sideband. The averages are over all relevant spectrogram cells in a frame or bin, excluding the cell adjacent to the event.
This test covers the possibility that there is an acoustic event concentrated in a few frequency bins or timeframes within a sideband. Only one sideband bin or frame is allowed to contain acoustic activity exceeding the threshold.
Tip
To exclude a sideband or not perform a test, comment out its parameter with a #
. In the above example config file for
Ninox boobook, two of the four parameters are commented out.
SidebandAcousticActivity:
LowerSidebandWidth: 150
#UpperSidebandWidth: 200
MaxBackgroundDecibels: 12
#MaxActivityDecibels: 12
In this example, only one test (for background noise) will be performed on only one sideband (the lower). If no sideband tests are performed, all events will be accepted regardless of the acoustic activity in their sidebands.
Inherited Members
Namespace: AudioAnalysisTools.Events.Types
Assembly: AudioAnalysisTools.dll
Syntax
public class PostProcessingConfig
Properties
| Improve this Doc View SourceBandwidth
Gets or sets the parameters required to filter events on their bandwidth.
Declaration
public EventPostProcessing.BandwidthConfig Bandwidth { get; set; }
Property Value
Type | Description |
---|---|
EventPostProcessing.BandwidthConfig |
CombineOverlappingEvents
Gets or sets a value indicating Whether or not to combine overlapping events.
Declaration
public bool CombineOverlappingEvents { get; set; }
Property Value
Type | Description |
---|---|
Boolean |
CombineVerticalSyllables
Gets or sets the parameters required to combine syllables vertically.
Declaration
public EventPostProcessing.SyllableStackConfig CombineVerticalSyllables { get; set; }
Property Value
Type | Description |
---|---|
EventPostProcessing.SyllableStackConfig |
Remarks
Useful for when you have two different profiles for detecting a lower and upper portion of an event.
Duration
Gets or sets the parameters required to filter events on their duration.
Declaration
public EventPostProcessing.DurationConfig Duration { get; set; }
Property Value
Type | Description |
---|---|
EventPostProcessing.DurationConfig |
PostProcessInDecibelGroups
If true (the default) post-processing of events will be done in groups based on their decibel threshold detection value. For example, all events at 3dB will be post-processed seperately from all events at 6dB. If false will process ebents as if they were all detected at the same decibel threshold.
Declaration
public bool? PostProcessInDecibelGroups { get; set; }
Property Value
Type | Description |
---|---|
Nullable<Boolean> |
|
RemoveEnclosedEvents
Gets or sets a value indicating Whether or not to remove temporally enclosed/nested events. Running profiles with multiple dB thresholds can produce sets of enclosed or temporally nested events. Russian doll events! Setting this boolean true removes all but the outermost of any set of encloseed events.
Declaration
public bool RemoveEnclosedEvents { get; set; }
Property Value
Type | Description |
---|---|
Boolean |
SidebandAcousticActivity
Gets or sets the parameters required to filter events on the acoustic activity in their sidebands.
Declaration
public EventPostProcessing.SidebandConfig SidebandAcousticActivity { get; set; }
Property Value
Type | Description |
---|---|
EventPostProcessing.SidebandConfig |
SyllableSequence
Gets or sets the parameters required to combine and filter syllable sequences.
Declaration
public EventPostProcessing.SyllableSequenceConfig SyllableSequence { get; set; }
Property Value
Type | Description |
---|---|
EventPostProcessing.SyllableSequenceConfig |