Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Composable post-processing steps #468

Open
atruskie opened this issue Apr 1, 2021 · 0 comments
Open

Composable post-processing steps #468

atruskie opened this issue Apr 1, 2021 · 0 comments
Assignees

Comments

@atruskie
Copy link
Member

atruskie commented Apr 1, 2021

Is your feature request related to a problem? Please describe.

When creating a generic recogniser, the post processing steps are limiting and difficult to work with because:

  • they are applied in a fix order
  • new filter steps can break existing recognisers
  • they apply to all events produced by all profiles

Describe the solution you'd like

A post-processing process that is composable, orderable, opt-in, and can operate on sub-sets of events.

Features:

  • The PostPrcocessing entry in the config file should be turned into an map of string-keyed objects
  • Each single post processing object should
    • allow for the selection of events from profiles or previous post-processing steps
    • include an array of operations to apply to the selected events
  • The current post-processing filters will be turned into individual objects/classes which are deserialized by using a type tag (similar to algorithm selection for profiles)

Describe alternatives you've considered

All these "advanced" cases could be catered for in code in dedicated recognisers - but that means none of this work would benefit any of our users, and would end up being repeated for each recogniser that needed custom code.

Example

PostProcessing:
    default:
      from: "*"
      steps:
        - PostProcessInDecibelGroups
        - CombineVerticalSyllables
    call_one:
      from: [ SyllableUpwardLow, SyllableTailLow, SyllableUpwardHigh, SyllableTailHigh]
      steps:
        - combine_horizontal_events:
        - combine_vertical_events:
            parameters: ...
        - filter_bandwidth:
            bandwidth: "500" #, "500sd100", "500+-100", "[490, 600]"
    harmonic:
      from: "HarmonicParameters"
      steps:
        - remove_enclosed_events: true
        - filter_bandwidth:

        - duration_filter:
    combine:
      from: ["call_one", "harmonic"]
      steps:
        - combine_overlapping_events

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant