diff --git a/Makefile b/Makefile index d8ef07c8..3e359f2f 100644 --- a/Makefile +++ b/Makefile @@ -971,7 +971,8 @@ $(LIB_WHISPER): \ $(CXX) $(CXXFLAGS) -shared -fPIC -o $@ $^ $(LDFLAGS) $(LIB_WHISPER_S): \ - $(OBJ_WHISPER) + $(OBJ_WHISPER) \ + $(OBJ_GGML) ar rcs $(LIB_WHISPER_S) $^ # common diff --git a/bindings/go/Makefile b/bindings/go/Makefile index 4f3a416a..20a054c1 100644 --- a/bindings/go/Makefile +++ b/bindings/go/Makefile @@ -14,7 +14,7 @@ GGML_METAL_PATH_RESOURCES := $(abspath ../..) BUILD_DIR := build MODELS_DIR := models EXAMPLES_DIR := $(wildcard examples/*) -INCLUDE_PATH := $(abspath ../..) +INCLUDE_PATH := $(abspath ../../include):$(abspath ../../ggml/include) LIBRARY_PATH := $(abspath ../..) ifeq ($(UNAME_S),Darwin) diff --git a/bindings/go/params.go b/bindings/go/params.go index 4b4da032..9c075b6a 100644 --- a/bindings/go/params.go +++ b/bindings/go/params.go @@ -119,6 +119,18 @@ func (p *Params) SetAudioCtx(n int) { p.audio_ctx = C.int(n) } +func (p *Params) SetMaxContext(n int) { + p.n_max_text_ctx = C.int(n) +} + +func (p *Params) SetBeamSize(n int) { + p.beam_search.beam_size = C.int(n) +} + +func (p *Params) SetEntropyThold(t float32) { + p.entropy_thold = C.float(t) +} + // Set initial prompt func (p *Params) SetInitialPrompt(prompt string) { p.initial_prompt = C.CString(prompt) @@ -149,6 +161,8 @@ func (p *Params) String() string { str += fmt.Sprintf(" duration_ms=%d", p.duration_ms) str += fmt.Sprintf(" audio_ctx=%d", p.audio_ctx) str += fmt.Sprintf(" initial_prompt=%s", C.GoString(p.initial_prompt)) + str += fmt.Sprintf(" entropy_thold=%f", p.entropy_thold) + str += fmt.Sprintf(" beam_size=%d", p.beam_search.beam_size) if p.translate { str += " translate" } diff --git a/bindings/go/pkg/whisper/context.go b/bindings/go/pkg/whisper/context.go index ead92648..dc34aa18 100644 --- a/bindings/go/pkg/whisper/context.go +++ b/bindings/go/pkg/whisper/context.go @@ -125,6 +125,21 @@ func (context *context) SetAudioCtx(n uint) { context.params.SetAudioCtx(int(n)) } +// Set maximum number of text context tokens to store +func (context *context) SetMaxContext(n int) { + context.params.SetMaxContext(n) +} + +// Set Beam Size +func (context *context) SetBeamSize(n int) { + context.params.SetBeamSize(n) +} + +// Set Entropy threshold +func (context *context) SetEntropyThold(t float32) { + context.params.SetEntropyThold(t) +} + // Set initial prompt func (context *context) SetInitialPrompt(prompt string) { context.params.SetInitialPrompt(prompt) diff --git a/bindings/go/pkg/whisper/interface.go b/bindings/go/pkg/whisper/interface.go index b430e7ce..6eb692ef 100644 --- a/bindings/go/pkg/whisper/interface.go +++ b/bindings/go/pkg/whisper/interface.go @@ -48,6 +48,9 @@ type Context interface { SetTokenTimestamps(bool) // Set token timestamps flag SetMaxTokensPerSegment(uint) // Set max tokens per segment (0 = no limit) SetAudioCtx(uint) // Set audio encoder context + SetMaxContext(n int) // Set maximum number of text context tokens to store + SetBeamSize(n int) // Set Beam Size + SetEntropyThold(t float32) // Set Entropy threshold SetInitialPrompt(prompt string) // Set initial prompt // Process mono audio data and return any errors. diff --git a/bindings/go/whisper.go b/bindings/go/whisper.go index 87da83f0..39ec43b4 100644 --- a/bindings/go/whisper.go +++ b/bindings/go/whisper.go @@ -9,7 +9,7 @@ import ( // CGO /* -#cgo LDFLAGS: -lwhisper -lm -lstdc++ +#cgo LDFLAGS: -lwhisper -lm -lstdc++ -fopenmp #cgo darwin LDFLAGS: -framework Accelerate -framework Metal -framework Foundation -framework CoreGraphics #include #include