diff --git a/crates/yaejuyang-supertonic/src/api.rs b/crates/yaejuyang-supertonic/src/api.rs index e3dc7a7..e0efe61 100644 --- a/crates/yaejuyang-supertonic/src/api.rs +++ b/crates/yaejuyang-supertonic/src/api.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use axum::{Json, extract::State}; +use axum::{Json, extract::State, http::StatusCode}; use crate::tts::TtsPool; use serde::{Deserialize, Serialize}; @@ -15,8 +15,9 @@ pub struct Body { pub async fn handler( State(state): State>, Json(payload): Json, -) -> Result, String> { +) -> Result, (StatusCode, String)> { Ok(state .synthesize(payload.text, payload.lang, payload.style_id) - .await?) + .await + .map_err(|err| (StatusCode::BAD_REQUEST, err))?) } diff --git a/crates/yaejuyang-supertonic/src/tts/pool.rs b/crates/yaejuyang-supertonic/src/tts/pool.rs index ffc59f4..3a20b25 100644 --- a/crates/yaejuyang-supertonic/src/tts/pool.rs +++ b/crates/yaejuyang-supertonic/src/tts/pool.rs @@ -55,8 +55,12 @@ impl TtsPool { let start_at = Instant::now(); let Some(style) = style_map.get(&job.style_id) else { - job.reply - .send(Err(format!("Voice style {} not found", job.style_id))); + if let Err(_) = job + .reply + .send(Err(format!("Voice style {} not found", job.style_id))) + { + tracing::error!("Worker send error"); + } continue; };