Adding generic inference args and creating the job soon

This commit is contained in:
Michael Chung committed 2023-10-02 23:08:28 -04:00
1 parent 773b96fb35
commit ec4a172929
3 files changed
+43 -7

No files matched your search

@@ -2,6 +2,7 @@ use enums::by_table::generic_inference_jobs::inference_category::InferenceCatego
use errors::AnyhowResult;
use crate::payloads::generic_inference_args::lipsync_payload::LipsyncArgs;
use crate::payloads::generic_inference_args::tts_payload::TTSArgs;
/// Used to encode extra state for the `generic_inference_jobs` table.
/// This should act somewhat like a serialized protobuf stored inside a record.
@@ -52,10 +53,11 @@ pub enum PolymorphicInferenceArgs {
La (LipsyncArgs),
/// Text to speech. (Short name to save space when serializing.)
Tts {
Tts(TTSArgs)
// No arguments yet.
// It might be best to just not include this when not used.
},
,
/// Voice conversion. (Short name to save space when serializing.)
Vc {
/// Argument for so-vits-svc
@@ -1,2 +1,3 @@
pub mod generic_inference_args;
pub mod lipsync_payload;
pub mod lipsync_payload;
pub mod tts_payload;
@@ -2,6 +2,9 @@
#![forbid(unused_mut)]
#![forbid(unused_variables)]
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
use mysql_queries::payloads::generic_inference_args::generic_inference_args::{GenericInferenceArgs, InferenceCategoryAbbreviated, PolymorphicInferenceArgs};
use std::sync::Arc;
use actix_web::{HttpRequest, HttpResponse, web};
use actix_web::error::ResponseError;
@@ -12,14 +15,13 @@ use enums::by_table::generic_inference_jobs::inference_model_type::InferenceMode
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
use tokens::jobs::inference::InferenceJobToken;
use crate::server_state::ServerState;
use mysql_queries::queries::generic_inference::web::insert_generic_inference_job::{insert_generic_inference_job, InsertGenericInferenceArgs};
// TODO MOVE into own file.
use std::fmt::Debug;
use serde::Deserialize;
use serde::Serialize;
use crate::prefixes::EntityType;
/// The primary key for embeddings for voice cloning inference jobs.
#[derive(Clone, PartialEq, Eq, sqlx::Type, Debug, Serialize, Deserialize)]
#[sqlx(transparent)]
@@ -122,7 +124,38 @@ pub async fn enqueue_tts_request(
// enqueue a zero shot tts request here...
// create the job record here! explore the table
// create the job record here! explore the table insert the inference args in here as json! keep it short
let query_result = insert_generic_inference_job(InsertGenericInferenceArgs {
uuid_idempotency_token: &request.uuid_idempotency_token,
inference_category: InferenceCategory::TextToSpeech,
maybe_model_type: Some(InferenceModelType::VallEX), // NB: Model is static during inference
maybe_model_token: None, // NB: Model is static during inference
maybe_input_source_token: None, // TODO: Introduce a second foreign key ?
maybe_input_source_token_type: None, // TODO: Introduce a second foreign key ?
maybe_raw_inference_text: None, // No text
maybe_inference_args: Some(GenericInferenceArgs {
inference_category: Some(InferenceCategoryAbbreviated::TextToSpeech),
args: Some(PolymorphicInferenceArgs::La(inference_args)),
}),
maybe_creator_user_token: maybe_user_token.as_ref(),
creator_ip_address: &ip_address,
creator_set_visibility: set_visibility,
priority_level,
requires_keepalive: plan.lipsync_requires_frontend_keepalive(),
is_debug_request,
maybe_routing_tag: maybe_routing_tag.as_deref(),
mysql_pool: &server_state.mysql_pool,
}).await;
let job_token = match query_result {
Ok((job_token, _id)) => job_token,
Err(err) => {
warn!("New generic inference job creation DB error: {:?}", err);
return Err(EnqueueLipsyncAnimationError::ServerError);
}
};
// Error handling 101 rust result type returned like so.
//Ok(HttpResponse::Ok().json("TTS request enqueued successfully"))