jbilcke-hf's picture
jbilcke-hf HF staff
upgraded to @aitube/client 0.0.12
f24ad59
raw
history blame
1.92 kB
import { ClapProject, getClapAssetSourceType, newClap } from "@aitube/clap"
import { generateImageID } from "./generateImageID"
import { generateAudioID } from "./generateAudioID"
import { ClapCompletionMode } from "../types"
export async function editEntities({
existingClap,
newerClap,
mode
}: {
existingClap: ClapProject
newerClap: ClapProject
mode: ClapCompletionMode
}) {
if (!existingClap.entities.length) { throw new Error(`please provide at least one entity`) }
for (const entity of existingClap.entities) {
let entityHasBeenModified = false
// TASK 1: GENERATE THE IMAGE PROMPT IF MISSING
if (!entity.imagePrompt) {
entity.imagePrompt = "a man with a beard"
entityHasBeenModified = true
}
// TASK 2: GENERATE THE IMAGE ID IF MISSING
if (!entity.imageId) {
entity.imageId = await generateImageID({
prompt: entity.imagePrompt,
seed: entity.seed
})
entity.imageSourceType = getClapAssetSourceType(entity.imageId)
entityHasBeenModified = true
}
// TASK 3: GENERATE THE AUDIO PROMPT IF MISSING
if (!entity.audioPrompt) {
entity.audioPrompt = "a man with a beard"
entityHasBeenModified = true
}
// TASK 4: GENERATE THE AUDIO ID IF MISSING
// TODO here: call Parler-TTS or a generic audio generator
if (!entity.audioId) {
entity.audioId = await generateAudioID({
prompt: entity.audioPrompt,
seed: entity.seed
})
entity.audioSourceType = getClapAssetSourceType(entity.audioId)
entityHasBeenModified = true
}
// in case we are doing a partial update
if (mode === "partial" && entityHasBeenModified && !newerClap.entityIndex[entity.id]) {
newerClap.entities.push(entity)
newerClap.entityIndex[entity.id] = entity
}
}
console.log(`[api/edit/entities] returning the newerClap`)
return newerClap
}