2024-11-14 04:52:56 +09:00
|
|
|
require_relative "helper"
|
2024-10-28 22:43:27 +09:00
|
|
|
|
2024-11-14 04:52:56 +09:00
|
|
|
class TestSegment < TestBase
|
2024-10-28 22:43:27 +09:00
|
|
|
class << self
|
|
|
|
attr_reader :whisper
|
|
|
|
|
|
|
|
def startup
|
2024-12-18 18:00:50 +09:00
|
|
|
@whisper = Whisper::Context.new("base.en")
|
2024-10-28 22:43:27 +09:00
|
|
|
params = Whisper::Params.new
|
|
|
|
params.print_timestamps = false
|
2024-11-14 04:52:56 +09:00
|
|
|
@whisper.transcribe(TestBase::AUDIO, params)
|
2024-10-28 22:43:27 +09:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_iteration
|
|
|
|
whisper.each_segment do |segment|
|
|
|
|
assert_instance_of Whisper::Segment, segment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_enumerator
|
|
|
|
enum = whisper.each_segment
|
|
|
|
assert_instance_of Enumerator, enum
|
|
|
|
enum.to_a.each_with_index do |segment, index|
|
|
|
|
assert_instance_of Whisper::Segment, segment
|
|
|
|
assert_kind_of Integer, index
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_start_time
|
|
|
|
i = 0
|
|
|
|
whisper.each_segment do |segment|
|
|
|
|
assert_equal 0, segment.start_time if i == 0
|
|
|
|
i += 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_end_time
|
|
|
|
i = 0
|
|
|
|
whisper.each_segment do |segment|
|
|
|
|
assert_equal whisper.full_get_segment_t1(i) * 10, segment.end_time
|
|
|
|
i += 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_on_new_segment
|
|
|
|
params = Whisper::Params.new
|
|
|
|
seg = nil
|
|
|
|
index = 0
|
|
|
|
params.on_new_segment do |segment|
|
|
|
|
assert_instance_of Whisper::Segment, segment
|
|
|
|
if index == 0
|
|
|
|
seg = segment
|
|
|
|
assert_equal 0, segment.start_time
|
|
|
|
assert_match /ask not what your country can do for you, ask what you can do for your country/, segment.text
|
|
|
|
end
|
|
|
|
index += 1
|
|
|
|
end
|
2024-11-14 04:52:56 +09:00
|
|
|
whisper.transcribe(AUDIO, params)
|
2024-10-28 22:43:27 +09:00
|
|
|
assert_equal 0, seg.start_time
|
|
|
|
assert_match /ask not what your country can do for you, ask what you can do for your country/, seg.text
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_on_new_segment_twice
|
|
|
|
params = Whisper::Params.new
|
|
|
|
seg = nil
|
|
|
|
params.on_new_segment do |segment|
|
|
|
|
seg = segment
|
|
|
|
return
|
|
|
|
end
|
|
|
|
params.on_new_segment do |segment|
|
|
|
|
assert_same seg, segment
|
|
|
|
return
|
|
|
|
end
|
2024-11-14 04:52:56 +09:00
|
|
|
whisper.transcribe(AUDIO, params)
|
2024-10-28 22:43:27 +09:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def whisper
|
|
|
|
self.class.whisper
|
|
|
|
end
|
|
|
|
end
|