Class: Informers::AudioClassificationPipeline

Inherits:
Pipeline
  • Object
show all
Defined in:
lib/informers/pipelines.rb

Instance Method Summary collapse

Methods inherited from Pipeline

#initialize

Constructor Details

This class inherits a constructor from Informers::Pipeline

Instance Method Details

#call(audio, top_k: nil) ⇒ Object



896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
# File 'lib/informers/pipelines.rb', line 896

def call(audio, top_k: nil)
  single = !audio.is_a?(Array)

  sampling_rate = @processor.feature_extractor.config["sampling_rate"]
  prepared_audios = prepare_audios(audio, sampling_rate)

  id2label = @model.config[:id2label]

  to_return = []
  prepared_audios.each do |aud|
    inputs = @processor.(aud)
    output = @model.(inputs)
    logits = output.logits[0]

    scores = Utils.get_top_items(Utils.softmax(logits), top_k)

    vals =
      scores.map do |x|
        {
          label: id2label[x[0].to_s],
          score: x[1]
        }
      end

    if top_k == 1
      to_return.concat(vals)
    else
      to_return << vals
    end
  end
  !single || top_k == 1 ? to_return : to_return[0]
end