0notexist0 commited on
Commit
63454b5
·
verified ·
1 Parent(s): b7d7e4a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -34
app.py CHANGED
@@ -1,51 +1,59 @@
1
  import gradio as gr
2
- from transformers import pipeline
3
- import scipy.io.wavfile as wavfile
4
  import os
5
 
6
- # Recuperiamo il tuo token segreto
7
  API_TOKEN = os.environ.get("htoken")
 
8
 
9
- # INIZIALIZZAZIONE LOCALE CON AUTENTICAZIONE:
10
- # Ora passiamo il token autorizzato per permettere il download del modello nella RAM!
11
- modello_tts = pipeline("text-to-speech", model="facebook/mms-tts-ita", token=API_TOKEN)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- def genera_audio_locale(testo):
14
  if not testo.strip():
15
- return "Errore: Inserisci del testo.", None
16
-
17
  try:
18
- # Inferenza pura sulla CPU dello Space
19
- risultato = modello_tts(testo)
20
-
21
- audio_array = risultato["audio"][0]
22
- sample_rate = risultato["sampling_rate"]
23
-
24
- percorso_file = "output_locale.wav"
25
- wavfile.write(percorso_file, sample_rate, audio_array)
26
-
27
- return "✅ Audio generato fisicamente sul server locale (Zero API esterne)!", percorso_file
28
-
29
  except Exception as e:
30
- return f"❌ Errore di calcolo hardware locale: {str(e)}", None
31
 
32
- # Interfaccia Utente
33
  with gr.Blocks(theme=gr.themes.Soft()) as interfaccia:
34
- gr.Markdown("# Generatore Audio IA (Esecuzione 100% Locale)")
35
- gr.Markdown("Questa versione elabora l'audio direttamente sul processore del server. Nessun blocco API.")
36
 
37
  with gr.Row():
38
- testo_input = gr.Textbox(label="Testo da generare (Italiano)", placeholder="Scrivi qui il tuo prompt...", lines=3)
39
-
40
- pulsante = gr.Button("Genera Audio Offline", variant="primary")
 
 
 
 
41
 
42
- status_output = gr.Textbox(label="Stato Console", lines=3)
43
- audio_output = gr.Audio(label="Player Audio", type="filepath", autoplay=True)
 
44
 
45
- pulsante.click(
46
- fn=genera_audio_locale,
47
- inputs=[testo_input],
48
- outputs=[status_output, audio_output]
49
- )
50
 
51
  interfaccia.launch()
 
1
  import gradio as gr
2
+ from huggingface_hub import InferenceClient, HfApi
 
3
  import os
4
 
5
+ # Recupero Token
6
  API_TOKEN = os.environ.get("htoken")
7
+ client = InferenceClient(token=API_TOKEN)
8
 
9
+ def recupera_modelli_reali():
10
+ """Interroga Hugging Face per trovare i modelli TTS reali più popolari"""
11
+ api = HfApi()
12
+ try:
13
+ # Cerchiamo modelli nella categoria 'text-to-speech' ordinati per download
14
+ modelli = api.list_models(
15
+ filter="text-to-speech",
16
+ sort="downloads",
17
+ direction=-1,
18
+ limit=15
19
+ )
20
+ # Creiamo una lista di stringhe con i nomi reali (es. 'suno/bark-small')
21
+ return [m.id for m in modelli]
22
+ except Exception:
23
+ # Se la ricerca fallisce, usiamo dei fallback sicuri che sappiamo esistere
24
+ return ["suno/bark-small", "microsoft/speecht5_tts", "espnet/kan-bayashi_ljspeech_vits"]
25
+
26
+ # Popoliamo la lista una volta sola all'avvio
27
+ LISTA_MODELLI_DINAMICA = recupera_modelli_reali()
28
 
29
+ def genera_audio(testo, model_id):
30
  if not testo.strip():
31
+ return "Inserisci del testo.", None
 
32
  try:
33
+ # Chiamata diretta con il model_id scelto dalla lista reale
34
+ audio_bytes = client.text_to_speech(testo, model=model_id)
35
+ return f"✅ Generato con: {model_id}", audio_bytes
 
 
 
 
 
 
 
 
36
  except Exception as e:
37
+ return f"❌ Errore: {str(e)}", None
38
 
39
+ # Interfaccia Gradio
40
  with gr.Blocks(theme=gr.themes.Soft()) as interfaccia:
41
+ gr.Markdown("# Browser Modelli Hugging Face TTS")
42
+ gr.Markdown("Questa lista è popolata automaticamente cercando i modelli reali sui server.")
43
 
44
  with gr.Row():
45
+ testo_input = gr.Textbox(label="Testo", placeholder="Scrivi qualcosa...")
46
+ # Il menu a tendina ora usa la lista scaricata dai server
47
+ modello_dropdown = gr.Dropdown(
48
+ choices=LISTA_MODELLI_DINAMICA,
49
+ value=LISTA_MODELLI_DINAMICA[0],
50
+ label="Seleziona Modello Esistente"
51
+ )
52
 
53
+ pulsante = gr.Button("Genera Audio", variant="primary")
54
+ status = gr.Textbox(label="Console")
55
+ audio = gr.Audio(label="Player")
56
 
57
+ pulsante.click(fn=genera_audio, inputs=[testo_input, modello_dropdown], outputs=[status, audio])
 
 
 
 
58
 
59
  interfaccia.launch()