drewThomasson commited on
Commit
2f4e236
·
verified ·
1 Parent(s): a695b96

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -2
app.py CHANGED
@@ -40,6 +40,15 @@ speakers = extract_unique_speakers("book.csv")
40
  # Dictionary to store selected voice actors for each speaker
41
  selected_voices = {speaker: get_random_voice_for_speaker_fast(speaker) for speaker in speakers}
42
 
 
 
 
 
 
 
 
 
 
43
  # Function to update the dictionary and display the result
44
  def update_voice(*args):
45
  for speaker, selected_voice in zip(speakers, args):
@@ -49,18 +58,40 @@ def update_voice(*args):
49
  result = "\n".join([f"For {speaker}: selected voice actor {voice}" for speaker, voice in selected_voices.items()])
50
  return result
51
 
 
 
 
 
 
 
 
 
 
52
  # Creating Gradio interface
53
  def create_interface():
54
  inputs = []
 
 
55
  for speaker in speakers:
56
  # Create a dropdown for each speaker with the list of all voice actors
57
  dropdown = gr.Dropdown(choices=voice_actors, label=f"Select voice actor for {speaker}", value=selected_voices[speaker])
58
  inputs.append(dropdown)
 
 
 
59
 
 
 
 
 
 
 
 
 
60
  interface = gr.Interface(
61
- fn=update_voice,
62
  inputs=inputs,
63
- outputs="text",
64
  live=True
65
  )
66
  return interface
 
40
  # Dictionary to store selected voice actors for each speaker
41
  selected_voices = {speaker: get_random_voice_for_speaker_fast(speaker) for speaker in speakers}
42
 
43
+ # Function to find and return a sample audio file for the selected voice actor
44
+ def get_voice_sample(voice_actor):
45
+ voice_actor_path = os.path.join(voice_actors_folder, voice_actor)
46
+ # Look for any .wav or .mp3 files in the voice actor's folder
47
+ for file in os.listdir(voice_actor_path):
48
+ if file.endswith(".wav") or file.endswith(".mp3"):
49
+ return os.path.join(voice_actor_path, file)
50
+ return None
51
+
52
  # Function to update the dictionary and display the result
53
  def update_voice(*args):
54
  for speaker, selected_voice in zip(speakers, args):
 
58
  result = "\n".join([f"For {speaker}: selected voice actor {voice}" for speaker, voice in selected_voices.items()])
59
  return result
60
 
61
+ # Function to return the voice sample file for a given speaker
62
+ def play_sample(speaker):
63
+ selected_voice = selected_voices[speaker]
64
+ sample_file = get_voice_sample(selected_voice)
65
+ if sample_file:
66
+ return sample_file
67
+ else:
68
+ return "No audio sample available."
69
+
70
  # Creating Gradio interface
71
  def create_interface():
72
  inputs = []
73
+ play_buttons = []
74
+
75
  for speaker in speakers:
76
  # Create a dropdown for each speaker with the list of all voice actors
77
  dropdown = gr.Dropdown(choices=voice_actors, label=f"Select voice actor for {speaker}", value=selected_voices[speaker])
78
  inputs.append(dropdown)
79
+
80
+ # Add a button to play the sample for each selected voice actor
81
+ play_buttons.append(gr.Audio(source="filepath", label=f"Play sample for {speaker}", type="filepath", interactive=True, value=None))
82
 
83
+ def update_interface(*args):
84
+ # Update voice selection
85
+ update_voice(*args)
86
+
87
+ # Update the play button with the audio file
88
+ audio_samples = [play_sample(speaker) for speaker in speakers]
89
+ return update_voice(*args), audio_samples
90
+
91
  interface = gr.Interface(
92
+ fn=update_interface,
93
  inputs=inputs,
94
+ outputs=["text"] + play_buttons,
95
  live=True
96
  )
97
  return interface