Class: ActiveIntelligence::ASR::AwsAdapter::Diarizer

Inherits:
Object
  • Object
show all
Defined in:
lib/active_intelligence/asr/aws_adapter.rb

Overview

Diarizer

Instance Method Summary collapse

Constructor Details

#initialize(json) ⇒ Diarizer

Returns a new instance of Diarizer.



113
114
115
116
117
118
119
120
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 113

def initialize(json)
  @json = json

  @line = nil
  @lines = nil
  @speaker = nil
  @starts = nil
end

Instance Method Details

#itemsObject

Accessors



166
167
168
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 166

def items
  @json[:results][:items]
end

#linesObject



122
123
124
125
126
127
128
129
130
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 122

def lines
  return @lines if @lines

  @lines = []
  items.each { |item| process(item) }
  @lines << @line.join(' ') if @line

  return @lines
end

#process(item) ⇒ Object



132
133
134
135
136
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 132

def process(item)
  content = item[:alternatives].first[:content]
  process_speaker(item) unless item[:type] == 'punctuation'
  @line << content
end

#process_speaker(item) ⇒ Object



138
139
140
141
142
143
144
145
146
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 138

def process_speaker(item)
  speaker = starts[item[:start_time]]
  return if speaker == @speaker

  @lines << @line.join(' ') if @line

  @speaker = speaker
  @line = ["#{@speaker}:"]
end

#segmentsObject



170
171
172
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 170

def segments
  @json[:results][:speaker_labels][:segments]
end

#startsObject



148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 148

def starts
  return @starts if @starts

  @starts = {}
  segments.each do |segment|
    speaker = segment[:speaker_label]

    segment[:items].each do |item|
      starts[item[:start_time]] = speaker
    end
  end

  return @starts
end