Skip to content

Commit

Permalink
Updated Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Archetapp committed Nov 26, 2024
1 parent f307ead commit 34fe804
Show file tree
Hide file tree
Showing 13 changed files with 314 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ extension HumeAI.APISpecification {

struct BatchInferenceJobInput: Codable {
let urls: [URL]
let models: HumeAI.Model
let models: HumeAI.APIModel
let callback: CallbackConfig?
}

Expand Down Expand Up @@ -92,6 +92,7 @@ extension HumeAI.APISpecification {

struct CreateConfigVersionInput: Codable {
let id: String
let version: Int
let description: String?
let settings: [String: String]
}
Expand All @@ -115,6 +116,7 @@ extension HumeAI.APISpecification {

struct CreateDatasetVersionInput: Codable {
let id: String
let version: Int
let description: String?
let fileIds: [String]
}
Expand Down Expand Up @@ -201,7 +203,7 @@ extension HumeAI.APISpecification {
struct StreamInput: Codable, HTTPRequest.Multipart.ContentConvertible {
let id: String // Add file ID
let file: Data
let models: [HumeAI.Model]
let models: [HumeAI.APIModel]
let metadata: [String: String]?

public func __conversion() throws -> HTTPRequest.Multipart.Content {
Expand Down
42 changes: 21 additions & 21 deletions Sources/HumeAI/Intramodular/API/HumeAI.APISpecification.swift
Original file line number Diff line number Diff line change
Expand Up @@ -171,39 +171,39 @@ extension HumeAI {

// MARK: - Custom Voices
@GET
@Path("/v0/evi/custom-voices")
@Path("/v0/evi/custom_voices")
var listCustomVoices = Endpoint<Void, ResponseBodies.CustomVoiceList, Void>()

@POST
@Path("/v0/evi/custom-voices")
@Path("/v0/evi/custom_voices")
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var createCustomVoice = Endpoint<RequestBodies.CreateVoiceInput, ResponseBodies.Voice, Void>()
var createCustomVoice = Endpoint<RequestBodies.CreateVoiceInput, HumeAI.Voice, Void>()

@GET
@Path({ context -> String in
"/v0/evi/custom-voices/\(context.input.id)"
"/v0/evi/custom_voices/\(context.input.id)"
})
var getCustomVoice = Endpoint<PathInput.ID, ResponseBodies.Voice, Void>()
var getCustomVoice = Endpoint<PathInput.ID, HumeAI.Voice, Void>()

@POST
@Path({ context -> String in
"/v0/evi/custom-voices/\(context.input.id)/versions"
"/v0/evi/custom_voices/\(context.input.id)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var createCustomVoiceVersion = Endpoint<RequestBodies.CreateVoiceVersionInput, ResponseBodies.Voice, Void>()
var createCustomVoiceVersion = Endpoint<RequestBodies.CreateVoiceVersionInput, HumeAI.Voice, Void>()

@DELETE
@Path({ context -> String in
"/v0/evi/custom-voices/\(context.input.id)"
"/v0/evi/custom_voices/\(context.input.id)"
})
var deleteCustomVoice = Endpoint<PathInput.ID, Void, Void>()

@PATCH
@Path({ context -> String in
"/v0/evi/custom-voices/\(context.input.id)"
"/v0/evi/custom_voices/\(context.input.id)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var updateCustomVoiceName = Endpoint<RequestBodies.UpdateVoiceNameInput, ResponseBodies.Voice, Void>()
var updateCustomVoiceName = Endpoint<RequestBodies.UpdateVoiceNameInput, Void, Void>()

// MARK: - Configs
@GET
Expand All @@ -217,13 +217,13 @@ extension HumeAI {

@GET
@Path({ context -> String in
"/v0/evi/configs/\(context.input.id)/versions"
"/v0/evi/configs/\(context.input.id)/version/\(context.input.version)"
})
var listConfigVersions = Endpoint<PathInput.ID, [ResponseBodies.ConfigVersion], Void>()
var listConfigVersions = Endpoint<PathInput.IDWithVersion, [ResponseBodies.ConfigVersion], Void>()

@POST
@Path({ context -> String in
"/v0/evi/configs/\(context.input.id)/versions"
"/v0/evi/configs/\(context.input.id)/version/\(context.input.version)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var createConfigVersion = Endpoint<RequestBodies.CreateConfigVersionInput, ResponseBodies.ConfigVersion, Void>()
Expand Down Expand Up @@ -393,7 +393,7 @@ extension HumeAI {

@POST
@Path({ context -> String in
"/v0/registry/datasets/\(context.input.id)/versions"
"/v0/registry/datasets/\(context.input.id)/version/\(context.input.version)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var createDatasetVersion = Endpoint<RequestBodies.CreateDatasetVersionInput, HumeAI.Dataset.DatasetVersion, Void>()
Expand All @@ -406,9 +406,9 @@ extension HumeAI {

@GET
@Path({ context -> String in
"/v0/registry/datasets/\(context.input.id)/versions"
"/v0/registry/datasets/\(context.input.id)/version/\(context.input.version)"
})
var listDatasetVersions = Endpoint<PathInput.ID, [HumeAI.Dataset.DatasetVersion], Void>()
var listDatasetVersions = Endpoint<PathInput.IDWithVersion, [HumeAI.Dataset.DatasetVersion], Void>()
// MARK: - Models
@GET
@Path("/v0/registry/models")
Expand All @@ -425,26 +425,26 @@ extension HumeAI {
"/v0/registry/models/\(context.input.id)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var updateModelName = Endpoint<RequestBodies.UpdateModelNameInput, HumeAI.Model, Void>()
var updateModelName = Endpoint<RequestBodies.UpdateModelNameInput, Void, Void>()

@GET
@Path({ context -> String in
"/v0/registry/models/\(context.input.id)/versions"
"/v0/registry/models/version"
})
var listModelVersions = Endpoint<PathInput.ID, [ResponseBodies.ModelVersion], Void>()
var listModelVersions = Endpoint<PathInput.ID, [HumeAI.Model.ModelVersion], Void>()

@GET
@Path({ context -> String in
"/v0/registry/models/\(context.input.id)/version/\(context.input.version)"
})
var getModelVersion = Endpoint<PathInput.IDWithVersion, ResponseBodies.ModelVersion, Void>()
var getModelVersion = Endpoint<PathInput.IDWithVersion, HumeAI.Model.ModelVersion, Void>()

@PATCH
@Path({ context -> String in
"/v0/registry/models/\(context.input.id)/version/\(context.input.versionId)"
})
@Body(json: \.input, keyEncodingStrategy: .convertToSnakeCase)
var updateModelDescription = Endpoint<RequestBodies.UpdateModelDescriptionInput, ResponseBodies.ModelVersion, Void>()
var updateModelDescription = Endpoint<RequestBodies.UpdateModelDescriptionInput, Void, Void>()

// MARK: - Jobs
@POST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ extension HumeAI.APISpecification {
case voices = "custom_voices_page"
}
}

typealias Voice = HumeAI.Voice


struct TTSOutput: Codable {
public let audio: Data
public let durationMs: Int
Expand Down Expand Up @@ -182,14 +180,7 @@ extension HumeAI.APISpecification {
let pageNumber: Int
let pageSize: Int
let totalPages: Int
let voices: [Voice]

private enum CodingKeys: String, CodingKey {
case pageNumber = "page_number"
case pageSize = "page_size"
case totalPages = "total_pages"
case voices = "voices_page"
}
let customVoicesPage: [HumeAI.Voice]
}

struct DatasetList: Codable {
Expand Down
2 changes: 1 addition & 1 deletion Sources/HumeAI/Intramodular/HumeAI.Client-Batch.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import Merge
extension HumeAI.Client {
public func startInferenceJob(
urls: [URL],
models: HumeAI.Model
models: HumeAI.APIModel
) async throws -> HumeAI.JobID {
let input = HumeAI.APISpecification.RequestBodies.BatchInferenceJobInput(
urls: urls,
Expand Down
47 changes: 40 additions & 7 deletions Sources/HumeAI/Intramodular/HumeAI.Client-CustomVoices.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,61 @@ import Merge
extension HumeAI.Client {
public func listCustomVoices() async throws -> [HumeAI.Voice] {
let response = try await run(\.listCustomVoices)
return response.voices
return response.customVoicesPage
}

public func createCustomVoice(
name: String,
baseVoice: String,
model: HumeAI.Model,
parameters: HumeAI.Voice.Parameters
parameterModel: String,
parameters: HumeAI.Voice.Parameters? = nil
) async throws -> HumeAI.Voice {
let input = HumeAI.APISpecification.RequestBodies.CreateVoiceInput(
name: name,
baseVoice: baseVoice,
parameterModel: HumeAI.paramaterModel,
parameterModel: parameterModel,
parameters: parameters
)
return try await run(\.createCustomVoice, with: input)
}

public func deleteCustomVoice(id: String) async throws {
let input = HumeAI.APISpecification.PathInput.ID(
id: id
public func getCustomVoice(
id: String
) async throws -> HumeAI.Voice {
let input = HumeAI.APISpecification.PathInput.ID(id: id)
return try await run(\.getCustomVoice, with: input)
}

public func createCustomVoiceVersion(
id: String,
baseVoice: String,
parameterModel: String,
parameters: HumeAI.Voice.Parameters? = nil
) async throws -> HumeAI.Voice {
let input = HumeAI.APISpecification.RequestBodies.CreateVoiceVersionInput(
id: id,
baseVoice: baseVoice,
parameterModel: parameterModel,
parameters: parameters
)
return try await run(\.createCustomVoiceVersion, with: input)
}

public func deleteCustomVoice(
id: String
) async throws {
let input = HumeAI.APISpecification.PathInput.ID(id: id)
try await run(\.deleteCustomVoice, with: input)
}

public func updateCustomVoiceName(
id: String,
name: String
) async throws {
let input = HumeAI.APISpecification.RequestBodies.UpdateVoiceNameInput(
id: id,
name: name
)
try await run(\.updateCustomVoiceName, with: input)
}
}
43 changes: 36 additions & 7 deletions Sources/HumeAI/Intramodular/HumeAI.Client-Models.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import NetworkKit
import SwiftAPI
import Merge

//FIXME: - Not correct Model structure

extension HumeAI.Client {
public func listModels() async throws -> [HumeAI.Model] {
let response = try await run(\.listModels)
Expand All @@ -20,20 +18,51 @@ extension HumeAI.Client {
public func getModel(
id: String
) async throws -> HumeAI.Model {
let input = HumeAI.APISpecification.PathInput.ID(
id: id
)
let input = HumeAI.APISpecification.PathInput.ID(id: id)
return try await run(\.getModel, with: input)
}

public func updateModelName(
id: String,
name: String
) async throws -> HumeAI.Model {
) async throws {
let input = HumeAI.APISpecification.RequestBodies.UpdateModelNameInput(
id: id,
name: name
)
return try await run(\.updateModelName, with: input)
try await run(\.updateModelName, with: input)
}

public func listModelVersions(
id: String
) async throws -> [HumeAI.Model.ModelVersion] {
let input = HumeAI.APISpecification.PathInput.ID(
id: id
)
return try await run(\.listModelVersions, with: input)
}

public func getModelVersion(
id: String,
version: Int
) async throws -> HumeAI.Model.ModelVersion {
let input = HumeAI.APISpecification.PathInput.IDWithVersion(
id: id,
version: version
)
return try await run(\.getModelVersion, with: input)
}

public func updateModelDescription(
id: String,
versionId: String,
description: String
) async throws {
let input = HumeAI.APISpecification.RequestBodies.UpdateModelDescriptionInput(
id: id,
versionId: versionId,
description: description
)
try await run(\.updateModelDescription, with: input)
}
}
2 changes: 1 addition & 1 deletion Sources/HumeAI/Intramodular/HumeAI.Client-Stream.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ extension HumeAI.Client {
public func streamInference(
id: String,
file: Data,
models: [HumeAI.Model],
models: [HumeAI.APIModel],
metadata: [String: String]? = nil
) async throws -> HumeAI.Job {
let input = HumeAI.APISpecification.RequestBodies.StreamInput(
Expand Down
2 changes: 1 addition & 1 deletion Sources/HumeAI/Intramodular/HumeAI.Client.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ extension HumeAI.Client {
// Text to Speech
public func getAllAvailableVoices() async throws -> [HumeAI.Voice] {
let response = try await run(\.listCustomVoices)
return response.voices
return response.customVoicesPage
}
}

Expand Down
6 changes: 3 additions & 3 deletions Sources/HumeAI/Intramodular/HumeAI.Model.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ import Foundation
import Swift

extension HumeAI {
static let paramaterModel = "20241004-11parameter"
static let parameterModel = "20241004-11parameter"
}

extension HumeAI {
public struct Model: Codable {
public struct APIModel: Codable {
public var face: Face?
public var burst: [String: String]?
public var prosody: Prosody?
Expand Down Expand Up @@ -123,7 +123,7 @@ extension HumeAI {
}

// Helper initializers for simpler model creation
extension HumeAI.Model {
extension HumeAI.APIModel {
public static func face(
fpsPred: Double? = 3.0,
probThreshold: Double? = 0.99,
Expand Down
Loading

0 comments on commit 34fe804

Please sign in to comment.