DEV Community

Cover image for Mejora tu English Speaking con Amazon Nova Sonic y RAG
Camila Hinojosa Anez
Camila Hinojosa Anez

Posted on

Mejora tu English Speaking con Amazon Nova Sonic y RAG

Enlace al repositorio: https://github.com/camila-hinojosa-anez/practice-speaking-with-sonic

"La práctica hace al maestro", dice el dicho. Pero, ¿qué pasa cuando queremos practicar un nuevo idioma y no tenemos con quién? A muchos nos pasa que, aunque nos esforzamos por aprender, sin alguien con quien conversar, perdemos el ritmo. Me pasó a los 12 años: estudiaba francés, me iba bien, pero al no tener con quién practicarlo, simplemente lo olvidé.

Esto pasa mucho y es muy común que suceda con el inglés también. Aunque es uno de los idiomas más hablados en el mundo, muchas veces no sabemos cómo ni con quién practicar. Por suerte, hoy tenemos Amazon Nova Sonic que puede ayudarnos a que NO se nos olvide el inglés y a mejorarlo.

🎥 Haz clic aquí para ver el video de demostración

Con Amazon Nova Sonic y una técnica llamada RAG (Retrieval Augmented Generation), podemos construir an excellent teacher que:

  • Entiende lo que decimos.
  • Detecta errores de pronunciación o gramática.
  • Nos entrega sugerencias de mejora.
  • Y lo mejor: conversa con nosotros sobre temas que elegimos.

En este proyecto, por ejemplo, el tutor, al cual le diremos teacher, se configura para conversar sobre historias en PDF que subimos a una base de conocimientos (knowledge bases). De esta forma, la práctica es personalizada, entretenida y guiada por nuestras propias elecciones.

Es importante mencionar que esta es una de las fases del proyecto. En futuras etapas, se planea implementar capacidades de RAG con imágenes y ajustar el prompt para preparar a estudiantes que deseen rendir certificaciones como Cambridge o TOEFL, donde se requiere hablar sobre una imagen o un tema específico, así como hacer y responder preguntas relacionadas.

🗣️ ¿Qué es Amazon Nova Sonic?

Amazon Nova Sonic es un nuevo modelo de lenguaje que permite mantener conversaciones de voz en tiempo real, detectando no solo lo que se dice, sino cómo se dice: tono, ritmo, fluidez. Además, puede conectarse vía API gracias a Amazon Bedrock.

Conoce más detalles en este link

Para comenzar a usarlo:

  1. Solicita acceso en la consola de Amazon Bedrock (zona us-east-1).
  2. Usa los ejemplos del repositorio oficial ya que hay mucha información y mucho código útil ya implementado, de esta forma podrás ver el sistema que fue implementado, el cual consiste de un servidor que gestiona la conexión con Nova Sonic y el sitio web para hablar, escuchar y ver el historial del chat

Ciclo de Conversación

  1. El usuario habla por el micrófono en la web.
  2. El audio se transmite al servidor.
  3. El servidor lo envía a Nova Sonic.
  4. Nova Sonic procesa y responde en voz (y texto).
  5. El navegador reproduce la respuesta.

Ciclo de conversación original

Personalizando al teacher con RAG y una Knowledge Base

Para que el teacher hable de temas específicos (como una historia en PDF), usamos RAG, una técnica que combina un modelo generativo con una base de datos de información (Knowledge Bases).

Pasos para configurar esto:

  1. Crear un bucket S3 y subir los PDFs.
  2. Desde Amazon Bedrock, crear una Knowledge Base:
    • Definir el bucket de origen.
    • Usar el modelo de embeddings Titan Text Embeddings V2.
    • Usar Amazon OpenSearch Serverless como Vector DB.
  3. Probar la Knowledge Base usando Amazon Nova Pro.

Conectando el modelo con la Knowledge Base

El ciclo cambia un poco cuando se usa RAG, pero lo hace mas interesante y divertido:

  1. El usuario habla.
  2. Nova Sonic detecta si necesita información extra.
  3. Consulta la Knowledge Base.
  4. Recupera el contexto relevante.
  5. Genera una respuesta personalizada con ese contenido.

Ciclo de conversación con RAG

Ajustando el Prompt del teacher

En el archivo consts.ts, definimos un prompt especial que le dice a Nova Sonic cómo comportarse como teacher. Las claves de este prompt son:

  • Siempre ser amable y alentador.
  • Dar retroalimentación sobre pronunciación y gramática.
  • Pedir respuestas de longitud media.
  • Evaluar con estrellas al final en una escala de 1 a 5 estrellas.

(Hay que definir el prompt en inglés ya que Amazon Nova Sonic por los momentos sólo habla inglés, lo que lo convierte en nuestro teacher exclusivo 🤪)

aquí hay un extracto del prompt el cual puedes ver completo en el repositorio.

Act as a kind and encouraging English teacher...
Ask questions to start and continue conversation about the story...
Give specific feedback on pronunciation...
Enter fullscreen mode Exit fullscreen mode

Permitir subir nuevos archivos desde la interfaz

Para que el usuario pueda hablar sobre nuevas historias, se agregó la un botón para subir PDFs desde la interfaz web:

  1. Se crea un botón para subir archivos.
  2. El archivo se guarda en el bucket S3.
  3. Se sincroniza con la Knowledge Base.
  4. La historia ya está disponible para practicar.

Esto fue implementado utilizando Amazon Q con el siguiente prompt:

Implement a file upload feature for the Amazon Nova Sonic TypeScript application that allows users to upload documents to 
an S3 bucket and synchronize them with a Bedrock Knowledge Base for RAG capabilities. The implementation should:

1. Create a UI button in the web interface (public/index.html) for file uploads
2. Handle file selection with appropriate size limits (max 10MB)
3. Upload selected files to the configured S3 bucket using the existing environment variables
4. Trigger Bedrock Knowledge Base synchronization after successful upload
5. Display sync status to the user
6. Ensure proper error handling and user feedback

The implementation should leverage the existing project structure and environment variables:
- S3_BUCKET_NAME for the target S3 bucket
- KNOWLEDGE_BASE_ID for the Bedrock Knowledge Base
- DATA_SOURCE_ID for the data source within the Knowledge Base

Use the existing AWS client configurations and follow the project's TypeScript patterns. The implementation should include:

1. Frontend changes to public/index.html and related JS files
2. Backend route handling in src/routes/upload.ts
3. S3 upload functionality using @aws-sdk/client-s3
4. Bedrock Knowledge Base synchronization using @aws-sdk/client-bedrock-agent
5. Proper error handling and status reporting

The final implementation should allow users to upload documents that will be immediately available for the RAG system, enabling the Nova Sonic model to reference the newly uploaded content in conversations.
Enter fullscreen mode Exit fullscreen mode

Con eso, Amazon Q generó una implementación que crea un botón en index.html para seleccionar archivos PDF, limita el tamaño del archivo (máximo 10MB), sube el archivo al bucket S3 definido en las variables de entorno, inicia la sincronización automática con la Knowledge Base y muestra al usuario el estado de sincronización.

👀 si tienes el BuilderID puedes utilizar Amazon Q gratiis !

Tecnologías utilizadas:

  • @aws-sdk/client-s3 para la carga a S3.
  • @aws-sdk/client-bedrock-agent para sincronizar con la KB.

Esto permite que cualquier nuevo documento esté inmediatamente disponible para que Nova Sonic lo use en futuras conversaciones, manteniendo el sistema actualizado según los intereses del usuario.

Ahora ya sabes que con Amazon Nova Sonic y RAG puedes crear un english speaking teacher personalizado y que te motive. Es ideal para practicar speaking sobre temas que te interesan, con retroalimentación constante y positiva.

Todo el código y funcionalidades están disponibles en el repositorio. Puedes probarlo y ajustar el prompt a tu estilo de enseñanza

Nota importante sobre el código base

Este proyecto se construyó a partir del código de ejemplo disponible públicamente en el repositorio oficial de AWS:
🔗 amazon-nova-samples

Se reutilizaron varias estructuras y componentes clave, como la implementación del servidor, la configuración del cliente, y las rutas base para la conversación con Nova Sonic. A partir de esa base, se realizaron modificaciones, integraciones con una Knowledge Base personalizada, mejoras en el prompt y una interfaz ajustada para prácticas educativas. Todo esto con el fin de convertirlo en un teacher interactivo y adaptable para practicar inglés con IA.

Si te gustó este proyecto, ¡compártelo con alguien que esté aprendiendo inglés y/o quiera experimentar con IA!

Muchas gracias,
Camila Hinojosa Añez

Top comments (4)

Collapse
 
ensamblador profile image
ensamblador

hermoso

Collapse
 
catalina_connleyton_4c profile image
CATALINA . CONN LEYTON

Omgg! This is amazing!!

Collapse
 
antonia_isidoragajardoc profile image
ANTONIA ISIDORA GAJARDO CHICHIZOLA

Amazingggg!!! Love it

Collapse
 
antonia_banduc_a5aa4cf42c profile image
Antonia Banduc

Amazing!!