mirror of
https://github.com/ggml-org/whisper.cpp.git
synced 2026-07-23 11:10:57 -05:00
* Add Whisper::Parakeet::Params * Add tests for Parakeet::Params * Remove unused variabel * Add callbacks to Parakeet::Params * Group callback and user_data params * Undefine local macros * Define GetParakeetParams * Remove unused variable * Use ITERATE_CALLBACK_PARAMS * Use ITERATE_CALLBACK_PARAMS instead of ITERATE_USER_DATA_PARAMS * Fix memsize * Remove unnecessary macros * Simplify params registration * Define Parakeet * Add hook methods to Parakeet::Params * Fix typo * Check callback container in GetParakeetParams * Reduce if * Free parakeet_full_params * Implement Parakeet::Context#initialize * Add TestParakeetContext * Add Parakeet::Segment * Prevent double-free * Add Parakeet::Context#transcribe * Add Parakeet::Context#each_segment * Define Parakeet::Segment attributes * Define Parakeet::Segment#deconstruct_keys * Add tests for Parakeet::Segment#deconstruct_keys * Run Parakeet::Context#transcribe without GVL * Make it to abort for Parakeet * Add Parakeet.log_set * Define Parakeet::Token * Define Parakeet::Segment#each_token * Implement some hooks of Parakeet::Params * Convert int to VALUE * Implement hooks for Parakeet * Implement Parakeet::Context#full * Add tests for Parakeet::Context#full * Add Parakeet to RBS * Fix ruby_whisper_parakeet_params_free * Free ruby_whisper_parakeet_context * Add tests for hooks * Add Parakeet section to README * Add more attributes of Parakeet::Context * Add tests for Parakeet::Context's attributes * Update RBS * Register parakeet-tdt-0.6b-v3 * Narrow scope of log constants * Extract activate and deactivate of log_queue * Make start_log_callback_thread private * Don't call start_log_callback_thread unncecessarilly * Early return from log_queue_enqueue when not active * Gropu log_queue members * is_active -> is_open * Fix English * Share parakeet full body function * ruby_whisper_parakeet_abort_callback_user_data -> ruby_whisper_abort_callback_user_data * NULL check for callback containers * Fix Parakeet.log_set * Omit Parakeet tests on CI * Extract Whisper::LogSettable * Join log callback thread in a log queue function * Revert Join log callback thread in a log queue function * Extract output methods to modules * Move Parakeet init functions into init_parakeet() * Add output methods to Parakeet classes * Add Parakeet's output methods to RBS * Use Whisper::Output in RBS * Add LogSettable to RBS * Fix module Token -> class Token * Add Parakeet::Model * Add test for Parakeet::Model * Add Parakeet::Model to RBS * Move position of Parakeet::Model in RBS * Parakeet -> TestBase::Parakeet * Add Parakeet::Context#model in RBS * Add Whisper::Output * Fix nil check * Define ruby_whisper_parakeet_model_memsize * Fix order of declaration in ruby_whisper_parakeet_model_get_xxx * Define Parakeet.system_info_str * Add test for Parakeet.system_info_str * Add signature of Parakeet.system_info_str * Define Parakeet::VERSION * Add test for Parakeet::VERSION * Add signature of Parakeet::VERSION * Add Parakeet::Context::Params * Make Parakeet::Context.new accept Context::Params * Add test for Parakeet::Context.new with Context::Params * Update RBS * Remove params from Parakeet::Params which are moved from whisper_parakeet_full_params * Remove tests for removed params * Make Parakeet tests follow original behavior changes * Add Parakeet model shortcuts * Alloc token data in factory instead of alloc func * Fix variable name * Update RBS * Refactor log settable module * Use log settable for Whisper * Address deadlock * Make test follow change of log queue implementation * Refactor to make abort callback use the same way to parakeet's way * Remove redundant structs * Fix test name * Fix README * Add missing parallel transcription * Fix test for parakeet info * Remove removed params * Wait for logs dequeued * Fix instance variable name * Load etc feature * Remove unnecessary comment * Remove unnecessary thread safety check * Remove outdated comment * Skip downloading model if cache exists * Change Hugging Face URI for Parakeet models * Bump required Ruby version to 3.3 * Fix English
112 lines
3.0 KiB
Ruby
112 lines
3.0 KiB
Ruby
require 'rake/clean'
|
|
require "bundler/gem_tasks"
|
|
require "rake/testtask"
|
|
require_relative "extsources"
|
|
|
|
SOURCES_DIR = "ext/sources"
|
|
|
|
SOURCES = FileList[]
|
|
|
|
EXTSOURCES.each do |src|
|
|
basename = src.pathmap("%f")
|
|
dest = basename == "LICENSE" ? basename
|
|
: src.pathmap("%{\\.\\./\\.\\.,#{SOURCES_DIR}}p")
|
|
.pathmap("%{\\.\\./javascript,#{SOURCES_DIR}/bindings/javascript}p")
|
|
dir = dest.pathmap("%d")
|
|
file src
|
|
directory dir
|
|
file dest => [src, dir] do |t|
|
|
copy t.source, t.name
|
|
end
|
|
SOURCES.include dest
|
|
end
|
|
|
|
CLEAN.include SOURCES
|
|
|
|
SRC = FileList["ext/*.{c,cpp,h}"]
|
|
|
|
task build: SOURCES
|
|
|
|
directory "pkg"
|
|
CLOBBER.include "pkg"
|
|
|
|
LIB_NAME = "whisper".ext(RbConfig::CONFIG["DLEXT"])
|
|
SO_FILE = File.join("ext", LIB_NAME)
|
|
LIB_FILE = File.join("lib", LIB_NAME)
|
|
|
|
file "ext/Makefile" => SRC + SOURCES + FileList["ext/*.rb"] do |t|
|
|
chdir "ext" do
|
|
ruby "extconf.rb"
|
|
end
|
|
end
|
|
if File.exist? "ext/Makefile"
|
|
task :make_clean do
|
|
cd "ext" do
|
|
sh "make", "clean"
|
|
end
|
|
end
|
|
task clean: :make_clean
|
|
task :make_distclean do
|
|
cd "ext" do
|
|
sh "make", "distclean"
|
|
end
|
|
end
|
|
task clobber: :make_distclean
|
|
end
|
|
|
|
file SO_FILE => "ext/Makefile" do |t|
|
|
chdir "ext" do
|
|
sh "make"
|
|
end
|
|
end
|
|
CLEAN.include SO_FILE
|
|
|
|
directory "lib"
|
|
file LIB_FILE => [SO_FILE, "lib"] do |t|
|
|
copy t.source, t.name
|
|
end
|
|
CLEAN.include LIB_FILE
|
|
|
|
Rake::TestTask.new
|
|
|
|
TEST_FIXTURE_AUDIO = "test/fixtures/jfk.wav"
|
|
TEST_FIXTURE_AUDIO_SRC = File.expand_path(File.join(__dir__, "..", "..", "samples", "jfk.wav"))
|
|
TEST_FIXTURE_AUDIO_DIR = TEST_FIXTURE_AUDIO.pathmap("%d")
|
|
directory TEST_FIXTURE_AUDIO_DIR
|
|
if File.exist? TEST_FIXTURE_AUDIO_SRC
|
|
file TEST_FIXTURE_AUDIO => [TEST_FIXTURE_AUDIO_SRC, TEST_FIXTURE_AUDIO_DIR] do |t|
|
|
symlink t.source, t.name
|
|
end
|
|
else
|
|
require "open-uri"
|
|
file TEST_FIXTURE_AUDIO => TEST_FIXTURE_AUDIO_DIR do |t|
|
|
File.write t.name, URI("https://github.com/ggml-org/whisper.cpp/raw/refs/heads/master/samples/jfk.wav").read
|
|
end
|
|
end
|
|
|
|
TEST_PARAKEET_MODEL = "test/fixtures/for-tests-ggml-parakeet-tdt.bin"
|
|
TEST_PARAKEET_MODEL_SRC = File.expand_path(File.join(__dir__, "..", "..", "models", "for-tests-ggml-parakeet-tdt.bin"))
|
|
TEST_PARAKEET_MODEL_DIR = TEST_PARAKEET_MODEL.pathmap("%d")
|
|
directory TEST_PARAKEET_MODEL_DIR
|
|
if File.exist? TEST_PARAKEET_MODEL_SRC
|
|
file TEST_PARAKEET_MODEL => [TEST_PARAKEET_MODEL_SRC, TEST_PARAKEET_MODEL_DIR] do |t|
|
|
symlink t.source, t.name
|
|
end
|
|
else
|
|
require "open-uri"
|
|
file TEST_PARAKEET_MODEL => TEST_PARAKEET_MODEL_DIR do |t|
|
|
File.write t.name, URI("https://github.com/ggml-org/whisper.cpp/raw/refs/heads/master/models/for-tests-ggml-parakeet-tdt.bin").read
|
|
end
|
|
end
|
|
|
|
TEST_MEMORY_VIEW = "test/jfk_reader/jfk_reader.#{RbConfig::CONFIG['DLEXT']}"
|
|
file TEST_MEMORY_VIEW => "test/jfk_reader/jfk_reader.c" do |t|
|
|
chdir "test/jfk_reader" do
|
|
ruby "extconf.rb"
|
|
sh "make"
|
|
end
|
|
end
|
|
CLEAN.include TEST_MEMORY_VIEW
|
|
|
|
task test: [LIB_FILE, TEST_MEMORY_VIEW, TEST_FIXTURE_AUDIO, TEST_PARAKEET_MODEL]
|