mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-11 12:23:20 +00:00
document tts endpoint, add /v1/ mounted version
This commit is contained in:
1 parent
a648899dbf
commit
dbe5b5af22
3 files changed
+36
-6
No files matched your search
@@ -39,6 +39,7 @@ use crate::http_server::endpoints::inference_job::get_inference_job_status::*;
|
||||
use crate::http_server::endpoints::inference_job::terminate_inference_job_handler::*;
|
||||
use crate::http_server::endpoints::media_files::batch_get_media_files_handler::*;
|
||||
use crate::http_server::endpoints::media_files::change_media_file_visibility_handler::*;
|
||||
use crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::*;
|
||||
use crate::http_server::endpoints::media_files::delete_media_file::*;
|
||||
use crate::http_server::endpoints::media_files::get_media_file::*;
|
||||
use crate::http_server::endpoints::media_files::list::list_featured_media_files::*;
|
||||
@@ -93,6 +94,7 @@ use crate::http_server::web_utils::response_success_helpers::*;
|
||||
crate::http_server::endpoints::media_files::rename_media_file_handler::rename_media_file_handler,
|
||||
crate::http_server::endpoints::media_files::upload::upload_engine_asset::upload_engine_asset_media_file_handler::upload_engine_asset_media_file_handler,
|
||||
crate::http_server::endpoints::media_files::upload::upload_generic::upload_media_file_handler::upload_media_file_handler,
|
||||
crate::http_server::endpoints::tts::enqueue_infer_tts_handler::enqueue_infer_tts_handler::enqueue_infer_tts_handler,
|
||||
crate::http_server::endpoints::media_files::upload::upload_video::upload_video_media_file_handler::upload_video_media_file_handler,
|
||||
crate::http_server::endpoints::media_files::upsert_write::write_engine_asset::write_engine_asset_media_file_handler::write_engine_asset_media_file_handler,
|
||||
crate::http_server::endpoints::media_files::upsert_write::write_scene_file::write_scene_file_media_file_handler::write_scene_file_media_file_handler,
|
||||
@@ -168,6 +170,10 @@ use crate::http_server::web_utils::response_success_helpers::*;
|
||||
BatchGetUserBookmarksError,
|
||||
BatchGetUserBookmarksQueryParams,
|
||||
BatchGetUserBookmarksResponse,
|
||||
InferTtsSuccessResponse,
|
||||
InferTtsRequest,
|
||||
InferenceJobTokenType,
|
||||
InferTtsError,
|
||||
BatchGetUserRatingError,
|
||||
BatchGetUserRatingQueryParams,
|
||||
BatchGetUserRatingResponse,
|
||||
|
||||
+21
-4
@@ -13,6 +13,7 @@ use log::{info, warn};
|
||||
use r2d2_redis::redis::Commands;
|
||||
use rand::Rng;
|
||||
use rand::seq::SliceRandom;
|
||||
use utoipa::ToSchema;
|
||||
|
||||
use enums::by_table::generic_inference_jobs::inference_category::InferenceCategory;
|
||||
use enums::by_table::generic_inference_jobs::inference_job_type::InferenceJobType;
|
||||
@@ -64,7 +65,7 @@ const USER_NEWS_STORY_USER_TOKEN : &str = "U:XAWRARC1N89X6";
|
||||
/// Safety guard against plans supporting too lengthy TTS inference text.
|
||||
const MAX_TTS_LENGTH : usize = 10_000;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Deserialize, ToSchema)]
|
||||
pub struct InferTtsRequest {
|
||||
uuid_idempotency_token: String,
|
||||
tts_model_token: String,
|
||||
@@ -73,7 +74,7 @@ pub struct InferTtsRequest {
|
||||
is_storyteller_demo: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[derive(Serialize, ToSchema)]
|
||||
pub struct InferTtsSuccessResponse {
|
||||
pub success: bool,
|
||||
pub inference_job_token: String,
|
||||
@@ -82,7 +83,7 @@ pub struct InferTtsSuccessResponse {
|
||||
}
|
||||
|
||||
/// Tell the frontend how to deal with the tts queue.
|
||||
#[derive(Serialize)]
|
||||
#[derive(Serialize, ToSchema)]
|
||||
pub enum InferenceJobTokenType {
|
||||
/// Legacy TTS inference job
|
||||
#[serde(rename = "legacy_tts")]
|
||||
@@ -94,7 +95,7 @@ pub enum InferenceJobTokenType {
|
||||
Generic,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, ToSchema)]
|
||||
pub enum InferTtsError {
|
||||
BadInput(String),
|
||||
NotAuthorized,
|
||||
@@ -134,6 +135,22 @@ impl fmt::Display for InferTtsError {
|
||||
}
|
||||
}
|
||||
|
||||
#[utoipa::path(
|
||||
post,
|
||||
path = "/v1/tts/inference",
|
||||
responses(
|
||||
(
|
||||
status = 200,
|
||||
description = "Success response",
|
||||
body = InferTtsSuccessResponse,
|
||||
),
|
||||
(status = 400, description = "Bad input", body = InferTtsError),
|
||||
(status = 401, description = "Not authorized", body = InferTtsError),
|
||||
(status = 429, description = "Rate limited", body = InferTtsError),
|
||||
(status = 500, description = "Server error", body = InferTtsError)
|
||||
),
|
||||
params(("request" = InferTtsRequest, description = "Payload for Request"))
|
||||
)]
|
||||
pub async fn enqueue_infer_tts_handler(
|
||||
http_request: HttpRequest,
|
||||
request: web::Json<InferTtsRequest>,
|
||||
|
||||
@@ -8,6 +8,7 @@ use actix_helpers::route_builder::RouteBuilder;
|
||||
use billing_component::default_routes::add_suggested_stripe_billing_routes;
|
||||
use reusable_types::server_environment::ServerEnvironment;
|
||||
use users_component::default_routes::add_suggested_api_v1_account_creation_and_session_routes;
|
||||
use users_component::endpoints::create_account_handler::create_account_handler;
|
||||
use users_component::endpoints::edit_profile_handler::edit_profile_handler;
|
||||
use users_component::endpoints::get_profile_handler::get_profile_handler;
|
||||
|
||||
@@ -312,8 +313,14 @@ fn add_tts_routes<T, B> (app: App<T>) -> App<T>
|
||||
InitError = (),
|
||||
>,
|
||||
{
|
||||
app.service(
|
||||
web::scope("/tts")
|
||||
// NB(bt,2024-04-03): Newer /v1/tts/* routes don't have public use, but we'll start using it
|
||||
app.service(web::resource("/v1/tts/inference")
|
||||
.route(web::post().to(enqueue_infer_tts_handler))
|
||||
.route(web::head().to(|| HttpResponse::Ok()))
|
||||
)
|
||||
// NB(bt,2024-04-03): Older root /tts/* routes should be drained of traffic. They are used in the Twitch Streamer API though.
|
||||
.service(
|
||||
web::scope("/tts")
|
||||
.service(
|
||||
web::resource("/upload")
|
||||
.route(web::post().to(upload_tts_model_handler))
|
||||
|
||||
Reference in new issue
Block a user