Vijish commited on
Commit
9325cfe
·
verified ·
1 Parent(s): 5a046c6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -8
app.py CHANGED
@@ -6,8 +6,9 @@ from voice_processing import tts, get_model_names, voice_mapping
6
  from io import BytesIO
7
  import json
8
  from concurrent.futures import ThreadPoolExecutor, as_completed
 
9
 
10
- def convert_tts(model_name, tts_text, selected_voice, slang_rate, use_uploaded_voice, voice_upload):
11
  edge_tts_voice = voice_mapping.get(selected_voice)
12
  if not edge_tts_voice:
13
  return {"error": f"Invalid voice '{selected_voice}'."}, None
@@ -17,7 +18,7 @@ def convert_tts(model_name, tts_text, selected_voice, slang_rate, use_uploaded_v
17
  with open(voice_upload.name, 'rb') as f:
18
  voice_upload_file = f.read()
19
 
20
- info, edge_tts_output_path, tts_output_data, edge_output_file = tts(
21
  model_name, tts_text, edge_tts_voice, slang_rate, use_uploaded_voice, voice_upload_file
22
  )
23
 
@@ -35,12 +36,15 @@ def convert_tts(model_name, tts_text, selected_voice, slang_rate, use_uploaded_v
35
  audio_data_uri = f"data:audio/wav;base64,{base64.b64encode(audio_bytes).decode('utf-8')}"
36
  return {"info": info}, audio_data_uri
37
 
 
 
 
 
 
38
  def batch_convert_tts(json_file):
39
  results = []
40
- tasks = []
41
 
42
  try:
43
- # Read JSON content from the uploaded file
44
  with open(json_file.name, 'r') as file:
45
  batch_data = json.load(file)
46
  except Exception as e:
@@ -49,7 +53,7 @@ def batch_convert_tts(json_file):
49
  with ThreadPoolExecutor() as executor:
50
  future_to_entry = {
51
  executor.submit(
52
- convert_tts,
53
  entry.get("model_name"),
54
  entry.get("text"),
55
  entry.get("voice"),
@@ -76,7 +80,7 @@ def get_voices():
76
  return list(voice_mapping.keys())
77
 
78
  iface = gr.Interface(
79
- fn=convert_tts,
80
  inputs=[
81
  gr.Dropdown(choices=get_models(), label="Model", interactive=True),
82
  gr.Textbox(label="Text", placeholder="Enter text here"),
@@ -108,5 +112,3 @@ app = gr.TabbedInterface(
108
 
109
  app.launch()
110
 
111
-
112
-
 
6
  from io import BytesIO
7
  import json
8
  from concurrent.futures import ThreadPoolExecutor, as_completed
9
+ import asyncio
10
 
11
+ async def convert_tts(model_name, tts_text, selected_voice, slang_rate, use_uploaded_voice, voice_upload):
12
  edge_tts_voice = voice_mapping.get(selected_voice)
13
  if not edge_tts_voice:
14
  return {"error": f"Invalid voice '{selected_voice}'."}, None
 
18
  with open(voice_upload.name, 'rb') as f:
19
  voice_upload_file = f.read()
20
 
21
+ info, edge_tts_output_path, tts_output_data, edge_output_file = await tts(
22
  model_name, tts_text, edge_tts_voice, slang_rate, use_uploaded_voice, voice_upload_file
23
  )
24
 
 
36
  audio_data_uri = f"data:audio/wav;base64,{base64.b64encode(audio_bytes).decode('utf-8')}"
37
  return {"info": info}, audio_data_uri
38
 
39
+ def convert_tts_sync(*args):
40
+ loop = asyncio.new_event_loop()
41
+ asyncio.set_event_loop(loop)
42
+ return loop.run_until_complete(convert_tts(*args))
43
+
44
  def batch_convert_tts(json_file):
45
  results = []
 
46
 
47
  try:
 
48
  with open(json_file.name, 'r') as file:
49
  batch_data = json.load(file)
50
  except Exception as e:
 
53
  with ThreadPoolExecutor() as executor:
54
  future_to_entry = {
55
  executor.submit(
56
+ convert_tts_sync,
57
  entry.get("model_name"),
58
  entry.get("text"),
59
  entry.get("voice"),
 
80
  return list(voice_mapping.keys())
81
 
82
  iface = gr.Interface(
83
+ fn=convert_tts_sync,
84
  inputs=[
85
  gr.Dropdown(choices=get_models(), label="Model", interactive=True),
86
  gr.Textbox(label="Text", placeholder="Enter text here"),
 
112
 
113
  app.launch()
114