From 370c887a04812e977a02a36b4b62da47f970787d Mon Sep 17 00:00:00 2001 From: csh <458761603@qq.com> Date: Tue, 7 Jan 2025 18:56:54 +0800 Subject: [PATCH] fix: gpt_sovits api compatible OpenAI Signed-off-by: csh <458761603@qq.com> --- src/backend/gpt_sovits.rs | 7 +++++++ src/backend/mod.rs | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/gpt_sovits.rs b/src/backend/gpt_sovits.rs index e3f8538..ed3f209 100644 --- a/src/backend/gpt_sovits.rs +++ b/src/backend/gpt_sovits.rs @@ -32,12 +32,19 @@ fn infer(speaker: &str, text: &str) -> Result, &'static str> { } } +#[allow(unused)] #[derive(Debug, serde::Deserialize)] pub struct SpeechRequest { /// The text to generate audio for. pub input: String, /// Id of speaker. + #[serde(alias = "voice")] pub speaker: String, + + #[serde(default)] + pub response_format: String, + #[serde(default)] + pub speed: f32, } fn create_speech(speech_request: SpeechRequest) -> anyhow::Result> { diff --git a/src/backend/mod.rs b/src/backend/mod.rs index 0bb5598..8ee4fbd 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -7,12 +7,15 @@ use crate::error; use hyper::{Body, Request, Response}; +#[cfg(all(feature = "piper", feature = "gpt_sovits"))] +compile_error!("Only one of the features 'piper' and 'gpt_sovits' can be enabled at a time."); + pub(crate) async fn handle_llama_request(req: Request) -> Response { match req.uri().path() { #[cfg(feature = "piper")] "/v1/audio/speech" => piper::audio_speech_handler(req).await, #[cfg(feature = "gpt_sovits")] - "/v1/audio/speech_gpt" => gpt_sovits::audio_speech_handler(req).await, + "/v1/audio/speech" => gpt_sovits::audio_speech_handler(req).await, #[cfg(feature = "piper")] "/v1/files" => piper::files_handler(req).await, path => {