Spaces:
Running
on
Zero
Running
on
Zero
Commit
Β·
f8a1b4d
1
Parent(s):
0e896d0
loudness issues
Browse files
app.py
CHANGED
@@ -197,33 +197,36 @@ def continue_music(input_audio_path, prompt_duration, musicgen_model, output_dur
|
|
197 |
generated_audio_segment = AudioSegment.from_wav(filename_with_extension)
|
198 |
file_paths_for_cleanup.append(filename_with_extension)
|
199 |
|
200 |
-
# VOLUME MATCHING:
|
201 |
|
202 |
# 1. Remove prompt duration from original (no overlap)
|
203 |
prompt_duration_ms = int(prompt_duration * 1000)
|
204 |
original_minus_prompt = original_audio[:-prompt_duration_ms]
|
205 |
|
206 |
-
# 2.
|
|
|
|
|
|
|
207 |
original_rms = original_minus_prompt.rms
|
208 |
-
|
209 |
|
210 |
-
print(f"π
|
211 |
-
print(f" Original RMS: {original_rms}")
|
212 |
-
print(f" Generated RMS: {
|
|
|
213 |
|
214 |
-
#
|
215 |
-
if
|
216 |
-
# Calculate dB adjustment needed
|
217 |
from pydub.utils import ratio_to_db
|
218 |
-
volume_adjustment = ratio_to_db(original_rms /
|
219 |
-
print(f" Applying {volume_adjustment:.1f}dB to generated
|
220 |
|
221 |
-
# Apply
|
222 |
generated_matched = generated_audio_segment + volume_adjustment
|
223 |
else:
|
224 |
generated_matched = generated_audio_segment
|
225 |
|
226 |
-
#
|
227 |
combined_audio = original_minus_prompt + generated_matched
|
228 |
|
229 |
# Save final result
|
|
|
197 |
generated_audio_segment = AudioSegment.from_wav(filename_with_extension)
|
198 |
file_paths_for_cleanup.append(filename_with_extension)
|
199 |
|
200 |
+
# SMART VOLUME MATCHING: Only match the prompt portion
|
201 |
|
202 |
# 1. Remove prompt duration from original (no overlap)
|
203 |
prompt_duration_ms = int(prompt_duration * 1000)
|
204 |
original_minus_prompt = original_audio[:-prompt_duration_ms]
|
205 |
|
206 |
+
# 2. Extract JUST the prompt portion from generated audio for RMS analysis
|
207 |
+
generated_prompt_portion = generated_audio_segment[:prompt_duration_ms]
|
208 |
+
|
209 |
+
# 3. Calculate RMS of the transition points
|
210 |
original_rms = original_minus_prompt.rms
|
211 |
+
prompt_portion_rms = generated_prompt_portion.rms
|
212 |
|
213 |
+
print(f"π Smart volume analysis:")
|
214 |
+
print(f" Original ending RMS: {original_rms}")
|
215 |
+
print(f" Generated prompt RMS: {prompt_portion_rms}")
|
216 |
+
print(f" Generated full RMS: {generated_audio_segment.rms}")
|
217 |
|
218 |
+
# 4. Match the prompt portion to original level
|
219 |
+
if prompt_portion_rms > 0:
|
|
|
220 |
from pydub.utils import ratio_to_db
|
221 |
+
volume_adjustment = ratio_to_db(original_rms / prompt_portion_rms)
|
222 |
+
print(f" Applying {volume_adjustment:.1f}dB to entire generated segment")
|
223 |
|
224 |
+
# Apply to entire segment (preserves the buildup)
|
225 |
generated_matched = generated_audio_segment + volume_adjustment
|
226 |
else:
|
227 |
generated_matched = generated_audio_segment
|
228 |
|
229 |
+
# 5. Combine seamlessly
|
230 |
combined_audio = original_minus_prompt + generated_matched
|
231 |
|
232 |
# Save final result
|