Desbloquea el Asistente de Conversación de IA en Tiempo Real para tu Teléfono

Desbloquea el copiloto de conversación de IA en tiempo real para tu teléfono. Construye una herramienta poderosa que transcribe y analiza conversaciones en tiempo real, proporcionando sugerencias y comentarios instantáneos para mejorar la comunicación. Mejora tus entrevistas, reuniones e interacciones sociales con este asistente impulsado por IA.

16 de febrero de 2025

party-gif

Este artículo de blog explora el potencial de un copiloto de conversación de IA en tiempo real que puede ayudar con tareas como entrevistas de trabajo e investigación de usuarios. El autor muestra el desarrollo de una aplicación web y móvil que aprovecha modelos avanzados de conversión de voz a texto y de lenguaje para proporcionar capacidades de transcripción y sugerencia instantáneas, destacando los beneficios de una herramienta así para mejorar la comunicación y la productividad.

Introducción al copiloto de conversación de IA en tiempo real

Hace casi un año, alrededor de marzo de 2023, cuando ChatGPT acaba de salir y se convirtió en el tema más candente del mundo, recuerdo claramente ver una demostración de Arony donde construyó un "Interview Breaker" - una herramienta de ChatGPT que ayuda a aprobar entrevistas de trabajo. Esta semana, construí algo llamado el "Interview Breaker" - un prototipo hecho con ChatGPT para aprobar entrevistas de trabajo. Toma tu experiencia previa, escucha tu conversación con el entrevistador y te dice qué decir, llenándote de cosas que podrías no saber.

Como arquitecto senior, al priorizar en qué enfocarme para un servicio backend, priorizo la escalabilidad. Este tipo de herramienta va a causar estragos en el proceso de entrevistas de trabajo. Por lo general, cuando surgen estas grandes tecnologías, como las computadoras o Internet, cambian todos los procesos que surgieron antes que ellas. Eso significa que algunas de estas preguntas podrían no tener sentido hacerlas si miramos muy lejos en el futuro.

Pensé que era una idea fantástica porque en ese entonces, en realidad estaba pasando por algunos procesos de entrevistas de trabajo, así que me encantaría tener una herramienta en tiempo real que realmente pueda ayudarme a aprobarla. De hecho, intenté construir ese prototipo donde usaba un modelo de texto a voz para generar la transcripción y también usaba un modelo de lenguaje grande para generar respuestas, pero ese prototipo nunca funcionó bien en la vida real. Uno de los requisitos difíciles para esos asistentes de entrevistas o conversaciones en tiempo real es que deben tener una latencia baja y ser en tiempo real. Si tardara 30-40 segundos en generar algunos resultados, realmente no funcionaría. Desafortunadamente, ese fue el caso el año pasado en marzo, ya que tanto el modelo de texto a voz como el modelo de lenguaje grande tardaron bastante tiempo en inferir. Este era un proyecto sencillo en teoría, pero muy difícil de construir un producto utilizable en la realidad.

Desafíos en la construcción de transcripción en tiempo real y inferencia rápida

Sin embargo, un par de meses después, vi otro producto que mostraba un escenario similar pero con un rendimiento casi en tiempo real. En la ingeniería aeroespacial, como en los motores a reacción o el reingreso de naves espaciales, ¿cómo abordas estos desafíos?

Hay dos componentes clave para construir un asistente de conversación en tiempo real: una transcripción en tiempo real y una inferencia rápida.

Transcripción en tiempo real

Lograr la transcripción en tiempo real es uno de los mayores desafíos. Los modelos de texto a voz típicos como Whisper no están diseñados para escenarios de transmisión, donde el audio se procesa en pequeños fragmentos en lugar de la grabación completa.

Para superar esto, una solución común es crear un bucle recurrente que capture continuamente pequeños fragmentos de audio (por ejemplo, cada 2-5 segundos), los envíe al modelo de texto a voz y una los pequeños fragmentos de transcripción. Este enfoque requiere optimizaciones para garantizar la precisión, como comparar las marcas de tiempo de las palabras conectoras para mejorar la transcripción final.

Afortunadamente, la tecnología de texto a voz ha evolucionado rápidamente, y ahora hay soluciones que permiten la transcripción en tiempo real, como usar modelos increíblemente rápidos alojados en plataformas como Replicate o implementar modelos ligeros como Whisper Kit directamente en dispositivos móviles.

Inferencia rápida

El segundo desafío es lograr una inferencia muy rápida con el modelo de lenguaje grande para generar sugerencias en tiempo real. Para abordar esto:

  1. Elige un modelo de lenguaje rápido y pequeño: Los modelos como Meteo 7B son mucho más pequeños y más rápidos que GPT-4, lo que permite una generación de respuestas más rápida con menos recursos informáticos.

  2. Reducir el tamaño de la entrada: A medida que la conversación se vuelve más larga, la entrada al modelo de lenguaje puede volverse demasiado grande. Se pueden utilizar técnicas como el resumen del modelo de lenguaje para extraer solo la información relevante y reducir el tamaño de la entrada.

  3. Optimizar la generación de salida: Se pueden realizar más optimizaciones para reducir el recuento de tokens de salida, como utilizar métodos de ingeniería de indicaciones.

Al combinar estas técnicas para la transcripción en tiempo real y la inferencia rápida, es posible construir un asistente de conversación en tiempo real altamente receptivo que pueda proporcionar sugerencias y apoyo valiosos durante las conversaciones.

Construcción de una demostración de copiloto de conversación basada en la web

Para construir una demostración de un asistente de conversación basado en la web, usaremos una combinación de Flask (un marco web de Python) y Replicate (una plataforma para ejecutar modelos de IA de código abierto).

Los componentes clave son:

  1. Transcripción en tiempo real: Usaremos un modelo de texto a voz rápido de Replicate para generar una transcripción en tiempo real de la conversación. Esto implica capturar continuamente pequeños fragmentos de audio, enviarlos al modelo de texto a voz y unir los resultados.

  2. Inferencia rápida: Usaremos un modelo de lenguaje pequeño y rápido de Replicate (como Minitram) para generar sugerencias y respuestas basadas en la transcripción en tiempo real. También exploraremos técnicas como reducir el tamaño de la entrada y resumir la conversación para mejorar la velocidad.

La aplicación web tendrá las siguientes características:

  • Un campo de texto para que el usuario proporcione contexto sobre la conversación.
  • Un botón "Grabar" para iniciar y detener la grabación de audio.
  • Un botón "Obtener sugerencia" para activar el modelo de lenguaje y obtener sugerencias.
  • Una visualización en tiempo real de la transcripción.
  • Una visualización de las sugerencias generadas.

Aquí está el proceso paso a paso:

  1. Configurar la aplicación Flask:

    • Crear el archivo app.py e importar las bibliotecas necesarias, incluido el SDK de Python de Replicate.
    • Definir las rutas Flask para la página de inicio y el punto final de procesamiento de audio.
    • Configurar el bucket de AWS S3 y las credenciales para almacenar temporalmente las grabaciones de audio.
  2. Implementar la funcionalidad de transcripción en tiempo real:

    • Usar el modelo Replicate Whisper para capturar y transcribir continuamente fragmentos de audio.
    • Optimizar la transcripción manejando los límites de las palabras y manteniendo el contexto entre los fragmentos.
  3. Implementar la funcionalidad de inferencia rápida:

    • Usar el modelo Replicate Minitram (o un modelo de lenguaje pequeño y rápido similar) para generar sugerencias basadas en la transcripción completa.
    • Explorar técnicas como reducir el tamaño de la entrada y resumir la conversación para mejorar la velocidad de inferencia.
  4. Construir el front-end con HTML y JavaScript:

    • Crear el archivo index.html en la carpeta templates.
    • Definir la estructura HTML con el campo de texto, el botón de grabación y la visualización de sugerencias.
    • Implementar la lógica de JavaScript para manejar la grabación, la carga de audio y las llamadas API al backend de Flask.
  5. Probar y desplegar la aplicación web:

    • Ejecutar la aplicación Flask localmente y probar la funcionalidad.
    • Implementar la aplicación en una plataforma de alojamiento (por ejemplo, Heroku, AWS o tu propio servidor).

Siguiendo estos pasos, podrás construir una demostración de un asistente de conversación basado en la web que pueda escuchar conversaciones, generar transcripciones en tiempo real y proporcionar sugerencias en función del contexto.

Aprovechando el kit Whisper para un copiloto de conversación móvil

Después de ver la impresionante demostración del asistente de conversación basado en la web, decidí explorar el potencial de construir una versión móvil usando el marco de trabajo de código abierto Whisper Kit. Whisper Kit proporciona un paquete Swift que permite la implementación del modelo de texto a voz Whisper directamente en dispositivos iOS, lo que permite la transcripción en tiempo real con una latencia mínima.

Para comenzar, cloné el repositorio de GitHub de Whisper Kit y abrí el proyecto de ejemplo en Xcode. El proyecto incluye una carpeta whisper-ax, que contiene el código fuente de una aplicación iOS de muestra que demuestra el uso de Whisper Kit.

En el archivo ContentView.swift, primero definí algunas variables de estado adicionales para manejar la entrada del indicador y el resumen de la respuesta de la API del modelo de lenguaje grande. Luego agregué un campo de entrada para que el usuario personalice el indicador, que se utilizará para proporcionar contexto al modelo de lenguaje grande.

A continuación, implementé la función getSuggestion(), que es responsable de enviar la transcripción y el indicador a la API de Replicate para generar una respuesta del modelo de lenguaje Mistral. Esta función maneja la naturaleza de transmisión de la API de Replicate, verificando continuamente el estado hasta que se complete la respuesta y luego actualizando la variable de estado API_response_summary con la sugerencia generada.

Finalmente, agregué un botón "Obtener sugerencia" que activa la función getSuggestion() y mostré el resumen de la respuesta de la API debajo de la transcripción en tiempo real.

La aplicación iOS resultante permite a los usuarios iniciar una conversación, ver la transcripción en tiempo real y recibir sugerencias instantáneas del modelo de lenguaje grande para ayudar a guiar la conversación. El uso de Whisper Kit para la funcionalidad de texto a voz, combinado con la integración de la API de Replicate, proporciona una experiencia de asistente de conversación fluida y receptiva directamente en el dispositivo móvil del usuario.

Este enfoque desbloquea nuevas posibilidades para la asistencia conversacional en tiempo real y consciente del contexto, empoderando a los usuarios con un apoyo inteligente durante discusiones, entrevistas y interacciones sociales importantes. Al aprovechar los últimos avances en reconocimiento de voz y modelos de lenguaje grande, el asistente de conversación móvil puede convertirse en una herramienta valiosa para mejorar la comunicación y la productividad.

Estoy emocionado de continuar refinando y puliendo esta aplicación de asistente de conversación móvil, y espero compartirla con la comunidad una vez que esté lista para su lanzamiento. Por favor, hágame saber si tiene algún interés en probar la aplicación o proporcionar comentarios sobre su desarrollo.

Conclusión

En conclusión, el desarrollo de un asistente de conversación en tiempo real es una tarea compleja que requiere abordar varios desafíos clave. Los desafíos principales incluyen:

  1. Generación de transcripción en tiempo real: Lograr una transcripción de texto a voz de baja latencia y precisa es crucial para proporcionar comentarios en tiempo real. Técnicas como usar un modelo de reconocimiento de voz en transmisión y optimizar la conexión entre los fragmentos de audio y el texto transcrito son esenciales.

  2. Inferencia rápida del modelo de lenguaje grande: Generar sugerencias y respuestas relevantes rápidamente requiere el uso de modelos de lenguaje más pequeños y especializados que puedan proporcionar tiempos de inferencia rápidos. Técnicas como reducir el tamaño del token de entrada y resumir el historial de la conversación pueden ayudar a mejorar el rendimiento.

  3. Integración sin problemas: Combinar la generación de transcripción en tiempo real y la inferencia del modelo de lenguaje grande en una aplicación cohesiva y fácil de usar es crucial para proporcionar una experiencia fluida y efectiva.

La demostración mostró cómo se pueden abordar estos desafíos utilizando una combinación de tecnologías, incluidos el modelo de texto a voz Whisper, el modelo de lenguaje Minstrel y la plataforma Replicate para una implementación sencilla. Las aplicaciones web y móviles resultantes proporcionan transcripción en tiempo real y generación de sugerencias, mostrando el potencial de esta tecnología para mejorar diversos escenarios de conversación, como entrevistas de trabajo, entrevistas de investigación de usuarios e interacciones sociales.

En general, el desarrollo de un asistente de conversación en tiempo real es un área prometedora de investigación y desarrollo, con el potencial de mejorar significativamente la calidad y la eficacia de la comunicación entre humanos.

Preguntas más frecuentes