Spaces:
Runtime error
Runtime error
Updated sample ui location
Browse files- app.py +31 -51
- lib/ui_content.py +24 -0
app.py
CHANGED
|
@@ -6,7 +6,7 @@ import logging
|
|
| 6 |
import matplotlib.pyplot as plt
|
| 7 |
import numpy as np
|
| 8 |
from lib import format_audio_output
|
| 9 |
-
from lib.ui_content import header_html, demo_text_info
|
| 10 |
from lib.book_utils import get_available_books, get_book_info, get_chapter_text
|
| 11 |
from lib.text_utils import count_tokens
|
| 12 |
from tts_model import TTSModel
|
|
@@ -179,28 +179,7 @@ def create_performance_plot(metrics, voice_names):
|
|
| 179 |
return fig, metrics_text
|
| 180 |
|
| 181 |
# Create Gradio interface
|
| 182 |
-
with gr.Blocks(title="Kokoro TTS Demo", css=
|
| 183 |
-
.equal-height {
|
| 184 |
-
min-height: 400px;
|
| 185 |
-
display: flex;
|
| 186 |
-
flex-direction: column;
|
| 187 |
-
}
|
| 188 |
-
.token-label {
|
| 189 |
-
font-size: 1rem;
|
| 190 |
-
margin-bottom: 0.3rem;
|
| 191 |
-
text-align: center;
|
| 192 |
-
padding: 0.2rem 0;
|
| 193 |
-
}
|
| 194 |
-
.token-count {
|
| 195 |
-
color: #4169e1;
|
| 196 |
-
}
|
| 197 |
-
#gradio-accordion > .label-wrap {
|
| 198 |
-
background: radial-gradient(circle, rgba(147,51,234,0.4) 0%, rgba(30,58,138,0.4) 100%);
|
| 199 |
-
padding: 0.8rem 1rem;
|
| 200 |
-
font-weight: 500;
|
| 201 |
-
color: #000000;
|
| 202 |
-
}
|
| 203 |
-
""") as demo:
|
| 204 |
gr.HTML(header_html)
|
| 205 |
|
| 206 |
with gr.Row():
|
|
@@ -350,6 +329,34 @@ with gr.Blocks(title="Kokoro TTS Demo", css="""
|
|
| 350 |
|
| 351 |
# Column 2: Controls
|
| 352 |
with gr.Column(elem_classes="equal-height"):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 353 |
file_input = gr.File(
|
| 354 |
label="Upload .txt file",
|
| 355 |
file_types=[".txt"],
|
|
@@ -393,34 +400,7 @@ with gr.Blocks(title="Kokoro TTS Demo", css="""
|
|
| 393 |
|
| 394 |
submit_btn = gr.Button("Generate Speech", variant="primary")
|
| 395 |
|
| 396 |
-
|
| 397 |
-
with gr.Accordion("Audio Samples", open=False, elem_id='gradio-accordion') as audio_accordion:
|
| 398 |
-
sample_files = [f for f in os.listdir("samples") if f.endswith('.wav')]
|
| 399 |
-
sample_audio = gr.Audio(
|
| 400 |
-
value=os.path.join("samples", sample_files[0]) if sample_files else None,
|
| 401 |
-
sources=["upload"],
|
| 402 |
-
type="filepath",
|
| 403 |
-
label="Sample Audio",
|
| 404 |
-
interactive=False
|
| 405 |
-
)
|
| 406 |
-
sample_dropdown = gr.Dropdown(
|
| 407 |
-
choices=sample_files,
|
| 408 |
-
value=sample_files[0] if sample_files else None,
|
| 409 |
-
label="Select Sample",
|
| 410 |
-
type="value"
|
| 411 |
-
)
|
| 412 |
-
|
| 413 |
-
def update_sample(sample_name):
|
| 414 |
-
if not sample_name:
|
| 415 |
-
return None
|
| 416 |
-
return os.path.join("samples", sample_name)
|
| 417 |
-
|
| 418 |
-
sample_dropdown.change(
|
| 419 |
-
fn=update_sample,
|
| 420 |
-
inputs=[sample_dropdown],
|
| 421 |
-
outputs=[sample_audio]
|
| 422 |
-
)
|
| 423 |
-
|
| 424 |
|
| 425 |
|
| 426 |
# Column 3: Output
|
|
|
|
| 6 |
import matplotlib.pyplot as plt
|
| 7 |
import numpy as np
|
| 8 |
from lib import format_audio_output
|
| 9 |
+
from lib.ui_content import header_html, demo_text_info, styling
|
| 10 |
from lib.book_utils import get_available_books, get_book_info, get_chapter_text
|
| 11 |
from lib.text_utils import count_tokens
|
| 12 |
from tts_model import TTSModel
|
|
|
|
| 179 |
return fig, metrics_text
|
| 180 |
|
| 181 |
# Create Gradio interface
|
| 182 |
+
with gr.Blocks(title="Kokoro TTS Demo", css=styling) as demo:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 183 |
gr.HTML(header_html)
|
| 184 |
|
| 185 |
with gr.Row():
|
|
|
|
| 329 |
|
| 330 |
# Column 2: Controls
|
| 331 |
with gr.Column(elem_classes="equal-height"):
|
| 332 |
+
# Audio Samples Accordion with custom styling
|
| 333 |
+
with gr.Accordion("Audio Samples", open=False, elem_id='gradio-accordion') as audio_accordion:
|
| 334 |
+
sample_files = [f for f in os.listdir("samples") if f.endswith('.wav')]
|
| 335 |
+
sample_audio = gr.Audio(
|
| 336 |
+
value=os.path.join("samples", sample_files[0]) if sample_files else None,
|
| 337 |
+
sources=["upload"],
|
| 338 |
+
type="filepath",
|
| 339 |
+
label="Sample Audio",
|
| 340 |
+
interactive=False
|
| 341 |
+
)
|
| 342 |
+
sample_dropdown = gr.Dropdown(
|
| 343 |
+
choices=sample_files,
|
| 344 |
+
value=sample_files[0] if sample_files else None,
|
| 345 |
+
label="Select Sample",
|
| 346 |
+
type="value"
|
| 347 |
+
)
|
| 348 |
+
|
| 349 |
+
def update_sample(sample_name):
|
| 350 |
+
if not sample_name:
|
| 351 |
+
return None
|
| 352 |
+
return os.path.join("samples", sample_name)
|
| 353 |
+
|
| 354 |
+
sample_dropdown.change(
|
| 355 |
+
fn=update_sample,
|
| 356 |
+
inputs=[sample_dropdown],
|
| 357 |
+
outputs=[sample_audio]
|
| 358 |
+
)
|
| 359 |
+
|
| 360 |
file_input = gr.File(
|
| 361 |
label="Upload .txt file",
|
| 362 |
file_types=[".txt"],
|
|
|
|
| 400 |
|
| 401 |
submit_btn = gr.Button("Generate Speech", variant="primary")
|
| 402 |
|
| 403 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 404 |
|
| 405 |
|
| 406 |
# Column 3: Output
|
lib/ui_content.py
CHANGED
|
@@ -46,3 +46,27 @@ header_html = f"""
|
|
| 46 |
demo_text_info = """
|
| 47 |
All input text was sourced as public domain.
|
| 48 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
demo_text_info = """
|
| 47 |
All input text was sourced as public domain.
|
| 48 |
"""
|
| 49 |
+
|
| 50 |
+
styling = """
|
| 51 |
+
.equal-height {
|
| 52 |
+
min-height: 400px;
|
| 53 |
+
display: flex;
|
| 54 |
+
flex-direction: column;
|
| 55 |
+
}
|
| 56 |
+
.token-label {
|
| 57 |
+
font-size: 1rem;
|
| 58 |
+
margin-bottom: 0.3rem;
|
| 59 |
+
text-align: center;
|
| 60 |
+
padding: 0.2rem 0;
|
| 61 |
+
}
|
| 62 |
+
.token-count {
|
| 63 |
+
color: #4169e1;
|
| 64 |
+
}
|
| 65 |
+
#gradio-accordion > .label-wrap {
|
| 66 |
+
background: radial-gradient(circle, rgba(147,51,234,0.4) 0%, rgba(30,58,138,0.4) 100%);
|
| 67 |
+
padding: 0.8rem 1rem;
|
| 68 |
+
font-size: 1rem;
|
| 69 |
+
color: #000000;
|
| 70 |
+
border-radius: 4px;
|
| 71 |
+
}
|
| 72 |
+
"""
|