Spaces:
Runtime error
Runtime error
Update app.py
Browse filesInsert Silence.mp3 to section where marker "SSxxx" is found
app.py
CHANGED
|
@@ -33,9 +33,12 @@ async def paragraph_to_speech(text, voice, rate, pitch):
|
|
| 33 |
for part in parts:
|
| 34 |
if re.match(r'SS\d+\.?\d*', part):
|
| 35 |
try:
|
| 36 |
-
silence_duration = float(part[2:])
|
| 37 |
-
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
| 39 |
except ValueError:
|
| 40 |
print(f"Warning: Invalid silence duration format: {part}")
|
| 41 |
elif part.strip():
|
|
@@ -43,7 +46,6 @@ async def paragraph_to_speech(text, voice, rate, pitch):
|
|
| 43 |
current_voice = voice
|
| 44 |
current_rate = rate
|
| 45 |
current_pitch = pitch
|
| 46 |
-
|
| 47 |
if part.startswith("1F"):
|
| 48 |
processed_text = part[2:]
|
| 49 |
current_voice = voice1F.split(" - ")[0]
|
|
@@ -121,11 +123,6 @@ async def text_to_speech(text, voice, rate, pitch):
|
|
| 121 |
os.remove(segment) # Clean up individual files
|
| 122 |
except FileNotFoundError:
|
| 123 |
print(f"Warning: Audio file not found: {segment}")
|
| 124 |
-
elif isinstance(segment, (int, float)):
|
| 125 |
-
# Basic silence insertion (approximate)
|
| 126 |
-
silence = b'\x00' * int(segment * 44100 * 2) # Assuming 16-bit mono at 44.1kHz
|
| 127 |
-
outfile.write(silence)
|
| 128 |
-
|
| 129 |
return combined_audio_path, None
|
| 130 |
|
| 131 |
# Gradio interface function
|
|
@@ -142,7 +139,7 @@ async def create_demo():
|
|
| 142 |
default_voice = "en-US-AndrewMultilingualNeural - en-US (Male)" # 👈 Pick one of the available voices
|
| 143 |
description = """
|
| 144 |
Default = male, other voices 1F:US_Emma, 2F:US_Jenny, 3F:HK_Yan, 1M:AU_Will, 2M:IT_Guiseppe,3M:US_Brian, 1C: Childvoice, 1O = OldMan
|
| 145 |
-
You can insert silence using the marker 'SS'
|
| 146 |
Enter your text, select a voice, and adjust the speech rate and pitch.
|
| 147 |
The application will process your text paragraph by paragraph (separated by two blank lines).
|
| 148 |
"""
|
|
|
|
| 33 |
for part in parts:
|
| 34 |
if re.match(r'SS\d+\.?\d*', part):
|
| 35 |
try:
|
| 36 |
+
#silence_duration = float(part[2:])
|
| 37 |
+
silence_path = os.path.join(os.path.dirname(__file__), "Silence.mp3")
|
| 38 |
+
if os.path.exists(silence_path):
|
| 39 |
+
audio_segments.append(silence_path)
|
| 40 |
+
else:
|
| 41 |
+
print(f"Warning: Silence.mp3 not found at {silence_path}")
|
| 42 |
except ValueError:
|
| 43 |
print(f"Warning: Invalid silence duration format: {part}")
|
| 44 |
elif part.strip():
|
|
|
|
| 46 |
current_voice = voice
|
| 47 |
current_rate = rate
|
| 48 |
current_pitch = pitch
|
|
|
|
| 49 |
if part.startswith("1F"):
|
| 50 |
processed_text = part[2:]
|
| 51 |
current_voice = voice1F.split(" - ")[0]
|
|
|
|
| 123 |
os.remove(segment) # Clean up individual files
|
| 124 |
except FileNotFoundError:
|
| 125 |
print(f"Warning: Audio file not found: {segment}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
return combined_audio_path, None
|
| 127 |
|
| 128 |
# Gradio interface function
|
|
|
|
| 139 |
default_voice = "en-US-AndrewMultilingualNeural - en-US (Male)" # 👈 Pick one of the available voices
|
| 140 |
description = """
|
| 141 |
Default = male, other voices 1F:US_Emma, 2F:US_Jenny, 3F:HK_Yan, 1M:AU_Will, 2M:IT_Guiseppe,3M:US_Brian, 1C: Childvoice, 1O = OldMan
|
| 142 |
+
You can insert silence using the marker 'SS' (This will insert a Silence period from the Silence.mp3 file).
|
| 143 |
Enter your text, select a voice, and adjust the speech rate and pitch.
|
| 144 |
The application will process your text paragraph by paragraph (separated by two blank lines).
|
| 145 |
"""
|