7eb5e984c2
- auth: Login 简化为管理员始终通过 .env 验证,GetProfile 修正 admin DB 查询 - devtools: .sh/.bat 同步重写为完整 CLI (start/stop/status/logs/build/db:*) - docs: 新增 devtools.md,重写 Deploy.md (三种方式+Windows说明),更新 README/gateway-api - voice-service: DashScope 实时流式 STT 支持 - gateway: Phase 6 多模型配置 + 多端客户端管理 + WebSocket 增强 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
package config
|
|
|
|
import "os"
|
|
|
|
// Config STT 语音识别服务配置
|
|
type Config struct {
|
|
Port string
|
|
WhisperBinary string
|
|
WhisperModel string
|
|
WhisperLanguage string
|
|
MaxAudioSize int64 // 字节
|
|
|
|
// DashScope STT 配置
|
|
DashScopeAPIKey string
|
|
DashScopeModel string // 离线/非实时 ASR 模型
|
|
DashScopeSTTRealtime string // 实时 ASR 模型
|
|
}
|
|
|
|
// Load 从 models.json 和环境变量加载配置。
|
|
// models.json 优先级高于环境变量。
|
|
func Load() *Config {
|
|
// 从 models.json 加载 ASR 配置
|
|
modelsAPIKey, modelsOffline, modelsRealtime := LoadModelsConfig()
|
|
|
|
// .env / 环境变量作为回退
|
|
envAPIKey := getEnv("DASHSCOPE_API_KEY", "")
|
|
envModel := getEnv("DASHSCOPE_STT_MODEL", "qwen3-asr-flash-2026-02-10")
|
|
envRealtime := getEnv("DASHSCOPE_STT_REALTIME_MODEL", "qwen3-asr-flash-realtime")
|
|
|
|
apiKey := modelsAPIKey
|
|
if apiKey == "" {
|
|
apiKey = envAPIKey
|
|
}
|
|
offlineModel := modelsOffline
|
|
if offlineModel == "" {
|
|
offlineModel = envModel
|
|
}
|
|
realtimeModel := modelsRealtime
|
|
if realtimeModel == "" {
|
|
realtimeModel = envRealtime
|
|
}
|
|
|
|
return &Config{
|
|
Port: getEnv("PORT", "8093"),
|
|
WhisperBinary: getEnv("WHISPER_BINARY", "./whisper.cpp/main"),
|
|
WhisperModel: getEnv("WHISPER_MODEL", "./whisper.cpp/models/ggml-small.bin"),
|
|
WhisperLanguage: getEnv("WHISPER_LANGUAGE", "zh"),
|
|
MaxAudioSize: 10 * 1024 * 1024, // 10MB
|
|
DashScopeAPIKey: apiKey,
|
|
DashScopeModel: offlineModel,
|
|
DashScopeSTTRealtime: realtimeModel,
|
|
}
|
|
}
|
|
|
|
func getEnv(key, fallback string) string {
|
|
if v := os.Getenv(key); v != "" {
|
|
return v
|
|
}
|
|
return fallback
|
|
}
|