diff --git a/tts_service/src/inference/inference.rs b/tts_service/src/inference/inference.rs index df09f4c2a2..c282f870c0 100644 --- a/tts_service/src/inference/inference.rs +++ b/tts_service/src/inference/inference.rs @@ -9,7 +9,7 @@ pub trait InferencePipelineStart <'a> { type VocoderModel; //fn infer_mel<'b>(self, text: &'b str, speaker_id: i32) -> AnyhowResult + 'a>>; - fn next(self) + fn infer_mel(self, text: &str, speaker_id: i64) -> AnyhowResult>>; } @@ -18,7 +18,7 @@ pub trait InferencePipelineMelDone <'b> { type VocoderModel; fn next(self: Box) - -> AnyhowResult>>; + -> AnyhowResult + 'b>>; //fn infer_audio(self) -> AnyhowResult>; //fn infer_audio(&'a self); diff --git a/tts_service/src/inference/pipelines/glowtts_multispeaker_melgan.rs b/tts_service/src/inference/pipelines/glowtts_multispeaker_melgan.rs index 8d6a9a1361..82a469a09b 100644 --- a/tts_service/src/inference/pipelines/glowtts_multispeaker_melgan.rs +++ b/tts_service/src/inference/pipelines/glowtts_multispeaker_melgan.rs @@ -37,7 +37,7 @@ impl <'a> InferencePipelineStart<'a> for GlowTtsMultiSpeakerMelganPipeline<'a> { type TtsModel = &'a ArpabetGlowTtsMultiSpeakerModel; type VocoderModel = &'a MelganModel; - fn next(self) -> AnyhowResult>> { + fn infer_mel(self, text: &str, speaker_id: i64) -> AnyhowResult>> { unimplemented!(); } @@ -65,12 +65,22 @@ impl <'a> InferencePipelineStart<'a> for GlowTtsMultiSpeakerMelganPipeline<'a> { }*/ } -impl <'a> InferencePipelineMelDone<'a> for GlowTtsMultiSpeakerMelganPipelineMelDone <'a> { +impl <'a> InferencePipelineMelDone<'a> for Box> { type TtsModel = &'a ArpabetGlowTtsMultiSpeakerModel; type VocoderModel = &'a MelganModel; - fn next(self: Box) -> AnyhowResult>> { - unimplemented!() + fn next(self: Box) -> AnyhowResult + 'a>> { + let glow_tts : &'a ArpabetGlowTtsMultiSpeakerModel = self.glow_tts; + let melgan : &'a MelganModel = self.melgan; + + let boxed : Box> = Box::new(GlowTtsMultiSpeakerMelganPipelineAudioDone { + glow_tts, + melgan, + mel: None, + wave_audio: None + }); + + Ok(boxed) } /*fn infer_audio(&'a self) { unimplemented!() @@ -100,7 +110,7 @@ impl <'a> InferencePipelineAudioDone<'_> for GlowTtsMultiSpeakerMelganPipelineAu fn test(glow: &ArpabetGlowTtsMultiSpeakerModel, melgan: &MelganModel) { let pipeline = GlowTtsMultiSpeakerMelganPipeline::new(glow, melgan) - .next() + .infer_mel("test", 1) .unwrap() .next() .unwrap()