From 11bbeefe1b093258e4038389dd7084a787a2d0aa Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 2 Sep 2024 22:14:21 -0400 Subject: [PATCH] fix storyteller web with face fusion enums --- .../public_inference_job_type.rs | 39 +++++++++++++++---- .../public_media_file_model_type.rs | 22 ++++++++++- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/crates/_types/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs b/crates/_types/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs index 30db2909e3..bc9b6de4aa 100644 --- a/crates/_types/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs +++ b/crates/_types/enums_public/src/by_table/generic_inference_jobs/public_inference_job_type.rs @@ -13,11 +13,16 @@ use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobTyp #[derive(Clone, Copy, Eq, PartialEq, Hash, Ord, PartialOrd, Deserialize, Serialize, Default, ToSchema, Debug)] #[serde(rename_all = "snake_case")] pub enum PublicInferenceJobType { - // Renamed enum variants + + // ======= Renamed enum variants ====== /// Instead of `InferenceJobType::LivePortrait` ("live_portrait") + /// This is not necessary anymore since we call the product "live portrait" in production ActingFace, - + + /// Instead of `InferenceJobType::FaceFusion` ("face_fusion") + Lipsync, + /// Storyteller Studio and Video Style Transfer Jobs (which we may want to split). /// These run in Comfy. /// TODO(bt,2024-07-15): We may segregate these two job types in the future @@ -25,7 +30,7 @@ pub enum PublicInferenceJobType { GptSovits, - // Everything else is the same + // ======= Everything else is the same ======= /// Jobs that run ComfyUI workflows /// This is actually just for Video Style Transfer and Storyteller Studio. @@ -85,6 +90,7 @@ impl PublicInferenceJobType { match inference_job_type { // Renamed variants InferenceJobType::LivePortrait => Self::ActingFace, + InferenceJobType::FaceFusion => Self::Lipsync, // Conserved variants InferenceJobType::VideoRender => Self::VideoRender, InferenceJobType::GptSovits => Self::GptSovits, @@ -107,6 +113,7 @@ impl PublicInferenceJobType { match self { // Renamed variants Self::ActingFace => InferenceJobType::LivePortrait, + Self::Lipsync => InferenceJobType::FaceFusion, // Conserved variants Self::VideoRender => InferenceJobType::VideoRender, Self::GptSovits => InferenceJobType::GptSovits, @@ -134,9 +141,10 @@ mod tests { use super::*; - fn override_enums() -> &'static [PublicInferenceJobType; 1] { + fn override_enums() -> &'static [PublicInferenceJobType; 2] { &[ PublicInferenceJobType::ActingFace, + PublicInferenceJobType::Lipsync, ] } @@ -153,6 +161,17 @@ mod tests { assert_eq!(PublicInferenceJobType::from_enum(InferenceJobType::LivePortrait), PublicInferenceJobType::ActingFace); assert_eq!(to_json(&PublicInferenceJobType::from_enum(InferenceJobType::LivePortrait)), "acting_face"); } + + #[test] + fn lipsync() { + // Public --> Internal + assert_eq!(PublicInferenceJobType::Lipsync.to_enum(), InferenceJobType::FaceFusion); + assert_eq!(to_json(&PublicInferenceJobType::Lipsync.to_enum()), "face_fusion"); + + // Internal --> Public + assert_eq!(PublicInferenceJobType::from_enum(InferenceJobType::FaceFusion), PublicInferenceJobType::Lipsync); + assert_eq!(to_json(&PublicInferenceJobType::from_enum(InferenceJobType::FaceFusion)), "lipsync"); + } } mod mechanical_checks { @@ -163,8 +182,10 @@ mod tests { let mut tested_count = 0; for public_variant in PublicInferenceJobType::iter() { - if public_variant == PublicInferenceJobType::ActingFace { - continue; // Can't compare. + match public_variant { + PublicInferenceJobType::ActingFace | + PublicInferenceJobType::Lipsync => continue, // Can't compare + _ => {} } // Round trip @@ -188,8 +209,10 @@ mod tests { let mut tested_count = 0; for internal_variant in InferenceJobType::all_variants() { - if internal_variant == InferenceJobType::LivePortrait { - continue; // Can't compare. + match internal_variant { + InferenceJobType::LivePortrait | + InferenceJobType::FaceFusion => continue, // Can't compare + _ => {} } // Round trip diff --git a/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs b/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs index 14e4d5b0d3..d68198ee02 100644 --- a/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs +++ b/crates/_types/enums_public/src/by_table/media_files/public_media_file_model_type.rs @@ -25,6 +25,10 @@ pub enum PublicMediaFileModelType { #[serde(rename = "face_animator")] FaceAnimator, + /// Instead of `MediaFileOriginModelType::FaceFusion` ("face_fusion") + #[serde(rename = "lipsync")] + Lipsync, + /// Instead of `MediaFileOriginModelType::StyleTTS2` ("styletts2") #[serde(rename = "voice_designer")] VoiceDesigner, @@ -75,6 +79,7 @@ impl PublicMediaFileModelType { pub fn from_enum(model_type: MediaFileOriginModelType) -> Self { match model_type { // Renamed variants + MediaFileOriginModelType::FaceFusion => Self::Lipsync, MediaFileOriginModelType::LivePortrait => Self::FaceMirror, MediaFileOriginModelType::SadTalker => Self::FaceAnimator, MediaFileOriginModelType::StyleTTS2 => Self::VoiceDesigner, @@ -98,6 +103,7 @@ impl PublicMediaFileModelType { // Renamed variants Self::FaceMirror => MediaFileOriginModelType::LivePortrait, Self::FaceAnimator => MediaFileOriginModelType::SadTalker, + Self::Lipsync => MediaFileOriginModelType::FaceFusion, Self::VoiceDesigner => MediaFileOriginModelType::StyleTTS2, // Conserved variants Self::RvcV2 => MediaFileOriginModelType::RvcV2, @@ -123,10 +129,11 @@ mod tests { use super::*; - fn override_enums() -> &'static [PublicMediaFileModelType; 3] { + fn override_enums() -> &'static [PublicMediaFileModelType; 4] { &[ PublicMediaFileModelType::FaceMirror, PublicMediaFileModelType::FaceAnimator, + PublicMediaFileModelType::Lipsync, PublicMediaFileModelType::VoiceDesigner, ] } @@ -134,6 +141,17 @@ mod tests { mod override_values { use super::*; + #[test] + fn face_fusion() { + // Public --> Internal + assert_eq!(PublicMediaFileModelType::Lipsync.to_enum(), MediaFileOriginModelType::FaceFusion); + assert_eq!(to_json(&PublicMediaFileModelType::Lipsync.to_enum()), "face_fusion"); + + // Internal --> Public + assert_eq!(PublicMediaFileModelType::from_enum(MediaFileOriginModelType::FaceFusion), PublicMediaFileModelType::Lipsync); + assert_eq!(to_json(&PublicMediaFileModelType::from_enum(MediaFileOriginModelType::FaceFusion)), "lipsync"); + } + #[test] fn live_portrait() { // Public --> Internal @@ -181,6 +199,7 @@ mod tests { match public_variant { PublicMediaFileModelType::FaceMirror | PublicMediaFileModelType::FaceAnimator | + PublicMediaFileModelType::Lipsync | PublicMediaFileModelType::VoiceDesigner => continue, // Can't compare. _ => {} } @@ -207,6 +226,7 @@ mod tests { for internal_variant in MediaFileOriginModelType::all_variants() { match internal_variant { + MediaFileOriginModelType::FaceFusion | MediaFileOriginModelType::LivePortrait | MediaFileOriginModelType::SadTalker | MediaFileOriginModelType::StyleTTS2 => continue, // Can't compare.