Class: MeetingBuddy::SystemDependency
- Inherits:
-
Struct
- Object
- Struct
- MeetingBuddy::SystemDependency
- Defined in:
- lib/meeting_buddy/system_dependency.rb
Constant Summary collapse
- WHISPER_CPP_VERSION =
"v1.7.3"
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
- .auto_install!(name) ⇒ Object
- .download_model(model) ⇒ Object
- .model_downloaded?(model) ⇒ Boolean
- .resolve_whisper_model(model) ⇒ Object
Instance Method Summary collapse
-
#initialize(name:) ⇒ SystemDependency
constructor
A new instance of SystemDependency.
- #install ⇒ Object
- #install_whisper ⇒ Object
- #installed? ⇒ Boolean
Constructor Details
#initialize(name:) ⇒ SystemDependency
Returns a new instance of SystemDependency.
32 33 34 |
# File 'lib/meeting_buddy/system_dependency.rb', line 32 def initialize(name:) @name = name end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name
4 5 6 |
# File 'lib/meeting_buddy/system_dependency.rb', line 4 def name @name end |
Class Method Details
.auto_install!(name) ⇒ Object
10 11 12 13 |
# File 'lib/meeting_buddy/system_dependency.rb', line 10 def auto_install!(name) system_dependency = new(name: name) system_dependency.install unless system_dependency.installed? end |
.download_model(model) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/meeting_buddy/system_dependency.rb', line 24 def download_model(model) Dir.chdir("#{MeetingBuddy.cache_dir}/whisper.cpp") do MeetingBuddy.logger.info "Downloading GGML model: #{MeetingBuddy.whisper_model}" MeetingBuddy.logger.info `bash ./models/download-ggml-model.sh #{MeetingBuddy.whisper_model}` end end |
.model_downloaded?(model) ⇒ Boolean
20 21 22 |
# File 'lib/meeting_buddy/system_dependency.rb', line 20 def model_downloaded?(model) File.exist?(File.join(MeetingBuddy.cache_dir, "whisper.cpp", "models", "ggml-#{model}.bin")) end |
.resolve_whisper_model(model) ⇒ Object
15 16 17 18 |
# File 'lib/meeting_buddy/system_dependency.rb', line 15 def resolve_whisper_model(model) return if model_downloaded?(model) download_model(model) end |
Instance Method Details
#install ⇒ Object
45 46 47 48 49 50 |
# File 'lib/meeting_buddy/system_dependency.rb', line 45 def install return install_whisper if name.to_s == "whisper" MeetingBuddy.logger.info "Installing #{name}..." `brew list #{name} || brew install #{name}` end |
#install_whisper ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/meeting_buddy/system_dependency.rb', line 52 def install_whisper MeetingBuddy.logger.info "Installing whisper.cpp..." Dir.chdir(MeetingBuddy.cache_dir) do MeetingBuddy.logger.info "Setting up whipser.cpp in #{MeetingBuddy.cache_dir}/whipser.cpp" MeetingBuddy.logger.info `git clone https://github.com/ggerganov/whisper.cpp` Dir.chdir("whisper.cpp") do MeetingBuddy.logger.info `git checkout #{WHISPER_CPP_VERSION}` MeetingBuddy.logger.info "Downloading GGML model: #{MeetingBuddy.whisper_model}" MeetingBuddy.logger.info `bash #{MeetingBuddy.cache_dir}/whisper.cpp/models/download-ggml-model.sh #{MeetingBuddy.whisper_model}` MeetingBuddy.logger.info "Building whipser.cpp with streaming support..." MeetingBuddy.logger.info `cmake -B build -DWHISPER_SDL2=ON && cmake --build build --config Release` end end end |
#installed? ⇒ Boolean
36 37 38 39 40 41 42 43 |
# File 'lib/meeting_buddy/system_dependency.rb', line 36 def installed? MeetingBuddy.logger.info "Checking for system dependency: #{name}..." if name.to_s == "whisper" Dir.exist?("#{MeetingBuddy.cache_dir}/whisper.cpp") else system("brew list -1 #{name} > /dev/null") || system("type -a #{name}") end end |