
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
Ampliación de Nexmo: Comparación de la transcripción en streaming
Tiempo de lectura: 6 minutos
En el mundo de la comunicación, las palabras son vitales, y acertar con ellas es increíblemente importante. Las transcripciones de llamadas de voz pueden ayudar a las empresas a comprender las tendencias emergentes en el contenido de las llamadas telefónicas de ventas y asistencia.
La transcripción es el proceso de tomar conversaciones de audio y convertirlas en palabras escritas. En el pasado, este proceso lo realizaban personas que escuchaban una grabación y escribían las palabras manualmente. Esta práctica sigue existiendo. Ahora han surgido servicios automatizados que permiten a los desarrolladores de software enviar archivos de audio a los servicios para obtener un resultado más inmediato.
Este trabajo por sí solo puede proporcionar información increíble, pero me centro específicamente en las transcripciones de streaming, donde la información en tiempo real puede proporcionar otro nivel de detalle a su equipo de ventas y asistencia.
Visión general
Este post es una comparativa y visión general de los cuatro principales servicios de transcripción en streaming de proveedores en la nube: Amazon Transcribe, Azure Cognitive Speech Service, Google Cloud Speech-to-Texte IBM Watson Voz a Texto.
Uso de la Voice API y WebSockets de Nexmoconecté una llamada de voz desde mi teléfono móvil y transmití el audio para probar el servicio. Durante el proceso, tomé algunas notas sobre aspectos como las funciones, la facilidad de uso, la precisión y los costes.
Precisión
Uno de los factores más críticos a la hora de seleccionar un servicio de transcripción es su precisión. Disponer de información incorrecta haría que no se confiara en ningún dato.
He probado cada servicio utilizando una 8kHz frecuencia de muestreo utilizando mi teléfono móvil. También puede utilizar 16kHzpero, en algunos casos, es menos preciso. Utilizando varias frases, hablé a una velocidad relativamente media a un volumen moderado. La habitación era lo suficientemente silenciosa como para eliminar los ruidos de fondo.
Todos los servicios transcribieron las frases que utilicé sin problemas, pero en parte dependía de lo bien que hablara. Por desgracia, cualquier servicio tiene problemas con la falta de enunciación.
Por lo demás, puede confiar razonablemente en cualquiera de estos servicios para realizar sus transcripciones.
"Aléjense de las puertas".
IBM Watson Speech-to-Text - 90% (No conseguía "stand" por muy claro que hablara)
Servicio de voz cognitiva Azure - 100%
Google Cloud Speech-to-Text - 100%
Amazon Transcribe - 100%
"Agitar bien antes de servir"
IBM Watson Conversión de voz a texto - 100
Servicio de voz cognitiva Azure - 100%
Google Cloud Speech-to-Text - 100%
Amazon Transcribe - 100%
"Peter Piper recogió un montón de pimientos en vinagre."
IBM Watson Conversión de voz a texto - 100
Servicio de voz cognitiva Azure - 100%
Google Cloud Speech-to-Text - 100%
Amazon Transcribe - 100%
Características
Las prestaciones de la mayoría de los servicios son muy similares:
Utiliza el aprendizaje automático para mejorar la precisión
Modelos personalizados para la optimización
Archivos de audio y streaming
Formato contextual de los nombres propios
Soporte de puntuación
Apoyo lingüístico
Google Cloud Speech-to-Text tiene con diferencia el mayor número de idiomas admitidos, 120, y puede autodetectar el idioma en la mayoría de los casos. El siguiente idioma más compatible es Azure Cognitive Speech Service con 30, e IBM Watson Voz a Texto con 15. Amazon Transcribe es el más restrictivo con solo 5 idiomas disponibles para transcripción en streaming (más disponibles para archivos de audio).
Facilidad de uso
Cada proveedor tiene su propio camino hacia el éxito. Todos ofrecen guías de iniciación en distintos formatos. Sin embargo, tienden a ser o bien para el envío de un archivo de audio o la captura de entrada de micrófono. Mientras que la entrada del micrófono es el método de streaming que necesitamos utilizar con el Nexmo WebSocket, viene con un poco de código front-end adicional que era innecesario.
Voz a texto en la nube de Google
El SDK de Google fue simple de implementar mediante la creación de un SpeechClient con el SDK proporcionado y el archivo de credenciales de Google proporcionado durante el usuario de la cuenta de servicio.
La página SpeechClient proporciona un método llamado streamingRecognize que proporciona eventos.
const client = new speech.SpeechClient();
let request ={
config: {
encoding: 'LINEAR16',
sampleRateHertz: 8000,
languageCode: 'en-US'
},
interimResults: false
};
const recognizeStream = client
.streamingRecognize(request)
.on('error', console.error)
.on('data', data => {
console.dir(data, {depth: null});
});
La simplicidad de Google supone una ventaja sobre otros competidores. Puedes ponerte en marcha con poco esfuerzo y, para mí, eso es una gran victoria.
Documentación de Google Cloud Speech-to-Text
Azure/IBM
Tanto IBM como Azure proporcionan SDK específicos para cada idioma y abundante documentación de introducción para ponerte en marcha, pero la llamada directa a la API es sencilla de implementar. Ambos servicios pueden utilizarse con sólo conectarse a una ruta API con el protocolo wss:// y proporcionar una clave.
Servicio Azure Cognitive Speech
wss://region.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?format=simple&language=LANG_CODE
IBM Watson: voz a texto
wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=langage_modelHay que proporcionar algunas cabeceras adicionales, pero la documentación de cada servicio puede ser un recurso beneficioso.
Amazon Transcribe
Tengo que admitir que AWS fue el que más me costó implementar. La documentación tenía muy pocos ejemplos, y el SDK no parecía soportar los servicios de streaming en absoluto. Cuando empecé a crear la integración de Amazon Transcribe, HTTP/2 era el único protocolo disponible y requería firmar cada solicitud enviada al servidor. Siendo un poco novato con AWS en general, esto resultó ser bastante complicado para mí.
Donde esta historia da un gran giro, es cuando las Relaciones con los Desarrolladores lideran, Brandon West intervino y escribió un código de ejemplo utilizando una conexión WebSocket y me salvó. El código de ejemplo hizo las cosas mucho más accesibles, pero el proceso de autorización general y la firma de llamadas hacen que Amazon Transcribe sea un poco más difícil de implementar en general.
Aquí utilicé el paquete WebSocket paquete Node y creé una URL firmada para crear la conexión.
let url = v4.createPresignedURL(
'GET',
`transcribestreaming.${process.env.AWS_REGION}.amazonaws.com:8443`,
'/stream-transcription-websocket',
'transcribe',
crypto.createHash('sha256').update('', 'utf8').digest('hex'), {
'key': process.env.AWS_ACCESS_KEY_ID,
'secret': process.env.AWS_SECRET_ACCESS_KEY,
'protocol': 'wss',
'expires': 15,
'region': process.env.AWS_REGION,
'query': `language-code=${process.env.LANG_CODE}&media-encoding=pcm&sample-rate=${process.env.SAMPLE_RATE}`
}
);
let socket = new WebSocket(url);
Amazon Transcribe es un servicio excelente, pero si no es algo a lo que estés acostumbrado, la curva de aprendizaje puede ser un reto.
Documentación de Amazon Transcribe
Coste
Todos los proveedores de servicios ofrecen un nivel básico o gratuito para empezar. El coste básico depende de la cantidad de tiempo de audio transcrito. Los proveedores utilizan diferentes incrementos de tiempo, por lo que los he normalizado en la siguiente tabla para ayudarte a entender con precisión la diferencia de costes.
| Provider | Free Tier | Cost | Normalized Cost |
|---|---|---|---|
| Amazon Transcribe | 60 min/month for 12 months | $0.006/~10 seconds | $0.036/minute |
| Azure Cognitive Speech Service | 5 audio hours free per month | $1/audio hour | $0.016/minute |
| Google Cloud Speech-to-Text | 60 minutes free | $0.006/15 seconds | $0.024/minute |
| IBM Watson Speech-to-Text | 500 Minutes per Month | $0.02/minute | $0.02/minute |
Recapitulemos
La transcripción en tiempo real es una excelente forma de proporcionar información en tiempo real. Cada uno de los cuatro principales proveedores en la nube tiene grandes ofertas con servicios de voz a texto fiables y precisos. Utilizar Nexmo como flujo de audio es una gran extensión que permite experiencias de comunicación más profundas para sus clientes.
Recomiendo encarecidamente Google Speech-to-text como una opción sólida. El precio es competitivo y el servicio es sólido y fiable. Es fácil configurarlo y empezar a usarlo inmediatamente, lo cual es una ventaja.
Si desea probar alguno o todos estos servicios, el equipo de Nexmo Extend ha creado un código de ejemplo para ayudarle a empezar.
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.