Ariver
2026-07-11 015f1089ea875a153dd2a18ef42c25145d4868f5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//go:build darwin && !monterey_compat
 
package engine
 
import (
    "path/filepath"
    "testing"
 
    "voicesnap/internal/model"
)
 
func TestOfflineConfigForQwen3ASRUsesQwen3Config(t *testing.T) {
    root := t.TempDir()
    files := map[string]string{
        "conv_frontend": filepath.Join(root, "conv_frontend.onnx"),
        "encoder":       filepath.Join(root, "encoder.int8.onnx"),
        "decoder":       filepath.Join(root, "decoder.int8.onnx"),
        "tokenizer":     filepath.Join(root, "tokenizer"),
    }
    resolved := model.ResolvedModel{
        ModelID:     model.Qwen3ASRModelID,
        BackendKind: model.BackendQwen3ASR,
        Profile: model.ModelProfile{
            DisplayName:   "Qwen3-ASR",
            BackendKind:   model.BackendQwen3ASR,
            ProviderOrder: []string{"cpu"},
            NumThreads:    4,
        },
        Files: files,
    }
 
    config, err := offlineConfigForResolvedModel(resolved, "cpu")
    if err != nil {
        t.Fatal(err)
    }
    if config.ModelConfig.Qwen3ASR.ConvFrontend != files["conv_frontend"] {
        t.Fatalf("conv frontend = %q, want %q", config.ModelConfig.Qwen3ASR.ConvFrontend, files["conv_frontend"])
    }
    if config.ModelConfig.Qwen3ASR.Encoder != files["encoder"] {
        t.Fatalf("encoder = %q, want %q", config.ModelConfig.Qwen3ASR.Encoder, files["encoder"])
    }
    if config.ModelConfig.Qwen3ASR.Decoder != files["decoder"] {
        t.Fatalf("decoder = %q, want %q", config.ModelConfig.Qwen3ASR.Decoder, files["decoder"])
    }
    if config.ModelConfig.Qwen3ASR.Tokenizer != files["tokenizer"] {
        t.Fatalf("tokenizer = %q, want %q", config.ModelConfig.Qwen3ASR.Tokenizer, files["tokenizer"])
    }
    if config.ModelConfig.Qwen3ASR.MaxTotalLen != 1024 {
        t.Fatalf("max total len = %d, want 1024", config.ModelConfig.Qwen3ASR.MaxTotalLen)
    }
    if config.ModelConfig.Qwen3ASR.MaxNewTokens != 256 {
        t.Fatalf("max new tokens = %d, want 256", config.ModelConfig.Qwen3ASR.MaxNewTokens)
    }
    if config.ModelConfig.Tokens != "" {
        t.Fatalf("tokens = %q, want empty for qwen3-asr", config.ModelConfig.Tokens)
    }
}