Downloads · 30 days
0
hmgarcia/TraductorNassi
TraductorNassi is a machine learning model from hmgarcia. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
import streamlit as st from googletrans import Translator from gtts import gTTS import os import random import pyperclip
Downloads · 30 days
0
Access
Public
Updated Oct 7, 2025
Repo size
—
Likes
0
Public
Click a slice to open those files.
.md4.3 KB · 74%
From the Hugging Face model README
import streamlit as st from googletrans import Translator from gtts import gTTS import os import random import pyperclip
st.set_page_config( page_title="🌐 Traductor Nassi 8.0", page_icon="🌀", layout="wide", )
st.markdown("<h1 style='text-align:center;color:#4B0082;'>🌐 Traductor Nassi 8.0</h1>", unsafe_allow_html=True) st.markdown("<p style='text-align:center;color:#555;'>Español ↔ Nassi ↔ Otros idiomas con audio y copia al portapapeles</p>", unsafe_allow_html=True)
idiomas = { "Español": "es", "Inglés": "en", "Francés": "fr", "Italiano": "it", "Chino Tradicional": "zh-TW", "Alemán": "de", "Ruso": "ru", "Árabe": "ar", "Portugués": "pt", "Nassi": "ns" }
prefijos = ["ba","ge","kra","tru","vel","dra","fre","blen"] raices = ["mor","stein","grun","hald","flok","bern","trum","fald","norf","tharn","plotz"] sufijos = ["en","ar","um","ich","or","un","et","al"] diccionario_nassi = {"estrenocleidomastoideo": "Saramarambiba"}
def generar_palabra_nassi(): palabra = random.choice(prefijos) + random.choice(raices) + random.choice(sufijos) return palabra.capitalize()
def traducir_a_nassi(texto): palabras = texto.lower().split() traduccion = [] for palabra in palabras: if palabra not in diccionario_nassi: diccionario_nassi[palabra] = generar_palabra_nassi() traduccion.append(diccionario_nassi[palabra]) return " ".join(traduccion)
def traducir_de_nassi(texto): inverso = {v.lower(): k for k, v in diccionario_nassi.items()} palabras = texto.lower().split() traduccion = [inverso.get(p, f"[{p}]") for p in palabras] return " ".join(traduccion)
translator = Translator()
def traducir_a_idioma(texto, destino): code = idiomas.get(destino) if not code: return texto if code == "ns": return traducir_a_nassi(texto) return translator.translate(texto, src="es", dest=code).text
def reproducir_audio(texto, lang): if lang == "ns": lang = "de" tts = gTTS(texto, lang=lang) tts.save("voz.mp3") st.audio("voz.mp3", format="audio/mp3")
def copiar_texto(texto): try: pyperclip.copy(texto) st.success("✅ Copiado al portapapeles") except: st.warning("⚠ No se pudo copiar (depende del navegador)")
st.markdown("---") col1, col2 = st.columns([3,2])
with col1: texto = st.text_area("✍ Escribe tu frase en Español o Nassi:", height=150) origen = st.selectbox("Desde:", list(idiomas.keys()), index=0) destino = st.selectbox("Hacia:", list(idiomas.keys()), index=8)
with col2: st.markdown("<h3 style='color:#4B0082;'>Acciones</h3>", unsafe_allow_html=True) if st.button("🌀 Traducir", key="traducir"): if texto.strip() == "": st.warning("Por favor escribe algo.") else: if origen == "Nassi" and destino == "Español": resultado = traducir_de_nassi(texto) elif origen == "Español" and destino == "Nassi": resultado = traducir_a_nassi(texto) elif origen == destino: resultado = texto else: if origen == "Nassi": texto_esp = traducir_de_nassi(texto) else: texto_esp = texto resultado = traducir_a_idioma(texto_esp, destino) st.session_state["resultado"] = resultado st.success("✅ Traducción lista")
if "resultado" in st.session_state:
st.text_area("📄 Resultado:", value=st.session_state["resultado"], height=120)
if st.button("📋 Copiar Traducción", key="copiar"):
copiar_texto(st.session_state["resultado"])
if st.button("🔊 Reproducir Audio", key="audio"):
reproducir_audio(st.session_state["resultado"], idiomas[destino])
if "estrenocleidomastoideo" in texto.lower():
st.info("Nota: 'estrenocleidomastoideo' en Nassi siempre es *Saramarambiba*")