File size: 3,670 Bytes
82ceab0
1647500
82ceab0
 
 
91607b6
82ceab0
 
 
 
91607b6
82ceab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91607b6
82ceab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1647500
 
91607b6
1647500
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91607b6
 
 
 
 
 
 
65069eb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72cecc9
 
 
 
 
 
 
 
 
82ceab0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
require_relative "helper"
require "pathname"

class TestModel < TestBase
  def test_model
    whisper = Whisper::Context.new("base.en")
    assert_instance_of Whisper::Model, whisper.model
  end

  def test_attributes
    whisper = Whisper::Context.new("base.en")
    model = whisper.model

    assert_equal 51864, model.n_vocab
    assert_equal 1500, model.n_audio_ctx
    assert_equal 512, model.n_audio_state
    assert_equal 8, model.n_audio_head
    assert_equal 6, model.n_audio_layer
    assert_equal 448, model.n_text_ctx
    assert_equal 512, model.n_text_state
    assert_equal 8, model.n_text_head
    assert_equal 6, model.n_text_layer
    assert_equal 80, model.n_mels
    assert_equal 1, model.ftype
    assert_equal "base", model.type
  end

  def test_gc
    model = Whisper::Context.new("base.en").model
    GC.start

    assert_equal 51864, model.n_vocab
    assert_equal 1500, model.n_audio_ctx
    assert_equal 512, model.n_audio_state
    assert_equal 8, model.n_audio_head
    assert_equal 6, model.n_audio_layer
    assert_equal 448, model.n_text_ctx
    assert_equal 512, model.n_text_state
    assert_equal 8, model.n_text_head
    assert_equal 6, model.n_text_layer
    assert_equal 80, model.n_mels
    assert_equal 1, model.ftype
    assert_equal "base", model.type
  end

  def test_pathname
    path = Pathname(Whisper::Model.pre_converted_models["base.en"].to_path)
    whisper = Whisper::Context.new(path)
    model = whisper.model

    assert_equal 51864, model.n_vocab
    assert_equal 1500, model.n_audio_ctx
    assert_equal 512, model.n_audio_state
    assert_equal 8, model.n_audio_head
    assert_equal 6, model.n_audio_layer
    assert_equal 448, model.n_text_ctx
    assert_equal 512, model.n_text_state
    assert_equal 8, model.n_text_head
    assert_equal 6, model.n_text_layer
    assert_equal 80, model.n_mels
    assert_equal 1, model.ftype
    assert_equal "base", model.type
  end

  def test_auto_download
    path = Whisper::Model.pre_converted_models["base.en"].to_path

    assert_path_exist path
    assert_equal 147964211, File.size(path)
  end

  def test_uri_string
    path = "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin"
    whisper = Whisper::Context.new(path)
    model = whisper.model

    assert_equal 51864, model.n_vocab
    assert_equal 1500, model.n_audio_ctx
    assert_equal 512, model.n_audio_state
    assert_equal 8, model.n_audio_head
    assert_equal 6, model.n_audio_layer
    assert_equal 448, model.n_text_ctx
    assert_equal 512, model.n_text_state
    assert_equal 8, model.n_text_head
    assert_equal 6, model.n_text_layer
    assert_equal 80, model.n_mels
    assert_equal 1, model.ftype
    assert_equal "base", model.type
  end

  def test_uri
    path = URI("https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin")
    whisper = Whisper::Context.new(path)
    model = whisper.model

    assert_equal 51864, model.n_vocab
    assert_equal 1500, model.n_audio_ctx
    assert_equal 512, model.n_audio_state
    assert_equal 8, model.n_audio_head
    assert_equal 6, model.n_audio_layer
    assert_equal 448, model.n_text_ctx
    assert_equal 512, model.n_text_state
    assert_equal 8, model.n_text_head
    assert_equal 6, model.n_text_layer
    assert_equal 80, model.n_mels
    assert_equal 1, model.ftype
    assert_equal "base", model.type
  end

  def test_coreml_model_auto_download
    uri = Whisper::Model.coreml_compiled_models[Whisper::Model.pre_converted_models["tiny"]]
    model_path = Pathname(uri.to_path).sub_ext("")
    model_path.rmtree if model_path.exist?

    uri.cache
    assert_path_exist model_path
  end
end