mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-10 20:11:49 +00:00
WIP almost there... trait objects have lifetime
This commit is contained in:
1 parent
1c37e79e12
commit
5ec1395b82
2 files changed
+17
-7
No files matched your search
@@ -9,7 +9,7 @@ pub trait InferencePipelineStart <'a> {
|
||||
type VocoderModel;
|
||||
//fn infer_mel<'b>(self, text: &'b str, speaker_id: i32) -> AnyhowResult<Box<dyn InferencePipelineMelDone<'a> + 'a>>;
|
||||
|
||||
fn next(self)
|
||||
fn infer_mel(self, text: &str, speaker_id: i64)
|
||||
-> AnyhowResult<Box<dyn InferencePipelineMelDone<'a, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel>>>;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ pub trait InferencePipelineMelDone <'b> {
|
||||
type VocoderModel;
|
||||
|
||||
fn next(self: Box<Self>)
|
||||
-> AnyhowResult<Box<dyn InferencePipelineAudioDone<'b, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel>>>;
|
||||
-> AnyhowResult<Box<dyn InferencePipelineAudioDone<'b, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel> + 'b>>;
|
||||
|
||||
//fn infer_audio(self) -> AnyhowResult<Box<dyn InferencePipelineAudioDone + 'a>>;
|
||||
//fn infer_audio(&'a self);
|
||||
|
||||
@@ -37,7 +37,7 @@ impl <'a> InferencePipelineStart<'a> for GlowTtsMultiSpeakerMelganPipeline<'a> {
|
||||
type TtsModel = &'a ArpabetGlowTtsMultiSpeakerModel;
|
||||
type VocoderModel = &'a MelganModel;
|
||||
|
||||
fn next(self) -> AnyhowResult<Box<dyn InferencePipelineMelDone<'a, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel>>> {
|
||||
fn infer_mel(self, text: &str, speaker_id: i64) -> AnyhowResult<Box<dyn InferencePipelineMelDone<'a, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel>>> {
|
||||
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<GlowTtsMultiSpeakerMelganPipelineMelDone<'a>> {
|
||||
type TtsModel = &'a ArpabetGlowTtsMultiSpeakerModel;
|
||||
type VocoderModel = &'a MelganModel;
|
||||
|
||||
fn next(self: Box<Self>) -> AnyhowResult<Box<dyn InferencePipelineAudioDone<'a, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel>>> {
|
||||
unimplemented!()
|
||||
fn next(self: Box<Self>) -> AnyhowResult<Box<dyn InferencePipelineAudioDone<'a, TtsModel = Self::TtsModel, VocoderModel = Self::VocoderModel> + 'a>> {
|
||||
let glow_tts : &'a ArpabetGlowTtsMultiSpeakerModel = self.glow_tts;
|
||||
let melgan : &'a MelganModel = self.melgan;
|
||||
|
||||
let boxed : Box<GlowTtsMultiSpeakerMelganPipelineAudioDone<'a>> = 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()
|
||||
|
||||
Reference in new issue
Block a user