@@ -154,7 +154,7 @@ def create(self, voices, chunks, seed=-1, model="F5"):
154
154
155
155
class F5TTSAudioInputs :
156
156
def __init__ (self ):
157
- self .wave_file = None
157
+ self .wave_file_name = None
158
158
159
159
@classmethod
160
160
def INPUT_TYPES (s ):
@@ -181,28 +181,36 @@ def INPUT_TYPES(s):
181
181
FUNCTION = "create"
182
182
183
183
def load_voice_from_input (self , sample_audio , sample_text ):
184
- self . wave_file = tempfile .NamedTemporaryFile (
184
+ wave_file = tempfile .NamedTemporaryFile (
185
185
suffix = ".wav" , delete = False
186
186
)
187
+ self .wave_file_name = wave_file .name
188
+ wave_file .close ()
189
+
190
+ hasAudio = False
187
191
for (batch_number , waveform ) in enumerate (
188
- sample_audio ["waveform" ].cpu ()):
192
+ sample_audio ["waveform" ].cpu ()
193
+ ):
189
194
buff = io .BytesIO ()
190
195
torchaudio .save (
191
196
buff , waveform , sample_audio ["sample_rate" ], format = "WAV"
192
197
)
193
- with open (self .wave_file . name , 'wb' ) as f :
198
+ with open (self .wave_file_name , 'wb' ) as f :
194
199
f .write (buff .getbuffer ())
200
+ hasAudio = True
195
201
break
196
- r = F5TTSCreate .load_voice (self .wave_file .name , sample_text )
202
+ if not hasAudio :
203
+ raise FileNotFoundError ("No audio input" )
204
+ r = F5TTSCreate .load_voice (self .wave_file_name , sample_text )
197
205
return r
198
206
199
207
def remove_wave_file (self ):
200
- if self .wave_file is not None :
208
+ if self .wave_file_name is not None :
201
209
try :
202
- os .unlink (self .wave_file . name )
203
- self .wave_file = None
210
+ os .unlink (self .wave_file_name )
211
+ self .wave_file_name = None
204
212
except Exception as e :
205
- print ("F5TTS: Cannot remove? " + self .wave_file . name )
213
+ print ("F5TTS: Cannot remove? " + self .wave_file_name )
206
214
print (e )
207
215
208
216
def create (self , sample_audio , sample_text , speech , seed = - 1 , model = "F5" ):
0 commit comments