VoiceInput/Sources/Utils/Config.swift
JOJO 1d9c9d5fa0 feat: macOS 菜单栏语音输入应用初始版本
- CGEvent cghidEventTap 全局监听 Fn 键
- Apple Speech 流式语音识别(zh-CN 默认)
- 实时音频 RMS 电平驱动波形动画
- NSPanel 胶囊浮动窗口
- 剪贴板 + Cmd+V 文本注入,CJK 输入法自动切换
- OpenAI 兼容 LLM 纠错(DeepSeek 预设)
- LSUIElement 菜单栏运行
- SPM + Makefile 构建
2026-04-24 16:17:57 +08:00

71 lines
2.1 KiB
Swift

import Foundation
enum RecognitionLanguage: String, CaseIterable {
case chineseSimplified = "zh-CN"
case english = "en-US"
case chineseTraditional = "zh-TW"
case japanese = "ja-JP"
case korean = "ko-KR"
var displayName: String {
switch self {
case .chineseSimplified: return "简体中文"
case .english: return "English"
case .chineseTraditional: return "繁體中文"
case .japanese: return "日本語"
case .korean: return "한국어"
}
}
}
struct Config {
static var shared = Config()
private let defaults = UserDefaults.standard
private enum Keys {
static let language = "recognition_language"
static let llmEnabled = "llm_enabled"
static let llmBaseURL = "llm_base_url"
static let llmAPIKey = "llm_api_key"
static let llmModel = "llm_model"
}
var language: RecognitionLanguage {
get {
guard let raw = defaults.string(forKey: Keys.language),
let lang = RecognitionLanguage(rawValue: raw) else {
return .chineseSimplified
}
return lang
}
set {
defaults.set(newValue.rawValue, forKey: Keys.language)
}
}
var llmEnabled: Bool {
get { defaults.bool(forKey: Keys.llmEnabled) }
set { defaults.set(newValue, forKey: Keys.llmEnabled) }
}
var llmBaseURL: String {
get { defaults.string(forKey: Keys.llmBaseURL) ?? "https://api.deepseek.com" }
set { defaults.set(newValue, forKey: Keys.llmBaseURL) }
}
var llmAPIKey: String {
get { defaults.string(forKey: Keys.llmAPIKey) ?? "sk-3457fbc33f0b4aefb2ce1d3101bb2341" }
set { defaults.set(newValue, forKey: Keys.llmAPIKey) }
}
var llmModel: String {
get { defaults.string(forKey: Keys.llmModel) ?? "deepseek-v4-flash" }
set { defaults.set(newValue, forKey: Keys.llmModel) }
}
var isLLMConfigured: Bool {
!llmBaseURL.isEmpty && !llmAPIKey.isEmpty && !llmModel.isEmpty
}
}