Spaces:
Running
Running
Preventive fix: python:3.10 + gradio 6.x pinned deps
Browse files- Dockerfile +14 -17
- README.md +10 -10
- app.py +3 -6
- requirements.txt +9 -0
Dockerfile
CHANGED
|
@@ -1,17 +1,14 @@
|
|
| 1 |
-
FROM python:3.10-slim
|
| 2 |
-
|
| 3 |
-
WORKDIR /app
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
RUN
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
ENV GRADIO_SERVER_PORT="7860"
|
| 16 |
-
|
| 17 |
-
CMD ["python", "app.py"]
|
|
|
|
| 1 |
+
FROM python:3.10-slim
|
| 2 |
+
|
| 3 |
+
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
COPY requirements.txt .
|
| 6 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 7 |
+
|
| 8 |
+
COPY app.py .
|
| 9 |
+
|
| 10 |
+
EXPOSE 7860
|
| 11 |
+
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
| 12 |
+
ENV GRADIO_SERVER_PORT="7860"
|
| 13 |
+
|
| 14 |
+
CMD ["python", "app.py"]
|
|
|
|
|
|
|
|
|
README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
-
---
|
| 2 |
-
title: InfiniteTalk
|
| 3 |
-
emoji: 🎬
|
| 4 |
-
colorFrom: blue
|
| 5 |
-
colorTo: purple
|
| 6 |
-
sdk: docker
|
| 7 |
-
pinned: false
|
| 8 |
-
license: mit
|
| 9 |
-
short_description: Generate talking videos from image and audio.
|
| 10 |
-
---
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: InfiniteTalk
|
| 3 |
+
emoji: 🎬
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: purple
|
| 6 |
+
sdk: docker
|
| 7 |
+
pinned: false
|
| 8 |
+
license: mit
|
| 9 |
+
short_description: Generate talking videos from image and audio.
|
| 10 |
+
---
|
app.py
CHANGED
|
@@ -17,8 +17,6 @@ POLL_MAX_SECONDS = 300
|
|
| 17 |
|
| 18 |
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
| 22 |
# ============ CSS ============
|
| 23 |
CUSTOM_CSS = """
|
| 24 |
/* ===== Base Styles ===== */
|
|
@@ -413,7 +411,7 @@ with gr.Blocks(css=CUSTOM_CSS, title="InfiniteTalk - WaveSpeed") as demo:
|
|
| 413 |
<div class="hero-container">
|
| 414 |
<div class="hero-badge">WAVESPEED AI</div>
|
| 415 |
<h1 class="hero-title">InfiniteTalk</h1>
|
| 416 |
-
<p class="hero-desc">Generate talking videos from image and audio.
|
| 417 |
<div class="hero-badges">
|
| 418 |
<span>
|
| 419 |
<svg width="18" height="18" fill="#10b981" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
|
@@ -441,7 +439,7 @@ with gr.Blocks(css=CUSTOM_CSS, title="InfiniteTalk - WaveSpeed") as demo:
|
|
| 441 |
<svg width="20" height="20" fill="#8b5cf6" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z" clip-rule="evenodd"/></svg>
|
| 442 |
API Key
|
| 443 |
</span>
|
| 444 |
-
<a href="https://wavespeed.ai/
|
| 445 |
</div>
|
| 446 |
""")
|
| 447 |
api_key_input = gr.Textbox(
|
|
@@ -464,7 +462,6 @@ with gr.Blocks(css=CUSTOM_CSS, title="InfiniteTalk - WaveSpeed") as demo:
|
|
| 464 |
image_input = gr.Image(
|
| 465 |
label="Upload Image",
|
| 466 |
type="filepath",
|
| 467 |
-
source="upload",
|
| 468 |
elem_classes=["upload-area"]
|
| 469 |
)
|
| 470 |
audio_input = gr.Audio(
|
|
@@ -491,7 +488,7 @@ with gr.Blocks(css=CUSTOM_CSS, title="InfiniteTalk - WaveSpeed") as demo:
|
|
| 491 |
<div class="cta-container">
|
| 492 |
<h3 class="cta-title">Want More Features?</h3>
|
| 493 |
<p class="cta-desc">Higher resolutions, batch processing, and 700+ AI models</p>
|
| 494 |
-
<a href="https://wavespeed.ai/models
|
| 495 |
Explore WaveSpeed.ai
|
| 496 |
</a>
|
| 497 |
</div>
|
|
|
|
| 17 |
|
| 18 |
|
| 19 |
|
|
|
|
|
|
|
| 20 |
# ============ CSS ============
|
| 21 |
CUSTOM_CSS = """
|
| 22 |
/* ===== Base Styles ===== */
|
|
|
|
| 411 |
<div class="hero-container">
|
| 412 |
<div class="hero-badge">WAVESPEED AI</div>
|
| 413 |
<h1 class="hero-title">InfiniteTalk</h1>
|
| 414 |
+
<p class="hero-desc">Generate talking videos from image and audio.</p>
|
| 415 |
<div class="hero-badges">
|
| 416 |
<span>
|
| 417 |
<svg width="18" height="18" fill="#10b981" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"/></svg>
|
|
|
|
| 439 |
<svg width="20" height="20" fill="#8b5cf6" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M18 8a6 6 0 01-7.743 5.743L10 14l-1 1-1 1H6v2H2v-4l4.257-4.257A6 6 0 1118 8zm-6-4a1 1 0 100 2 2 2 0 012 2 1 1 0 102 0 4 4 0 00-4-4z" clip-rule="evenodd"/></svg>
|
| 440 |
API Key
|
| 441 |
</span>
|
| 442 |
+
<a href="https://wavespeed.ai/accesskey" target="_blank" class="get-key-btn">Get API Key</a>
|
| 443 |
</div>
|
| 444 |
""")
|
| 445 |
api_key_input = gr.Textbox(
|
|
|
|
| 462 |
image_input = gr.Image(
|
| 463 |
label="Upload Image",
|
| 464 |
type="filepath",
|
|
|
|
| 465 |
elem_classes=["upload-area"]
|
| 466 |
)
|
| 467 |
audio_input = gr.Audio(
|
|
|
|
| 488 |
<div class="cta-container">
|
| 489 |
<h3 class="cta-title">Want More Features?</h3>
|
| 490 |
<p class="cta-desc">Higher resolutions, batch processing, and 700+ AI models</p>
|
| 491 |
+
<a href="https://wavespeed.ai/models" target="_blank" class="cta-btn">
|
| 492 |
Explore WaveSpeed.ai
|
| 493 |
</a>
|
| 494 |
</div>
|
requirements.txt
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio>=6.0,<7.0
|
| 2 |
+
gradio_client>=2.0,<3.0
|
| 3 |
+
huggingface_hub>=1.0,<2.0
|
| 4 |
+
jinja2>=3.1,<4.0
|
| 5 |
+
starlette>=1.0,<2.0
|
| 6 |
+
fastapi>=0.115,<1.0
|
| 7 |
+
pydub>=0.25
|
| 8 |
+
requests>=2.28.0
|
| 9 |
+
uvicorn>=0.30
|