34 lines
1.3 KiB
Swift
34 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
struct ModelManifest {
|
|
struct Asset: Hashable {
|
|
let name: String
|
|
let remoteURL: URL
|
|
let localFolderName: String
|
|
}
|
|
|
|
let modelName: String
|
|
let assets: [Asset]
|
|
let voices: [Asset]
|
|
let tokenizer: Asset
|
|
|
|
static func kokoro() -> ModelManifest {
|
|
// TODO: Replace URLs with your hosted files.
|
|
let base = URL(string: "https://example.com/kokoro/")!
|
|
|
|
let assets = [
|
|
Asset(name: "duration", remoteURL: base.appendingPathComponent("kokoro_duration.mlpackage"), localFolderName: "kokoro"),
|
|
Asset(name: "decoder_3s", remoteURL: base.appendingPathComponent("KokoroDecoder_HAR_3s.mlpackage"), localFolderName: "kokoro"),
|
|
Asset(name: "decoder_10s", remoteURL: base.appendingPathComponent("KokoroDecoder_HAR_10s.mlpackage"), localFolderName: "kokoro")
|
|
]
|
|
|
|
let voices = [
|
|
Asset(name: "am_michael", remoteURL: base.appendingPathComponent("voices/am_michael.pt"), localFolderName: "kokoro/voices")
|
|
]
|
|
|
|
let tokenizer = Asset(name: "tokenizer", remoteURL: base.appendingPathComponent("checkpoints/config.json"), localFolderName: "kokoro")
|
|
|
|
return ModelManifest(modelName: "Kokoro", assets: assets, voices: voices, tokenizer: tokenizer)
|
|
}
|
|
}
|