mirror of
https://github.com/ggerganov/whisper.cpp
synced 2026-03-07 07:29:21 +01:00
* Don't convert to temporary VALUE
* Define Whisper::Context::Params
* Add test for Whisper::Context::Params
* Implement Whisper::Context::Params
* Add tests for Context::Params
* Fix Whisper::Token memory management
* Add test for token_timestamps
* Make Context accept Context::Params
* Make Context::Params.new accept keyword args
* Add test for Context::Params.new with keyword args
* Add signature of Context::Params
* Add example for Whisper::Token
* Fix typos
* Revert "Don't convert to temporary VALUE"
This reverts commit dee66e7384.
* Hold Token#text as Ruby objectd
* Don't use pointer for ruby_whisper_context_params.params
* Use RUBY_DEFAULT_FREE instead of custom function
* Update bindings/ruby/README.md
Co-authored-by: Daniel Bevenius <daniel.bevenius@gmail.com>
* Add document for Whisper::Context::Params
---------
Co-authored-by: Daniel Bevenius <daniel.bevenius@gmail.com>
82 lines
2.3 KiB
Ruby
82 lines
2.3 KiB
Ruby
require_relative "helper"
|
|
|
|
class TestToken < TestBase
|
|
def setup
|
|
@segment = whisper.each_segment.first
|
|
@token = @segment.each_token.first
|
|
end
|
|
|
|
def test_n_tokens
|
|
assert_equal 27, @segment.n_tokens
|
|
end
|
|
|
|
def test_allocate
|
|
token = Whisper::Token.allocate
|
|
assert_raise do
|
|
token.id
|
|
end
|
|
end
|
|
|
|
def test_each_token
|
|
i = 0
|
|
@segment.each_token do |token|
|
|
i += 1
|
|
assert_instance_of Whisper::Token, token
|
|
end
|
|
assert_equal 27, i
|
|
end
|
|
|
|
def test_each_token_without_block
|
|
assert_instance_of Enumerator, @segment.each_token
|
|
end
|
|
|
|
def test_token
|
|
assert_instance_of Whisper::Token, @token
|
|
|
|
assert_instance_of Integer, @token.id
|
|
assert_instance_of Float, @token.probability
|
|
assert_instance_of Float, @token.log_probability
|
|
|
|
assert_instance_of Integer, @token.tid
|
|
assert_instance_of Float, @token.pt
|
|
assert_instance_of Float, @token.ptsum
|
|
|
|
assert_instance_of Integer, @token.start_time
|
|
assert_instance_of Integer, @token.end_time
|
|
|
|
assert_instance_of Integer, @token.t_dtw
|
|
|
|
assert_instance_of Float, @token.voice_length
|
|
|
|
assert_instance_of String, @token.text
|
|
end
|
|
|
|
def test_text
|
|
assert_equal ["[_BEG_]", " And", " so", " my", " fellow", " Americans", ",", " ask", " not", " what", " your", " country", " can", " do", " for", " you", ",", " ask", " what", " you", " can", " do", " for", " your", " country", ".", "[_TT_550]"],
|
|
@segment.each_token.collect(&:text)
|
|
end
|
|
|
|
def test_token_timestamps
|
|
params = Whisper::Params.new(token_timestamps: true)
|
|
whisper.transcribe(TestBase::AUDIO, params)
|
|
prev = -1
|
|
whisper.each_segment.first.each_token do |token|
|
|
assert token.start_time >= prev
|
|
assert token.end_time >= token.start_time
|
|
prev = token.end_time
|
|
end
|
|
end
|
|
|
|
def test_deconstruct_keys_with_nil
|
|
keys = %i[id tid probability log_probability pt ptsum t_dtw voice_length start_time end_time text]
|
|
expected = keys.collect {|key| [key, @token.send(key)] }.to_h
|
|
assert_equal(expected, @token.deconstruct_keys(nil))
|
|
end
|
|
|
|
def test_deconstruct_keys_with_keys
|
|
keys = %i[id tid probability log_probability pt ptsum t_dtw voice_length start_time end_time text]
|
|
expected = keys.collect {|key| [key, @token.send(key)] }.to_h
|
|
assert_equal expected, @token.deconstruct_keys(keys)
|
|
end
|
|
end
|