You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whisper.cpp/bindings/go
Mohit Agarwal 86a277f78d
go : run `go mod tidy` before building examples + fix permissions (#296)
2 years ago
..
examples go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
pkg/whisper go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
samples go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
.gitignore go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
LICENSE go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
Makefile go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
README.md go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
doc.go bindings : initial import of golang bindings (#287) 2 years ago
go.mod go : run `go mod tidy` before building examples + fix permissions (#296) 2 years ago
params.go bindings : initial import of golang bindings (#287) 2 years ago
whisper.go bindings : initial import of golang bindings (#287) 2 years ago
whisper_test.go bindings : initial import of golang bindings (#287) 2 years ago

README.md

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