whispercpp 1.2.0.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (9) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -92
  3. data/ext/extconf.rb +9 -0
  4. data/ext/ggml.c +18380 -5241
  5. data/ext/ggml.h +2156 -502
  6. data/ext/ruby_whisper.cpp +13 -47
  7. data/ext/whisper.cpp +4182 -1787
  8. data/ext/whisper.h +334 -65
  9. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9de22be96d7d59590930b292b4cab94675502604f19051e4f61603896d81a887
4
- data.tar.gz: 6261d4023c4e71a29c5884e401bd3557794ed4ed3ae5ae855abc0fb1c4d54d30
3
+ metadata.gz: 3256e0c1878af91c88bf7ede04b6e422d877ea45ff84a2f6b9a253863f690b69
4
+ data.tar.gz: 662248bb96253e6baff760cc10842f9b31f7867f22ff2b584354aa321f9ffc36
5
5
  SHA512:
6
- metadata.gz: b36fed0dc2d51177bc7478562deba9f6e6b5c0328624e8670a8f23a358b1bffccbb55c5ffc68f456c79b53098534d090c7721249ecc1e975bccd2128b468e0a6
7
- data.tar.gz: '083105df0648a8c7de79554aa13c888a8cd8d325ac69ef78a52f382865e71ea82ef66b564b3022f89389902be1f5fcffa39fd2d4c6f5142f2ca6968446208bea'
6
+ metadata.gz: 45f6779035eaa2cdd58dd1c7800ec0643d577e2f16e1e2c0ab6714b7a9c30ff1acc686f13878044a9835945563d3b06d19059f3343f1359663b11075ec55b5a0
7
+ data.tar.gz: 89bfbf168334ec60357a37d53fbd887f39faa73e42c677734adfa8adca3a4f374b0de28ef9a63cec327474b78ad0bd321b1e6a5a6b21a6fbd9eb51d4a82b0270
data/Rakefile CHANGED
@@ -1,100 +1,11 @@
1
- require 'erb'
2
- require 'open3'
3
1
  require 'rake/clean'
4
- require 'rake/testtask'
5
2
  require 'rubygems/package'
6
3
 
7
- CLEAN.include '**/*.o'
8
- CLEAN.include "**/*.#{(defined?(RbConfig) ? RbConfig : Config)::MAKEFILE_CONFIG['DLEXT']}"
9
- CLOBBER.include 'doc'
10
- CLOBBER.include '**/*.log'
11
- CLOBBER.include '**/Makefile'
12
- CLOBBER.include '**/extconf.h'
13
- CLOBBER.include '**/extconf.h'
14
- CLOBBER.include '**/whisper.*'
15
- CLOBBER.include '**/ggml.*'
16
- CLOBBER.include '**/dr_wav.h'
17
-
18
- BUILD_VERSION=2
19
- # Determine the current version of the software
20
- if File.read('../../CMakeLists.txt') =~ /project.*\s*VERSION\s*(\d.+)\)/
21
- CURRENT_VERSION = "#{$1}.#{BUILD_VERSION}"
22
- else
23
- CURRENT_VERSION = "0.0.0.#{BUILD_VERSION}"
24
- end
25
-
26
- def shell(args, opts = {})
27
- puts "> #{args.join(' ')}"
28
- cmd, live_stream, cwd = args, opts[:live_stdout], opts[:cwd]
29
- Dir.chdir(cwd) {
30
- wait_thr = nil
31
-
32
- Open3.popen3(*cmd) do |stdin, stdout, stderr, thr|
33
- stdin.close
34
- wait_thr = thr # Ruby 1.8 will not yield thr, this will be nil
35
-
36
- while line = stdout.gets do
37
- live_stream.puts(line) if live_stream
38
- end
39
-
40
- while line = stderr.gets do
41
- puts line
42
- end
43
- end
44
-
45
- # prefer process handle directly from popen3, but if not available
46
- # fallback to global.
47
- p_status = wait_thr ? wait_thr.value : $?
48
- exit_code = p_status.exitstatus
49
- error = (exit_code != 0)
50
- }
51
- end
52
-
53
- make_program = (/mswin/ =~ RUBY_PLATFORM) ? 'nmake' : 'make'
54
- MAKECMD = ENV['MAKE_CMD'] || make_program
55
- MAKEOPTS = ENV['MAKE_OPTS'] || ''
56
- WHISPER_SO = "ext/whisper.#{(defined?(RbConfig) ? RbConfig : Config)::MAKEFILE_CONFIG['DLEXT']}"
57
-
58
- file 'ext/Makefile' => 'ext/extconf.rb' do
59
- shell(['ruby', 'extconf.rb', ENV['EXTCONF_OPTS'].to_s],
60
- { live_stdout: STDOUT, cwd: "#{Dir.pwd}/ext" }
61
- )
62
- end
63
-
64
- def make(target = '')
65
- shell(["#{MAKECMD}", "#{MAKEOPTS}", "#{target}"].reject(&:empty?),
66
- { live_stdout: STDOUT, cwd: "#{Dir.pwd}/ext" }
67
- )
68
- end
69
-
70
- # Let make handle dependencies between c/o/so - we'll just run it.
71
- file WHISPER_SO => (['ext/Makefile'] + Dir['ext/*.cpp'] + Dir['ext/*.c'] + Dir['ext/*.h']) do
72
- make
73
- end
74
-
75
- desc "Compile the shared object"
76
- task :compile => [WHISPER_SO]
77
-
78
- desc "Default Task (Test project)"
79
- task :default => :test
80
-
81
- Rake::TestTask.new(:test) do |t|
82
- t.test_files = FileList['tests/test_*.rb']
83
- t.verbose = false
84
- end
85
-
86
- desc 'Generate gem specification'
87
- task :gemspec do
88
- system("cp ../../LICENSE .")
89
- system("cp ../../README.md .")
90
- tspec = ERB.new(File.read(File.join(File.dirname(__FILE__),'lib','whispercpp.gemspec.erb')))
91
- File.open(File.join(File.dirname(__FILE__),'whispercpp.gemspec'),'wb') do|f|
92
- f << tspec.result
93
- end
94
- end
4
+ # default package task
5
+ task :default => [:package]
95
6
 
96
7
  desc 'Build gem'
97
- task :package => :gemspec do
8
+ task :package do
98
9
  spec_source = File.read File.join(File.dirname(__FILE__),'whispercpp.gemspec')
99
10
  spec = nil
100
11
  # see: http://gist.github.com/16215
data/ext/extconf.rb CHANGED
@@ -3,6 +3,15 @@ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','whisper.cpp')} .")
3
3
  system("cp #{File.join(File.dirname(__FILE__),'..','..','..','whisper.h')} .")
4
4
  system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml.h')} .")
5
5
  system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml.c')} .")
6
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-impl.h')} .")
7
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-alloc.h')} .")
8
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-alloc.c')} .")
9
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-backend-impl.h')} .")
10
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-backend.h')} .")
11
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-backend.c')} .")
12
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-common.h')} .")
13
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-quants.h')} .")
14
+ system("cp #{File.join(File.dirname(__FILE__),'..','..','..','ggml-quants.c')} .")
6
15
  system("cp #{File.join(File.dirname(__FILE__),'..','..','..','examples','dr_wav.h')} .")
7
16
 
8
17