Cómo publicar traducciones de Microsoft Translate en Microsoft Stream
Tags: stream, webvtt, translator, ia
Published: 2020-05-12 18:59:10

## IA en nuestra caja de herramientas
Las aplicaciones que usamos en nuestro día a día, van enriqueciéndose con capacidades de Inteligencia Artificial (IA), es algo que esperamos y que tenemos que incorporar como una herramienta en nuestra estrategia al desarrollar aplicaciones. Muchas veces esa caja de herramientas no nos permite conectarlas e intercambiar resultados como nos gustaría, por lo que necesitaremos incluir el pegamento especial para disponer de la mejor solución. 
Os invito a echar un vistazo a los [servicios cognitivos de Azure](https://azure.microsoft.com/es-es/services/cognitive-services), con servicios entorno a la voz, análisis de texto, traducción, etc. Uno de mis favoritos es el de [lector inmersivo](https://azure.microsoft.com/es-es/services/cognitive-services/immersive-reader/) que nos permite mejorar la comprensión y progreso en la lectura. 

## ¿Quién no espera traducción automática de una presentación?  
Quería compartir un ejemplo concreto de las necesidades de integración con un caso práctico. En este caso me consultaron la posibilidad de traducir una presentación a 12 idiomas, dado que el equipo se encuentra distribuido geográficamente y requerían del material localizado para cada equipo.
### ¿Cómo aprovechar las capacidades de la IA?
Una forma natural de hacer una presentación es emplear PowerPoint, permitiendo la traducción simultánea en varios idiomas. Esto es algo que está [disponible de forma temprana](https://support.office.com/en-us/article/live-presentations-039aa2cc-67fa-4fb5-9677-46ed8a060c8c) en Microsoft 365 y que podrán usar todos los usuarios al hacer sus presentaciones. Basta enlazar con el QR y verás la traducción durante la sesión.
![Live PowerPoint](https://raw.githubusercontent.com/carloshm/devto-articles/master/images/live-powerpoint.png)
Otra opción es hacer uso de Microsoft Translator (que usa los mismos servicios de Azure), y que dispone de una [Add-in para PowerPoint](https://www.microsoft.com/en-us/translator/apps/presentation-translator/), creado a partir de un proyecto del [Garaje](https://www.microsoft.com/en-us/garage/wall-of-fame/presentation-translator/) que deberías conocer sino es el caso, así como explorar el resto de proyectos ;). La experiencia es similar a la de Live PowerPoint (de hecho este último está basado en el proyecto de Garaje), permitiendo la descarga de los subtítulos.
El inconveniente es que no es un formato que podamos importar, aunque sí dispone del texto traducido, original y el momento en el que se generó.
```Text
==================================
Transcript WXEIJ
Correlation ID = 1d78d135-e3ea-2101-6f2f-78fdb756c783
Date
Tue May 12 2020 10:27:27 GMT+0200 (Central European Summer Time)
==================================

Conversation WXEIJ

Presenter @ 10:27:31
Translation (English): 
Recognition (Spanish): (undefined)

Presenter @ 10:28:04
Translation (English): It's in English, too.
Recognition (Spanish): (Está en inglés, también.)

Presenter @ 10:28:07
Translation (English): Ok.
Recognition (Spanish): (Vale.)
....
```

Hasta aquí tenemos casi todos los ingredientes:
- Generación de subtítulos mediante Microsoft Translator (y servicios de Azure) con formato personalizado
- Grabación de la presentación mediante [PowerPoint](https://support.office.com/es-es/article/v%c3%addeo-grabar-presentaciones-2570dff5-f81c-40bc-b404-e04e95ffab33?ui=es-ES&rs=es-ES&ad=ES) o compartiendo en una sesión de [Teams](https://support.office.com/es-es/article/grabar-una-reuni%c3%b3n-en-teams-34dfbe7f-b07d-4a27-b4c6-de62f1348c24?ui=es-ES&rs=es-ES&ad=ES)

El beneficio de usar Microsoft Teams para la grabación, es que dicha grabación se publica en Microsoft Stream en el primer caso, deberemos grabar y publicarlo manualmente), donde podremos editar y añadir subtítulos. Si no conocéis Stream, os dejo un video introductorio.
{% youtube RaFwmFAJUwY %}

### Formatos de transcripción y portabilidad
Como comentaba desde Microsoft Stream, podemos [importar subtítulos](https://docs.microsoft.com/es-es/stream/portal-add-subtitles-captions) en formato WebVTT para todos los idiomas que queríamos. Esto permite que los usuarios naveguen hasta el vídeo de la presentación y puedan seleccionar su idioma preferido.
![Subtítulos en Stream](https://raw.githubusercontent.com/carloshm/devto-articles/master/images/subtitles_stream.jpg)
Y aquí es donde el pegamento que comentaba es necesario. Tenemos los subtítulos de las traducciones en un formato personalizado, y por otro lado Microsoft Stream nos solicita el formato estándar WebVTT. 
Lo primero es intentar no tener que reescribir una librería para generar ficheros WebVTT. Una búsqueda rápida me permitió localizar esta library en dotnet (para aplicaciones de consola multiplataforma rápida, mi preferencia). 
{% github https://github.com/svm-git/WebVTT %}

El inconveniente principal es que hace uso de .NET Framework 4.5, que no nos permite ejecutar sobre Linux o MacOS. Para ello haremos uso del [analizador de portabilidad](https://docs.microsoft.com/en-us/dotnet/core/porting/) y prácticamente sin cambios, confirmando que las [versiones de dotnet](https://dotnet.microsoft.com/download/dotnet-core/) (SDK + runtime) están instaladas.

### Solución
A partir de la misma, con los cambios necesarios para multiplataforma, generé una consola simple que acepta un fichero de entrada con el formato de PowerPoint Translator, y generando como salida un fichero en WebVTT. Tenéis el código en este [repo](https://github.com/carloshm/devto-articles/tree/master/Translator2Stream), y un pequeño vídeo de su funcionamiento, y el resultado del ejemplo anterior.
<!-- reduciendo el path de bash con PS1='\u:\W\$ ' :D -->

{% asciinema 329566 %}

```Text
WEBVTT

00:00:00.000 --> 00:00:15.000

00:00:33.000 --> 00:00:36.000
It's in English, too.

00:00:36.000 --> 00:00:51.000
Ok.
....
```

Hasta pronto!