Class: ActiveIntelligence::ASR::AwsAdapter::Diarizer
- Inherits:
-
Object
- Object
- ActiveIntelligence::ASR::AwsAdapter::Diarizer
- Defined in:
- lib/active_intelligence/asr/aws_adapter.rb
Overview
Diarizer
Instance Method Summary collapse
-
#initialize(json) ⇒ Diarizer
constructor
A new instance of Diarizer.
-
#items ⇒ Object
Accessors.
- #lines ⇒ Object
- #process(item) ⇒ Object
- #process_speaker(item) ⇒ Object
- #segments ⇒ Object
- #starts ⇒ Object
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
#items ⇒ Object
Accessors
166 167 168 |
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 166 def items @json[:results][:items] end |
#lines ⇒ Object
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 |
#segments ⇒ Object
170 171 172 |
# File 'lib/active_intelligence/asr/aws_adapter.rb', line 170 def segments @json[:results][:speaker_labels][:segments] end |
#starts ⇒ Object
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 |