use crate::
{
error::Result,
audio::{ Audio, SpeechGenerationResult },
environment::HuggingFaceEnvironment,
};
use serde::Serialize;
#[ derive( Debug, Serialize ) ]
struct TtsRequest
{
inputs : String,
}
impl< E > Audio< E >
where
E : HuggingFaceEnvironment + crate::environment::EnvironmentInterface + Send + Sync + 'static + Clone,
{
#[ inline ]
pub async fn generate_speech(
&self,
text : impl AsRef< str >,
model : impl AsRef< str >
) -> Result< SpeechGenerationResult >
{
let request = TtsRequest
{
inputs : text.as_ref().to_string(),
};
let endpoint = format!( "/models/{}", model.as_ref() );
let url = self.client.environment.endpoint_url( &endpoint )?;
let audio_data : Vec< u8 > = self.client
.post_bytes( url.as_str(), &request )
.await?;
Ok( SpeechGenerationResult
{
audio_data,
sample_rate : None, format : None, } )
}
}