yaejunyang/crates/yaejuyang-supertonic/src/api.rs
2026-05-19 18:26:30 +00:00

23 lines
540 B
Rust

use std::sync::Arc;
use axum::{Json, extract::State, http::StatusCode};
use crate::tts::TtsPool;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct Body {
text: String,
lang: String,
style_id: String,
}
pub async fn handler(
State(state): State<Arc<TtsPool>>,
Json(payload): Json<Body>,
) -> Result<Vec<u8>, (StatusCode, String)> {
Ok(state
.synthesize(payload.text, payload.lang, payload.style_id)
.await
.map_err(|err| (StatusCode::BAD_REQUEST, err))?)
}