La creación de aplicaciones para Windows que se aprovechan de los modelos de inteligencia artificial (IA) en el dispositivo puede parecer una tarea abrumadora. Implica definir el caso de uso, seleccionar y ajustar los modelos apropiados, y perfeccionar la lógica que rodea a estos modelos.
Aunque no existe un camino rápido y sencillo para aprender sobre IA en Windows, se ha desglosado un ejemplo de aplicación presentado en Build para ayudar a comprender cómo se pueden utilizar los modelos en el dispositivo para potenciar sus aplicaciones.
El ejemplo en cuestión es un Editor de Audio con IA, construido con WinUI3 y WinAppSDK. La funcionalidad de la aplicación en sí es mínima, pero proporciona un buen marco para mostrar la parte de IA de la app.
La aplicación de editor de audio utiliza varios modelos para habilitar el "recorte inteligente" de audio, siguiendo el flujo siguiente:
- El usuario sube un archivo de audio que incluye discurso reconocible.
- Proporciona una palabra o frase clave temática y una duración de recorte.
- El Editor de Audio genera un clip de audio recortado que contiene el segmento de audio más relevante relacionado con el tema proporcionado.
El interfaz de usuario de entrada para este flujo ayuda a visualizar lo que se espera en el ejemplo. Una vez que se hace clic en "Generar nuevo clip", el nuevo clip de audio se carga en la aplicación y puede reproducirse para su validación.
Para la tarea de "recorte inteligente", se utilizan tres modelos diferentes, todos ellos ONNX, para procesar los datos de audio de entrada y obtener el resultado esperado. A continuación, se desglosa el papel de cada modelo, lo que logra para este caso de uso y dónde se puede encontrar más información sobre ellos. En orden de uso:
-
Silero Voice Activity Detection (VAD): Este modelo se usa para segmentar inteligentemente el audio en partes más pequeñas para que puedan ser procesadas por el modelo de transcripción. Silero VAD detecta la actividad de la voz y corta en las pausas al hablar, resultando en segmentos de audio lo suficientemente pequeños para que Whisper los procese, pero siguen siendo porciones de habla seccionadas correctamente.
-
Whisper Tiny: Después de segmentar el audio, la salida se alimenta al modelo Whisper Tiny, que transcribe el discurso a texto. Se utiliza la versión Tiny de Whisper para optimizar el rendimiento, aunque conlleva algunas desventajas como limitaciones al inglés y una posible disminución en la precisión. Sin embargo, para este caso de uso, trabaja bien.
- MiniLM: El último modelo es un modelo de incrustación de texto llamado MiniLM, que mapea las frases escritas a un espacio vectorial multidimensional que encapsula toda la información semántica contenida en una frase. Se toma el texto transcrito del modelo Whisper, la frase temática de entrada y se utilizan para generar las incrustaciones de texto para ambos. Con estas incrustaciones, se puede calcular la Similitud de Coseno entre la frase temática y las secciones del texto del audio incrustado para obtener la sección más semánticamente similar del audio.
A partir de ahí, solo queda cortar el audio basado en las marcas de tiempo, cargarlo en el reproductor ¡y eso es todo!
Para quienes deseen ejecutar el ejemplo por sí mismos o sumergirse en la implementación para obtener más detalles sobre cómo funciona todo, pueden dirigirse al repositorio donde se encuentra el ejemplo. También hay disponible un documento de recorrido por el código para ofrecer un punto de entrada sobre cómo se escribió este ejemplo.
Existen muchos pasos previos para configurar todos los modelos en el proyecto, pero todos están definidos en el README. Es recomendable echar un vistazo. Para aprender más sobre el uso de modelos locales en Windows, se puede visitar la documentación correspondiente.