import streamlit as st import base64 import io import os from openai import OpenAI # ====================================== # CONFIGURACIÓN DE STREAMLIT # ====================================== st.set_page_config( page_title="AIDEN – Voz Latina", page_icon="🎙️", layout="centered" ) # ====================================== # LEER API KEY DESDE ENTORNO (HF Secrets) # ====================================== API_KEY = os.environ.get("OPENAI_API_KEY") if not API_KEY: st.error("❌ ERROR: No se encontró OPENAI_API_KEY en HuggingFace Secrets.") st.stop() client = OpenAI(api_key=API_KEY) # ====================================== # FUNCIONES AUXILIARES # ====================================== def cargar_logo(path): with open(path, "rb") as f: return base64.b64encode(f.read()).decode() logo_b64 = cargar_logo("assets/aiden_logo.png") def sintetizar_voz(texto): """Texto → Voz WAV usando OpenAI.""" reply = client.audio.speech.create( model="gpt-4o-mini-tts", voice="male", format="wav", input=texto ) return reply.read() def transcribir_audio(audio_bytes): """Voz → Texto (Whisper-1).""" transcript = client.audio.transcriptions.create( model="whisper-1", file=("audio.wav", audio_bytes, "audio/wav") ) return transcript.text def generar_respuesta(prompt): """Respuesta estilo AIDEN.""" completion = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": ( "Eres AIDEN, IA de voz profesional creada por JMC Studio Digital " "en Guayaquil por George Márquez. Respondes SIEMPRE en español latino, " "tono humano, muy natural, cálido, profesional." )}, {"role": "user", "content": prompt} ], temperature=0.7, max_tokens=300 ) return completion.choices[0].message.content # ====================================== # INTERFAZ # ====================================== st.markdown( f"""
Habla con AIDEN usando tu micrófono — voz natural, fluida y profesional.
AIDEN — Desarrollado por JMC Studio Digital
", unsafe_allow_html=True )