cnph001 commited on
Commit
dd400d4
·
verified ·
1 Parent(s): 74db9d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -2
app.py CHANGED
@@ -62,9 +62,17 @@ async def get_voices():
62
  voices = await edge_tts.list_voices()
63
  return {f"{v['ShortName']} - {v['Locale']} ({v['Gender']})": v['ShortName'] for v in voices}
64
 
 
 
 
 
 
 
 
 
65
  async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pitch):
66
- """Generates audio for a text segment, handling permanent and temporary voice changes with new rules."""
67
-
68
  # Define the voice map for reference
69
  voice_map = {
70
  "1F": ("en-GB-SoniaNeural", 25, 0),
@@ -112,6 +120,7 @@ async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pi
112
  current_pitch += pitch_adj
113
  current_rate += rate_adj
114
  result.append(f"<perm>{prefix}P") # Mark as permanent change
 
115
  elif pitch_modifier:
116
  # Temporary pitch adjustment (e.g., "4V-10" or "4V+5")
117
  pitch_adjustment = int(pitch_modifier)
@@ -158,6 +167,8 @@ async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pi
158
 
159
  return None
160
 
 
 
161
  async def process_transcript_line(line, default_voice, rate, pitch):
162
  """Processes a single transcript line with HH:MM:SS.milliseconds timestamp and quoted text segments."""
163
  match = re.match(r'(\d{2}):(\d{2}):(\d{2}),(\d{3})\s+(.*)', line) # Modified timestamp regex
 
62
  voices = await edge_tts.list_voices()
63
  return {f"{v['ShortName']} - {v['Locale']} ({v['Gender']})": v['ShortName'] for v in voices}
64
 
65
+
66
+ ## EDIT
67
+ import re
68
+ import tempfile
69
+ from pydub import AudioSegment
70
+ import asyncio
71
+
72
+
73
  async def generate_audio_with_voice_prefix(text_segment, default_voice, rate, pitch):
74
+ """Generates audio for a text segment, handling permanent and temporary voice changes."""
75
+
76
  # Define the voice map for reference
77
  voice_map = {
78
  "1F": ("en-GB-SoniaNeural", 25, 0),
 
120
  current_pitch += pitch_adj
121
  current_rate += rate_adj
122
  result.append(f"<perm>{prefix}P") # Mark as permanent change
123
+ temp_voice = None # Clear temporary voice changes
124
  elif pitch_modifier:
125
  # Temporary pitch adjustment (e.g., "4V-10" or "4V+5")
126
  pitch_adjustment = int(pitch_modifier)
 
167
 
168
  return None
169
 
170
+ ### END EDIT
171
+
172
  async def process_transcript_line(line, default_voice, rate, pitch):
173
  """Processes a single transcript line with HH:MM:SS.milliseconds timestamp and quoted text segments."""
174
  match = re.match(r'(\d{2}):(\d{2}):(\d{2}),(\d{3})\s+(.*)', line) # Modified timestamp regex