Update app.py
Browse files
app.py
CHANGED
@@ -34,9 +34,9 @@ def apply_low_pass_filter(audio_segment, cutoff_freq, sample_rate, order=5):
|
|
34 |
|
35 |
filtered_data_int16 = (filtered_data * (2**15 - 1)).astype(np.int16)
|
36 |
filtered_audio = AudioSegment(filtered_data_int16.tobytes(),
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
return filtered_audio
|
41 |
|
42 |
|
@@ -111,7 +111,7 @@ async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pi
|
|
111 |
processed_text = processed_text[len(prefix):].strip() #this removes the Prefix and leave only number or text after it.
|
112 |
break
|
113 |
#match = re.search(r'([A-Za-z]+)-?(\d+)', processed_text)
|
114 |
-
match = re.search(r"^(-?\d+)\s*(.*)", processed_text)
|
115 |
if match:
|
116 |
#prefix_pitch = match.group(1)
|
117 |
number = match.group(1)
|
@@ -121,7 +121,7 @@ async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pi
|
|
121 |
#processed_text = re.sub(r'([A-Za-z]+)([-]?\d*)', '', processed_text, count=1).strip()
|
122 |
processed_text = match.group(2)
|
123 |
#elif detect:
|
124 |
-
#
|
125 |
|
126 |
if processed_text:
|
127 |
rate_str = f"{current_rate:+d}%"
|
@@ -279,7 +279,7 @@ async def transcript_to_speech(transcript_text, voice, rate, pitch, speed_adjust
|
|
279 |
final_audio = AudioSegment.silent(duration=max_end_time_ms, frame_rate=24000)
|
280 |
for segment in timed_audio_segments:
|
281 |
final_audio = final_audio.overlay(segment['audio'], position=segment['start'])
|
282 |
-
|
283 |
# Apply the low-pass filter here
|
284 |
cutoff_frequency = 3500 # 3.5 kHz (you can make this a user-configurable parameter later)
|
285 |
filtered_final_audio = apply_low_pass_filter(final_audio, cutoff_frequency, final_audio.frame_rate)
|
@@ -348,4 +348,4 @@ async def create_demo():
|
|
348 |
|
349 |
if __name__ == "__main__":
|
350 |
demo = asyncio.run(create_demo())
|
351 |
-
demo.launch()
|
|
|
34 |
|
35 |
filtered_data_int16 = (filtered_data * (2**15 - 1)).astype(np.int16)
|
36 |
filtered_audio = AudioSegment(filtered_data_int16.tobytes(),
|
37 |
+
frame_rate=sample_rate,
|
38 |
+
sample_width=audio_segment.sample_width,
|
39 |
+
channels=audio_segment.channels)
|
40 |
return filtered_audio
|
41 |
|
42 |
|
|
|
111 |
processed_text = processed_text[len(prefix):].strip() #this removes the Prefix and leave only number or text after it.
|
112 |
break
|
113 |
#match = re.search(r'([A-Za-z]+)-?(\d+)', processed_text)
|
114 |
+
match = re.search(r"^(-?\d+)\s*(.*)", processed_text)
|
115 |
if match:
|
116 |
#prefix_pitch = match.group(1)
|
117 |
number = match.group(1)
|
|
|
121 |
#processed_text = re.sub(r'([A-Za-z]+)([-]?\d*)', '', processed_text, count=1).strip()
|
122 |
processed_text = match.group(2)
|
123 |
#elif detect:
|
124 |
+
# processed_text = processed_text.lstrip('-0123456789').strip() # Remove potential leftover numbers
|
125 |
|
126 |
if processed_text:
|
127 |
rate_str = f"{current_rate:+d}%"
|
|
|
279 |
final_audio = AudioSegment.silent(duration=max_end_time_ms, frame_rate=24000)
|
280 |
for segment in timed_audio_segments:
|
281 |
final_audio = final_audio.overlay(segment['audio'], position=segment['start'])
|
282 |
+
|
283 |
# Apply the low-pass filter here
|
284 |
cutoff_frequency = 3500 # 3.5 kHz (you can make this a user-configurable parameter later)
|
285 |
filtered_final_audio = apply_low_pass_filter(final_audio, cutoff_frequency, final_audio.frame_rate)
|
|
|
348 |
|
349 |
if __name__ == "__main__":
|
350 |
demo = asyncio.run(create_demo())
|
351 |
+
demo.launch()
|