| | |
| | | } |
| | | } |
| | | |
| | | func TestOfflineConfigForSenseVoiceYueSetsLanguageParam(t *testing.T) { |
| | | root := t.TempDir() |
| | | files := map[string]string{ |
| | | "model": filepath.Join(root, "model.int8.onnx"), |
| | | "tokens": filepath.Join(root, "tokens.txt"), |
| | | } |
| | | resolved := model.ResolvedModel{ |
| | | ModelID: model.SenseVoiceYueModelID, |
| | | BackendKind: model.BackendSenseVoice, |
| | | Profile: model.ModelProfile{ |
| | | DisplayName: "SenseVoice Yue", |
| | | BackendKind: model.BackendSenseVoice, |
| | | LanguageParam: "yue", |
| | | ProviderOrder: []string{"cpu"}, |
| | | NumThreads: 4, |
| | | }, |
| | | Files: files, |
| | | } |
| | | |
| | | config, err := offlineConfigForResolvedModel(resolved, "cpu") |
| | | if err != nil { |
| | | t.Fatal(err) |
| | | } |
| | | if config.ModelConfig.SenseVoice.Model != files["model"] { |
| | | t.Fatalf("model = %q, want %q", config.ModelConfig.SenseVoice.Model, files["model"]) |
| | | } |
| | | if config.ModelConfig.SenseVoice.Language != "yue" { |
| | | t.Fatalf("language = %q, want yue", config.ModelConfig.SenseVoice.Language) |
| | | } |
| | | if config.ModelConfig.Tokens != files["tokens"] { |
| | | t.Fatalf("tokens = %q, want %q", config.ModelConfig.Tokens, files["tokens"]) |
| | | } |
| | | } |
| | | |
| | | func TestOnlineConfigForXASRUsesStreamingTransducer(t *testing.T) { |
| | | root := t.TempDir() |
| | | files := map[string]string{ |
| | |
| | | } |
| | | } |
| | | |
| | | func TestXASREnablesHoldPreCapture(t *testing.T) { |
| | | if !(&xasrStreamingEngine{}).HoldPreCaptureEnabled() { |
| | | t.Fatal("X-ASR should enable hold pre-capture") |
| | | func TestSenseVoiceRequestsReleaseTailCaptureDelay(t *testing.T) { |
| | | got := (&sherpaEngine{backendKind: model.BackendSenseVoice}).ReleaseTailCaptureDelay() |
| | | if got != 100*time.Millisecond { |
| | | t.Fatalf("ReleaseTailCaptureDelay() = %v, want 100ms", got) |
| | | } |
| | | } |
| | | |
| | | func TestOfflineSherpaDoesNotRequestReleaseTailCapture(t *testing.T) { |
| | | if _, ok := any(&sherpaEngine{}).(ReleaseTailCaptureEngine); ok { |
| | | t.Fatal("offline sherpa engine should not request release tail capture") |
| | | func TestOtherSherpaModelsDoNotRequestReleaseTailCaptureDelay(t *testing.T) { |
| | | for _, backendKind := range []string{ |
| | | model.BackendMoonshine, |
| | | model.BackendTransducer, |
| | | model.BackendNemoTransducer, |
| | | model.BackendQwen3ASR, |
| | | } { |
| | | t.Run(backendKind, func(t *testing.T) { |
| | | got := (&sherpaEngine{backendKind: backendKind}).ReleaseTailCaptureDelay() |
| | | if got != 0 { |
| | | t.Fatalf("ReleaseTailCaptureDelay() = %v, want 0", got) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | func TestXASREnablesHoldPreCapture(t *testing.T) { |
| | | if !(&xasrStreamingEngine{}).HoldPreCaptureEnabled() { |
| | | t.Fatal("X-ASR should enable hold pre-capture") |
| | | } |
| | | } |
| | | |