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:
- Solicita acceso en la consola de Amazon Bedrock (zona us-east-1).
- 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
- El usuario habla por el micrófono en la web.
- El audio se transmite al servidor.
- El servidor lo envía a Nova Sonic.
- Nova Sonic procesa y responde en voz (y texto).
- El navegador reproduce la respuesta.
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:
- Crear un bucket S3 y subir los PDFs.
- 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.
- 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:
- El usuario habla.
- Nova Sonic detecta si necesita información extra.
- Consulta la Knowledge Base.
- Recupera el contexto relevante.
- Genera una respuesta personalizada con ese contenido.
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...
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:
- Se crea un botón para subir archivos.
- El archivo se guarda en el bucket S3.
- Se sincroniza con la Knowledge Base.
- 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.
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)
hermoso
Omgg! This is amazing!!
Amazingggg!!! Love it
Amazing!!