forked from extern/whisper.cpp
86a277f78d
* run `go mod tidy` before building examples Running `make examples` after cloning the repository gives the following error: ``` ... [100%] Built target whisper gmake[3]: Leaving directory '/tmp/exp/whisper.cpp/bindings/go/build' gmake[2]: Leaving directory '/tmp/exp/whisper.cpp/bindings/go/build' gmake[1]: Leaving directory '/tmp/exp/whisper.cpp/bindings/go/build' Build example go-model-download Build example go-whisper examples/go-whisper/process.go:11:2: missing go.sum entry for module providing package github.com/go-audio/wav (imported by github.com/ggerganov/whisper.cpp/bindings/go/examples/go-whisper); to add: go get github.com/ggerganov/whisper.cpp/bindings/go/examples/go-whisper make: *** [Makefile:26: examples/go-whisper] Error 1 ``` * remove executable bit from various files |
||
---|---|---|
.. | ||
examples | ||
pkg/whisper | ||
samples | ||
.gitignore | ||
doc.go | ||
go.mod | ||
LICENSE | ||
Makefile | ||
params.go | ||
README.md | ||
whisper_test.go | ||
whisper.go |
Go bindings for Whisper
This package provides Go bindings for whisper.cpp. They have been tested on:
- Darwin (OS X) 12.6 on x64_64
- Debian Linux on arm64
- Fedora Linux on x86_64
The "low level" bindings are in the bindings/go
directory and there is a more
Go-style package in the bindings/go/pkg/whisper
directory. The most simple usage
is as follows:
import (
"github.com/ggerganov/whisper.cpp/bindings/go/pkg/whisper"
)
func main() {
var modelpath string // Path to the model
var samples []float32 // Samples to process
// Load the model
model, err := whisper.New(modelpath)
if err != nil {
panic(err)
}
defer model.Close()
// Process samples
context, err := model.NewContext()
if err != nil {
panic(err)
}
if err := context.Process(samples, nil); err != nil {
return err
}
// Print out the results
for {
segment, err := context.NextSegment()
if err != nil {
break
}
fmt.Printf("[%6s->%6s] %s\n", segment.Start, segment.End, segment.Text)
}
}
Building & Testing
In order to build, you need to have the Go compiler installed. You can get it from here. Run the tests with:
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp/bindings/go
make test
This will compile a static libwhisper.a
in a build
folder, download a model file, then run the tests. To build the examples:
make examples
The examples are placed in the build
directory. Once built, you can download all the models with the following command:
./build/go-model-download -out models
And you can then test a model against samples with the following command:
./build/go-whisper -model models/ggml-tiny.en.bin samples/jfk.wav