// // Pipeline.swift // Diffusion // // Created by Pedro Cuenca on December 2022. // See LICENSE at https://github.com/huggingface/swift-coreml-diffusers/LICENSE // import Foundation import CoreML import Combine import StableDiffusion typealias StableDiffusionProgress = StableDiffusionPipeline.Progress class Pipeline { let pipeline: StableDiffusionPipeline var progress: StableDiffusionProgress? = nil { didSet { progressPublisher.value = progress } } lazy private(set) var progressPublisher: CurrentValueSubject = CurrentValueSubject(progress) init(_ pipeline: StableDiffusionPipeline) { self.pipeline = pipeline } func generate(prompt: String, scheduler: StableDiffusionScheduler, numInferenceSteps stepCount: Int = 50, seed: UInt32? = nil) throws -> CGImage { let beginDate = Date() print("Generating...") let theSeed = seed ?? UInt32.random(in: 0..