mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-10 20:11:49 +00:00
fix storyteller web with face fusion enums
This commit is contained in:
1 parent
4631b2b6d2
commit
11bbeefe1b
2 files changed
+52
-9
No files matched your search
+31
-8
@@ -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
|
||||
|
||||
+21
-1
@@ -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.
|
||||
|
||||
Reference in new issue
Block a user