Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -2,7 +2,10 @@ import streamlit as st
|
|
| 2 |
import openai
|
| 3 |
import PyPDF2
|
| 4 |
from docx import Document
|
|
|
|
| 5 |
from dotenv import load_dotenv
|
|
|
|
|
|
|
| 6 |
|
| 7 |
# Configuraci贸n de la interfaz
|
| 8 |
st.set_page_config(page_title="Boti Asistente", layout="wide", initial_sidebar_state="expanded")
|
|
@@ -12,13 +15,43 @@ load_dotenv()
|
|
| 12 |
openai.api_key = os.getenv("OPENAI_API_KEY")
|
| 13 |
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
|
| 14 |
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
| 20 |
)
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
# Estilos personalizados
|
| 24 |
st.markdown(
|
|
@@ -83,11 +116,9 @@ def pagina_asistente():
|
|
| 83 |
)
|
| 84 |
|
| 85 |
def procesar_documento_contenido(contenido):
|
| 86 |
-
# Aqu铆 podr铆as usar OpenAI para procesar el contenido del documento
|
| 87 |
return obtener_respuesta(f"Procesa el siguiente contenido: {contenido}")
|
| 88 |
|
| 89 |
def analizar_documento(contenido):
|
| 90 |
-
# Aqu铆 podr铆as usar OpenAI para analizar la coherencia, pertinencia y calidad del contenido
|
| 91 |
analisis = obtener_respuesta(f"Analiza el siguiente contenido: {contenido}")
|
| 92 |
calificacion = obtener_respuesta(f"Califica el contenido del 1 al 10: {contenido}")
|
| 93 |
return analisis, calificacion
|
|
|
|
| 2 |
import openai
|
| 3 |
import PyPDF2
|
| 4 |
from docx import Document
|
| 5 |
+
from google.cloud import texttospeech, speech
|
| 6 |
from dotenv import load_dotenv
|
| 7 |
+
import os
|
| 8 |
+
import tempfile
|
| 9 |
|
| 10 |
# Configuraci贸n de la interfaz
|
| 11 |
st.set_page_config(page_title="Boti Asistente", layout="wide", initial_sidebar_state="expanded")
|
|
|
|
| 15 |
openai.api_key = os.getenv("OPENAI_API_KEY")
|
| 16 |
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
|
| 17 |
|
| 18 |
+
# Funci贸n para obtener respuesta de OpenAI
|
| 19 |
+
def obtener_respuesta(pregunta, modelo="gpt-4", temperatura=0.5):
|
| 20 |
+
response = openai.ChatCompletion.create(
|
| 21 |
+
model=modelo,
|
| 22 |
+
messages=[{"role": "system", "content": "Eres Boty un asistente de la empresa Botidinamix Ai para el desarrollo y implementacion de asistentes virtuales automatizados."},
|
| 23 |
+
{"role": "user", "content": pregunta}],
|
| 24 |
+
temperature=temperatura,
|
| 25 |
+
max_tokens=150,
|
| 26 |
)
|
| 27 |
+
respuesta = response['choices'][0]['message']['content']
|
| 28 |
+
return respuesta
|
| 29 |
+
|
| 30 |
+
# Funci贸n para convertir texto a voz usando Google Cloud Text-to-Speech
|
| 31 |
+
def text_to_speech(text):
|
| 32 |
+
client = texttospeech.TextToSpeechClient()
|
| 33 |
+
synthesis_input = texttospeech.SynthesisInput(text=text)
|
| 34 |
+
voice = texttospeech.VoiceSelectionParams(language_code="es-ES", ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL)
|
| 35 |
+
audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3)
|
| 36 |
+
response = client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config)
|
| 37 |
+
audio_path = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3").name
|
| 38 |
+
with open(audio_path, "wb") as out:
|
| 39 |
+
out.write(response.audio_content)
|
| 40 |
+
return audio_path
|
| 41 |
+
|
| 42 |
+
# Funci贸n para transcribir audio a texto usando Google Cloud Speech-to-Text
|
| 43 |
+
def transcribir_audio(audio_bytes):
|
| 44 |
+
client = speech.SpeechClient()
|
| 45 |
+
audio = speech.RecognitionAudio(content=audio_bytes)
|
| 46 |
+
config = speech.RecognitionConfig(
|
| 47 |
+
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
|
| 48 |
+
sample_rate_hertz=16000,
|
| 49 |
+
language_code="es-ES",
|
| 50 |
+
)
|
| 51 |
+
response = client.recognize(config=config, audio=audio)
|
| 52 |
+
for result in response.results:
|
| 53 |
+
return result.alternatives[0].transcript
|
| 54 |
+
return ""
|
| 55 |
|
| 56 |
# Estilos personalizados
|
| 57 |
st.markdown(
|
|
|
|
| 116 |
)
|
| 117 |
|
| 118 |
def procesar_documento_contenido(contenido):
|
|
|
|
| 119 |
return obtener_respuesta(f"Procesa el siguiente contenido: {contenido}")
|
| 120 |
|
| 121 |
def analizar_documento(contenido):
|
|
|
|
| 122 |
analisis = obtener_respuesta(f"Analiza el siguiente contenido: {contenido}")
|
| 123 |
calificacion = obtener_respuesta(f"Califica el contenido del 1 al 10: {contenido}")
|
| 124 |
return analisis, calificacion
|