tester1hf commited on
Commit
92de730
·
verified ·
1 Parent(s): 400f26d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -9
app.py CHANGED
@@ -102,32 +102,52 @@ def generate_audio(text, speaker_name):
102
  return temp_filename
103
 
104
  def process_line(args):
105
- """Process single dialogue line with parallel execution support"""
106
  idx, speaker, text = args
 
 
 
 
107
  try:
108
  logger.info(f"Processing line {idx+1} for {speaker}")
109
 
110
  # Generate base audio
111
  base_audio = generate_audio(text, speaker)
112
-
 
 
 
113
  # Generate voice cover
114
  ref_audio = "kisel.mp3" if speaker == "Киселёв" else "putin.mp3"
115
- covered_audio = tune_one(
 
 
 
116
  input_file=base_audio,
117
  ref_file=ref_audio,
118
- output_file=f"output_{uuid.uuid4().hex[:6]}.wav",
119
  device='cpu'
120
  )
121
 
122
- # Cleanup and rename
123
- final_filename = f"t{idx+1}-{speaker}.wav"
124
- os.rename(covered_audio, final_filename)
125
- os.remove(base_audio) # Clean up temporary file
 
 
 
 
126
 
127
  return final_filename
 
128
  except Exception as e:
129
- logger.error(f"Error processing line {idx+1}: {str(e)}")
130
  return None
 
 
 
 
 
131
 
132
  def process_prompt(prompt):
133
  """Main processing pipeline with parallel execution"""
 
102
  return temp_filename
103
 
104
  def process_line(args):
105
+ """Process single dialogue line with enhanced error handling"""
106
  idx, speaker, text = args
107
+ final_filename = f"t{idx+1}-{speaker}.wav"
108
+ base_audio = None
109
+ output_filename = None
110
+
111
  try:
112
  logger.info(f"Processing line {idx+1} for {speaker}")
113
 
114
  # Generate base audio
115
  base_audio = generate_audio(text, speaker)
116
+ if not os.path.exists(base_audio):
117
+ logger.error(f"Base audio not generated for line {idx+1}")
118
+ return None
119
+
120
  # Generate voice cover
121
  ref_audio = "kisel.mp3" if speaker == "Киселёв" else "putin.mp3"
122
+ output_filename = f"output_{uuid.uuid4().hex[:6]}.wav"
123
+
124
+ logger.debug(f"Tuning audio with reference: {ref_audio}")
125
+ tune_one(
126
  input_file=base_audio,
127
  ref_file=ref_audio,
128
+ output_file=output_filename,
129
  device='cpu'
130
  )
131
 
132
+ # Verify output file creation
133
+ if not os.path.exists(output_filename):
134
+ logger.error(f"Voice tuning failed for line {idx+1}")
135
+ return None
136
+
137
+ # Rename final file
138
+ os.rename(output_filename, final_filename)
139
+ logger.info(f"Created final file: {final_filename}")
140
 
141
  return final_filename
142
+
143
  except Exception as e:
144
+ logger.error(f"Error processing line {idx+1}: {str(e)}", exc_info=True)
145
  return None
146
+ finally:
147
+ # Cleanup temporary files
148
+ for f in [base_audio, output_filename]:
149
+ if f and os.path.exists(f):
150
+ os.remove(f)
151
 
152
  def process_prompt(prompt):
153
  """Main processing pipeline with parallel execution"""