Spaces:
Runtime error
Runtime error
from gradio_client import Client | |
import os | |
import json | |
# Function to load question sets from a directory | |
def load_question_sets_vce(directory='questions'): | |
question_sets = [] | |
for root, dirs, files in os.walk(directory): | |
for file in files: | |
if file.endswith(".json"): | |
question_sets.append(os.path.join( file)[:-5]) # remove the .json extension | |
return question_sets | |
exams = load_question_sets_vce('questions/') | |
print("question_sets:", exams) | |
def select_exam_vce(exam_name): | |
file_path = os.path.join(os.getcwd(), 'questions', f'{exam_name}.json') | |
try: | |
with open(file_path, 'r') as f: | |
questions = json.load(f) | |
print(f"Loaded {len(questions)} questions") | |
return questions # Ensure the questions are returned here | |
except FileNotFoundError: | |
print(f"File {file_path} not found.") | |
return [] # Return an empty list to indicate no questions were found | |
# Text-to-speech function with rate limiting, retry mechanism, and client rotation | |
import time | |
import httpx | |
# Text-to-speech clients | |
client_1 = Client("ruslanmv/text-to-speech-fast") | |
client_2 = Client("ruslanmv/Text-To-Speech") | |
client_3 = Client("ruslanmv/Text-to-Voice-Transformers") | |
clients = [client_1, client_2, client_3] | |
# Text-to-speech function with rate limiting, retry mechanism, and client rotation | |
def text_to_speech(text, retries=3, delay=5): | |
client_index = 0 # Start with the first client | |
for attempt in range(retries): | |
try: | |
client = clients[client_index] | |
print(f"Attempt {attempt + 1}") | |
if client_index == 0: | |
result = client.predict( | |
language="English", | |
repo_id="csukuangfj/vits-piper-en_US-hfc_female-medium|1 speaker", | |
text=text, | |
sid="0", | |
speed=0.8, | |
api_name="/process" | |
) | |
else: | |
result = client.predict( | |
text=text, | |
api_name="/predict" | |
) | |
return result | |
except httpx.HTTPStatusError as e: | |
if e.response.status_code == 429: | |
print(f"Rate limit exceeded. Retrying in {delay} seconds...") | |
client_index = (client_index + 1) % len(clients) # Rotate to the next client | |
time.sleep(delay) | |
else: | |
raise e | |
print("Max retries exceeded. Could not process the request.") | |
return None |