mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2024-12-25 07:01:04 +00:00
3853d83d73
Update Go version to ^1.23, the actions/setup-go to v5, actions/checkout to v4 and github.com/stretchr/testify to v1.9.0. Add test cases for the following model struct methods: - New - Close - NewContext - IsMultilingual - Languages Add test cases for the following context struct methods: - SetLanguage - IsMultilingual - Language - Process
94 lines
2.0 KiB
Go
94 lines
2.0 KiB
Go
package whisper_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/ggerganov/whisper.cpp/bindings/go/pkg/whisper"
|
|
"github.com/go-audio/wav"
|
|
assert "github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSetLanguage(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
model, err := whisper.New(ModelPath)
|
|
assert.NoError(err)
|
|
assert.NotNil(model)
|
|
defer model.Close()
|
|
|
|
context, err := model.NewContext()
|
|
assert.NoError(err)
|
|
|
|
// This returns an error since
|
|
// the model 'models/ggml-small.en.bin'
|
|
// that is loaded is not multilingual
|
|
err = context.SetLanguage("en")
|
|
assert.Error(err)
|
|
}
|
|
|
|
func TestContextModelIsMultilingual(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
model, err := whisper.New(ModelPath)
|
|
assert.NoError(err)
|
|
assert.NotNil(model)
|
|
defer model.Close()
|
|
|
|
context, err := model.NewContext()
|
|
assert.NoError(err)
|
|
|
|
isMultilingual := context.IsMultilingual()
|
|
|
|
// This returns false since
|
|
// the model 'models/ggml-small.en.bin'
|
|
// that is loaded is not multilingual
|
|
assert.False(isMultilingual)
|
|
}
|
|
|
|
func TestLanguage(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
model, err := whisper.New(ModelPath)
|
|
assert.NoError(err)
|
|
assert.NotNil(model)
|
|
defer model.Close()
|
|
|
|
context, err := model.NewContext()
|
|
assert.NoError(err)
|
|
|
|
// This always returns en since
|
|
// the model 'models/ggml-small.en.bin'
|
|
// that is loaded is not multilingual
|
|
expectedLanguage := "en"
|
|
actualLanguage := context.Language()
|
|
assert.Equal(expectedLanguage, actualLanguage)
|
|
}
|
|
|
|
func TestProcess(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
fh, err := os.Open(SamplePath)
|
|
assert.NoError(err)
|
|
defer fh.Close()
|
|
|
|
// Decode the WAV file - load the full buffer
|
|
dec := wav.NewDecoder(fh)
|
|
buf, err := dec.FullPCMBuffer()
|
|
assert.NoError(err)
|
|
assert.Equal(uint16(1), dec.NumChans)
|
|
|
|
data := buf.AsFloat32Buffer().Data
|
|
|
|
model, err := whisper.New(ModelPath)
|
|
assert.NoError(err)
|
|
assert.NotNil(model)
|
|
defer model.Close()
|
|
|
|
context, err := model.NewContext()
|
|
assert.NoError(err)
|
|
|
|
err = context.Process(data, nil, nil)
|
|
assert.NoError(err)
|
|
}
|