Ariver
2026-06-02 3fbceec8de833416bf1ae049f959f222c3f1a4a0
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package model
 
import "fmt"
 
const (
    BackendSenseVoice = "sensevoice"
)
 
var modelProfiles = map[string]ModelProfile{
    DefaultModelID: {
        ID:          DefaultModelID,
        DisplayName: "SenseVoice",
        BackendKind: BackendSenseVoice,
        Tier:        "default",
        SupportedLanguageIDs: []string{
            "zh-CN",
            "zh-Hans",
            "zh-Hant",
            "yue",
            "en",
            "ja",
            "ko",
        },
        RecommendedFor: []string{"zh-CN"},
        Description:    "轻量中文模型,适合中文和中英混输。",
        InstallDirName: "sensevoice-zh",
        LegacyDirNames: []string{"sensevoice"},
        RequiredFiles: []RequiredFileRule{
            {
                Role:     "model",
                AnyOf:    []string{"model.int8.onnx", "model.onnx"},
                Required: true,
            },
            {
                Role:     "tokens",
                AllOf:    []string{"tokens.txt"},
                Required: true,
            },
        },
        ProviderOrder: []string{"coreml", "cpu"},
        NumThreads:    4,
    },
}
 
var languageProfiles = map[string]LanguageProfile{
    "zh-CN": {
        ID:             "zh-CN",
        DisplayName:    "中文",
        UILocale:       "zh-CN",
        SystemMatchers: []string{"zh", "zh-CN", "zh-Hans", "zh-Hant"},
        DefaultModelID: DefaultModelID,
    },
}
 
func GetModelProfile(id string) (ModelProfile, error) {
    if id == "" {
        id = DefaultModelID
    }
    profile, ok := modelProfiles[id]
    if !ok {
        return ModelProfile{}, fmt.Errorf("unknown model profile: %s", id)
    }
    return profile, nil
}
 
func DefaultModelProfile() ModelProfile {
    return modelProfiles[DefaultModelID]
}
 
func ListModelProfiles() []ModelProfile {
    profiles := make([]ModelProfile, 0, len(modelProfiles))
    for _, profile := range modelProfiles {
        profiles = append(profiles, profile)
    }
    return profiles
}
 
func NormalizeModelID(id string) string {
    if _, err := GetModelProfile(id); err != nil {
        return DefaultModelID
    }
    return id
}
 
func GetLanguageProfile(id string) (LanguageProfile, error) {
    profile, ok := languageProfiles[id]
    if !ok {
        return LanguageProfile{}, fmt.Errorf("unknown language profile: %s", id)
    }
    return profile, nil
}
 
func ListLanguageProfiles() []LanguageProfile {
    profiles := make([]LanguageProfile, 0, len(languageProfiles))
    for _, profile := range languageProfiles {
        profiles = append(profiles, profile)
    }
    return profiles
}