deeplearning's picture
Create app.py
dad9c94 verified
import gradio as gr
import os
import io
import tempfile
from elevenlabs import ElevenLabs
import numpy as np
import soundfile as sf
def get_elevenlabs_client(api_key):
"""Skapa ElevenLabs-klient med API-nyckel"""
return ElevenLabs(api_key=api_key)
def generate_sound_effect(text_prompt, api_key, duration=30.0):
"""Generera ljudeffekt med ElevenLabs Sound Effects API"""
try:
client = get_elevenlabs_client(api_key)
# Generera ljud från text
audio_data = client.text_to_sound_effects.convert(
text=text_prompt,
duration_seconds=duration
)
# Spara till temporär fil
with tempfile.NamedTemporaryFile(delete=False, suffix='.wav') as tmp_file:
tmp_file.write(audio_data.read())
return tmp_file.name
except Exception as e:
raise Exception(f"Fel vid generering: {str(e)}")
# Skapa Gradio-gränssnitt
def create_interface():
with gr.Blocks(title="ElevenLabs Sound Effects Editor") as demo:
gr.Markdown("# 🎵 ElevenLabs Sound Effects Editor")
gr.Markdown("Använd ElevenLabs AI för att generera ljudeffekter!")
# API-nyckel input
api_key_input = gr.Textbox(
label="ElevenLabs API-nyckel",
type="password",
placeholder="Skriv in din ElevenLabs API-nyckel här...",
info="Du hittar din API-nyckel på https://elevenlabs.io/api"
)
# Huvudgränssnitt
with gr.Row():
with gr.Column():
prompt_input = gr.Textbox(
label="Text-prompt",
placeholder="Ex: Cinematic explosion, Rain falling, Sci-fi laser",
lines=3
)
duration_slider = gr.Slider(
minimum=1.0,
maximum=10.0,
value=3.0,
step=0.5,
label="Varaktighet (sekunder)"
)
with gr.Column():
audio_output = gr.Audio(label="Genererad ljudeffekt")
generate_btn = gr.Button("🔊 Generera ljud", variant="primary")
generate_btn.click(
fn=generate_sound_effect,
inputs=[prompt_input, api_key_input, duration_slider],
outputs=audio_output
)
# Tips
gr.Markdown("""
### 💡 Tips för bra prompts:
- **Miljö:** "Rain falling on leaves", "Ocean waves", "Forest birds"
- **Effekter:** "Explosion with debris", "Laser gun firing", "Magic sparkle"
- **Föremål:** "Door creaking", "Keys jangling", "Pages turning"
""")
return demo
# Skapa och kör appen
demo = create_interface()
demo.launch()