in HuggingChat-Mac/LocalSTT/AudioModelManager.swift [340:397]
func fetchModels() {
availableModels = []
// First check what's already downloaded
if let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
let modelPath = documents.appendingPathComponent(modelStorage).path
// Check if the directory exists
if FileManager.default.fileExists(atPath: modelPath) {
localModelPath = modelPath
do {
let downloadedModels = try FileManager.default.contentsOfDirectory(atPath: modelPath)
for model in downloadedModels where !localModels.contains(model) {
localModels.append(model)
}
} catch {
print("Error enumerating files at \(modelPath): \(error.localizedDescription)")
}
}
}
localModels = WhisperKit.formatModelFiles(localModels)
for availableLocalModel in availableLocalModels {
if localModels.contains(availableLocalModel.id) {
let fileSize = getDirectorySize(selectedModel: availableLocalModel.id)
availableLocalModel.downloadState = .downloaded
availableLocalModel.localURL = URL(fileURLWithPath: localModelPath).appendingPathComponent(availableLocalModel.id)
availableLocalModel.size = fileSize
} else {
availableLocalModel.downloadState = .notDownloaded
availableLocalModel.localURL = nil
availableLocalModel.size = nil
}
}
// for dwnModel in localModels {
// if let modelIndex = availableLocalModels.firstIndex(where: { $0.id == dwnModel }) {
// let fileSize = getDirectorySize(selectedModel: dwnModel)
// availableLocalModels[modelIndex].downloadState = .downloaded
// availableLocalModels[modelIndex].localURL = URL(fileURLWithPath: localModelPath).appendingPathComponent(dwnModel)
// availableLocalModels[modelIndex].size = fileSize
// }
// }
// for model in localModels {
// if !availableModels.contains(model),
// !disabledModels.contains(model) {
// availableModels.append(model)
// }
// }
// Task {
// let remoteModels = try await WhisperKit.fetchAvailableModels(from: repoName)
// for model in remoteModels {
// if !availableModels.contains(model),
// !disabledModels.contains(model) {
// availableModels.append(model)
// }
// }
// }
}