La plataforma de conversión de voz a texto Voicegain ha admitido la transmisión RTP desde el principio. Una de nuestras primeras aplicaciones, hace varios años, fue la transcripción en directo con la utilidad ffmpeg, que se utilizaba para capturar audio de un dispositivo y transmitirlo a la plataforma Voicegain mediante RTP. Con el tiempo, añadimos protocolos más robustos y el RTP se utilizaba muy poco. Sin embargo, recientemente, en una de nuestras implementaciones, nos topamos con un caso práctico en el que la transmisión por RTP permitía a nuestro cliente realizar la integración de una manera muy sencilla dentro de una pila de telefonía de un centro de llamadas.
La plataforma Voicegain admite protocolos de transmisión más avanzados para uso en centros de llamadas, como SIPREC o SIP/RTP (SIP Invite). Sin embargo, en este uso en particular, pudimos transmitir desde Cisco CUBE directamente a Voicegain mediante un RTP simple. Al recibir una llamada entrante, se activa un script que usa HTTP para establecer una nueva sesión de transcripción de Voicegain. En la respuesta de la sesión, se devuelven los parámetros ip:port del receptor RTP específicos de la sesión y se pasan al CUBE para establecer una conexión RTP directa.
El RTP utilizado de esta manera no proporciona autenticación ni seguridad, lo que lo haría generalmente inadecuado para su uso a través de Internet. Sin embargo, en este caso de uso concreto, nuestro cliente se beneficia del hecho de que todo el conjunto de Voicegain se puede implementar localmente. Al estar en la misma red aislada que el CUBE, no hay problemas de seguridad ni de pérdida de paquetes.
Un ejemplo
Puedes visitar nuestro github para ver un ejemplo de código python que muestra cómo establecer la sesión de voz a texto, cómo dirigir el remitente del RTP al punto final del receptor y cómo recibir el resultado de la transcripción en tiempo real a través de un websocket.
El comando para establecer la sesión es tan simple como esto:
La sección de audio define la parte de transmisión de RTP y la sección websocket define cómo se enviarán los resultados a través de un websocket.
La respuesta tiene este aspecto:
En el ejemplo de github stream.ip y stream.port se pasan a ffmpeg, que se utiliza como cliente de streaming RTP. El ejemplo ilustra con más detalle cómo procesar los mensajes con resultados de transcripción incrementales enviados en tiempo real a través del websocket.