Header Ads Widget

Ticker

6/recent/ticker-posts

Revisión de la API de Speech-to-Text de AssemblyAI

La transcripción de voz a texto y audio ha sido un Santo Grial para los investigadores de aprendizaje automático e inteligencia artificial durante algún tiempo. El acto aparentemente simple de convertir el habla en texto no es, de hecho, simple en absoluto.

Eso es lo que hace que AssemblyAI sea tan excepcional. Dylan Fox creó AssemblyAI después de ver de primera mano lo difícil que era crear un software de transcripción abierto mientras trabajaba en Cisco.


 

La transcripción abierta no solo es prohibitivamente difícil de implementar, sino que también requiere muchos recursos. Es por eso que un SaaS como AssemblyAI es un recurso tan invaluable. La startup con sede en San Francisco ha puesto a disposición su software personalizado de voz a texto a través de una API, lo que hace que la IA de transcripción esté disponible para cualquier desarrollador.

Por estas razones, nuestros jueces eligieron AssemblyAI como la competencia de Mejor API pública de 2020 . Para celebrarlo, aquí está nuestra revisión de la API AssemblyAI, que le brinda todo lo que necesita saber para probar la API de voz a texto por sí mismo.


Revisión de AssemblyAI

API de voz a texto de AssemblyAI

La transcripción de audio es más complicada de lo que parece. Si alguna vez ha intentado transcribir audio grabado a texto escrito, sabrá que escribir el discurso de alguien es un trabajo duro. Es especialmente complicado si hay muchas interrupciones, la calidad de grabación es deficiente o si no está familiarizado con el acento del hablante. La transcripción puede volverse casi imposible si hay más de un hablante.

¡AssemblyAI es un motivo de alegría para todos los transcriptores de audio que hay! No más confusión en tu camino a través de notas de voz y grabaciones telefónicas de mala calidad. AssemblyAI lo libera a usted y a sus empleados para hacer un trabajo más significativo. AssemblyAI es de composición abierta, lo que significa que puede transcribir cualquier palabra, no solo las incluidas en los datos de entrenamiento.

Características de AssemblyAI

AssemblyAI presenta la transcripción de audio más precisa de la industria utilizando lo último en investigación de Deep Learning. También le da un 'puntaje de confianza' para cada palabra, calificando la probabilidad de precisión del texto,

Sin embargo, cuando echa un vistazo debajo del capó, es donde realmente comienza a tener una idea no solo de lo que AssemblyAI puede hacer, sino también de algunas de sus implicaciones. Tener la voz transcrita en texto facilita la búsqueda y la organización. AssemblyAI hace que esto sea aún más fácil con marcas de tiempo para cada palabra. También anota diferentes oradores si hay más de uno.

También es posible personalizar la API de AssemblyAI para varios oradores. Cuenta con soporte de audio de doble canal, que devuelve cada canal como una transcripción separada. ¡Esta es la única razón para investigar la transcripción de audio de AssemblyAI, si alguna vez ha intentado transcribir una llamada telefónica o audio con varios altavoces!

Modelos acústicos y de lenguaje

Una de las características más impresionantes de AssemblyAI es la inclusión de varias bibliotecas diferentes para diferentes acentos, calidad de grabación y entornos de grabación, incluida la cantidad de ruido de fondo. Esta característica, por sí sola, hace que AssemblyAI sea digno de investigación, ya que la transcripción de audio de altavoces con acentos desconocidos puede ser muy desafiante y llevar mucho tiempo.

En el momento de esta revisión, AssemblyAI presenta modelos de idiomas para inglés australiano, inglés sudafricano e inglés británico. El inglés indio y el inglés del sur de Asia están pendientes y se publicarán pronto.

Los modelos de lenguaje se utilizan para diferenciar entre diferentes tipos de medios, como llamadas telefónicas o entrevistas frente a noticias transmitidas, por ejemplo. Esto ayuda a AssemblyAI a diferenciar entre palabras que suenan similares, como "para", "también" y "dos", por ejemplo. El modelo de lenguaje de los medios es mucho mejor para seleccionar nombres propios, por ejemplo, y tiene un vocabulario amplio.

Límites del acelerador

No hay límites para la cantidad de archivos que puede transcribir con AssemblyAI. El único límite es la cantidad de archivos que puede procesar al mismo tiempo. Los planes gratuitos solo pueden cargar un archivo a la vez. Los planes pagos pueden procesar hasta 32 archivos al mismo tiempo.

Introducción a AssemblyAI

Es muy fácil comenzar con AssemblyAI, una vez que te acostumbras. Es lo más parecido a plug-and-play que una API. Esto se debe en gran parte a la serie de guías de inicio rápido incluidas en la documentación de AssemblyAI. Parte de esa documentación no fue tan sencilla como cabría esperar, al principio, pero el soporte técnico de AssemblyAI pudo guiarnos rápidamente a través de ella. También compartiremos lo que aprendimos aquí, para evitarle cualquier posible confusión o dolores de cabeza.

Las Guías de inicio rápido comienzan con una prueba simple , el equivalente de API de un " Hola mundo ". Dependiendo del idioma que esté usando, es casi tan simple como copiar y pegar el código fuente en el editor de su elección. Simplemente tiene que reemplazarlo YOUR-API-TOKENcon el token que obtiene al registrarse en AssemblyAI. Para esta revisión, usamos Python, Notepad ++ como editor y una línea de comandos de Terminal en Windows 10.

Aquí es donde las cosas se vuelven un poco confusas, por lo que estamos hablando de ello, ya que necesitábamos un poco de ayuda para poner en funcionamiento AssemblyAI. Una vez que se haya acostumbrado, es tan simple como cortar y pegar algunas cadenas de números, lo que lo hace casi tan fácil de usar como un software con una GUI.

 

Subiendo audio

Los tutoriales le muestran cómo cargar su propio audio.

Una vez que coloque el archivo que desea cargar en la ruta 'nombre de archivo' y luego ejecute el script, se le dará una nueva dirección web donde se almacena el audio. Luego, simplemente tiene que volver a la primera guía de inicio rápido y reemplazar la dirección en el JSON "audio_url" con la dirección web que acaba de recibir.

Ejecute este script nuevamente y verá el estado de su transcripción, que variará de 'en cola' a 'procesando'. Una vez que esté terminado, se le dará una salida de su transcripción, junto con un registro de metadatos que cubriremos más en la sección de revisión.

También es compatible con casi todos los lenguajes de programación o entornos que pueda imaginar, por lo que debería poder usar AssemblyAI de manera cómoda y sencilla sin importar cuál sea su lenguaje de programación preferido. También tienen un archivo de audio precargado en Amazon AWS, por lo que puede obtener una vista previa rápida de lo que la API es capaz de hacer sin esperar a que se cargue y analice un archivo.

Una vez que hayas probado los ejemplos de inicio rápido de dos minutos, los documentos de AssemblyAI te muestran cómo cargar tus propios archivos de audio para transcribirlos. Puede cargar archivos directamente a la API, por lo que no tendrá que meterse con tener su propio servidor, que es una característica muy agradable y útil. La API también admite prácticamente cualquier formato de archivo de audio, por lo que no tendrá que perder el tiempo con las conversiones de archivos, que es otra característica interesante.

import sys
import time
import requests

filename = "I:\Downloads\ligeia.mp3"
 
def read_file(filename, chunk_size=5242880):
    with open(filename, 'rb') as _file:
        while True:
            data = _file.read(chunk_size)
            if not data:
                break
            yield data
 
headers = {'authorization': "YOUR-API-KEY"}
response = requests.post('https://api.assemblyai.com/v2/upload',
                         headers=headers,
                         data=read_file(filename))

print(response.json())

Una vez que haya cargado su archivo, se le dará una dirección web donde se encuentra. Luego, simplemente puede ingresar esa dirección en el código de ejemplo y ... ¡voilá! ¡Transcripción instantánea!

Tenga en cuenta que la transcripción del audio puede demorar un momento. El 'estado' aparecerá como 'en cola' mientras el archivo se prepara para ser procesado. Es posible que deba realizar varias solicitudes GET antes de que los resultados estén listos. Una respuesta de procesamiento puede verse así:

{u'audio_end_at': None, u'acoustic_model': u'assemblyai_default', u'auto_highlights_result': None, u'text': None, u'audio_url': u'https://cdn.assemblyai.com/upload/05032247-7eb0-4b4e-bd0d-33040d15c2fc', u'speed_boost': False, u'language_model': u'assemblyai_default', u'redact_pii': False, u'confidence': None, u'webhook_status_code': None, u'id': u'zaxwd20tl-a5b2-401d-8b5b-a27d5fe536ed', u'status': u'processing', u'boost_param': None, u'words': None, u'format_text': True, u'dual_channel': None, u'punctuate': True, u'utterances': None, u'audio_duration': None, u'auto_highlights': False, u'word_boost': [], u'webhook_url': None, u'audio_start_from': None}

Nuevamente, revisemos el estado de nuestra operación:

import requests

endpoint = "https://api.assemblyai.com/v2/transcript/zv3c2fo1w-b226-4d67-81f1-bbae24e3a424"

headers = {
    "authorization": "YOUR-API-KEY",
}

response = requests.get(endpoint, headers=headers)

print(response.json())

¡Éxito! Hemos subido una grabación de audio de un pasaje de Edgar Allen Poe, y AssemblyAI lo ha transcrito con éxito en el siguiente texto: “La elocuencia de su lenguaje musical bajo se abrió camino en mi corazón a pasos tan constantes y progresivos que han pasado desapercibidos y desconocido." Puede ver a continuación cómo se ve la respuesta, junto con los metadatos, como el porcentaje de confianza, para cada palabra:

{u'audio_end_at': None, u'acoustic_model': u'assemblyai_default', u'auto_highlights_result': None, u'text': u'Eloquence of her low musical language made their way into my heart. Bypass so steadily and stealthily progressive that they have been unnoticed and unknown.', u'audio_url': u'https://cdn.assemblyai.com/upload/da62981c-b3a7-44a0-8631-ddb9e44386df', u'speed_boost': False, u'language_model': u'assemblyai_default', u'redact_pii': False, u'confidence': 0.9388, u'webhook_status_code': None, u'id': u'zv3c2fo1w-b226-4d67-81f1-bbae24e3a424', u'status': u'completed', u'boost_param': None, u'words': [{u'text': u'Eloquence', u'confidence': 0.9, u'end': 600, u'start': 0}, {u'text': u'of', u'confidence': 0.96, u'end': 750, u'start': 540}, {u'text': u'her', u'confidence': 0.92, u'end': 960, u'start': 720}, {u'text': u'low', u'confidence': 0.91, u'end': 1170, u'start': 900}, {u'text': u'musical', u'confidence': 0.96, u'end': 1710, u'start': 1230}, {u'text': u'language', u'confidence': 0.95, u'end': 2220, u'start': 1650}, {u'text': u'made', u'confidence': 0.99, u'end': 2850, u'start': 2190}, {u'text': u'their', u'confidence': 0.95, u'end': 3120, u'start': 2790}, {u'text': u'way', u'confidence': 0.88, u'end': 3330, u'start': 3090}, {u'text': u'into', u'confidence': 0.97, u'end': 3810, u'start': 3300}, {u'text': u'my', u'confidence': 0.88, u'end': 4020, u'start': 3810}, {u'text': u'heart.', u'confidence': 0.97, u'end': 4320, u'start': 3960}, {u'text': u'Bypass', u'confidence': 0.94, u'end': 5400, u'start': 4710}, {u'text': u'so', u'confidence': 0.89, u'end': 5850, u'start': 5430}, {u'text': u'steadily', u'confidence': 0.92, u'end': 6540, u'start': 5970}, {u'text': u'and', u'confidence': 0.84, u'end': 7110, u'start': 6870}, {u'text': u'stealthily', u'confidence': 0.97, u'end': 8010, u'start': 7200}, {u'text': u'progressive', u'confidence': 0.92, u'end': 8760, u'start': 8070}, {u'text': u'that', u'confidence': 0.99, u'end': 9330, u'start': 9060}, {u'text': u'they', u'confidence': 0.99, u'end': 9510, u'start': 9270}, {u'text': u'have', u'confidence': 0.88, u'end': 9720, u'start': 9450}, {u'text': u'been', u'confidence': 1.0, u'end': 9990, u'start': 9690}, {u'text': u'unnoticed', u'confidence': 0.96, u'end': 10620, u'start': 9960}, {u'text': u'and', u'confidence': 0.97, u'end': 11350, u'start': 10960}, {u'text': u'unknown.', u'confidence': 0.96, u'end': 11830, u'start': 11290}], u'format_text': True, u'dual_channel': None, u'punctuate': True, u'utterances': None, u'audio_duration': 12.617, u'auto_highlights': False, u'word_boost': [], u'webhook_url': None, u'audio_start_from': None}

Revisión de desempeño

El equipo de AssemblyAI tuvo la amabilidad de darnos acceso a su API de transcripción para probarlo y compartir nuestros pensamientos.

Configuración y facilidad de uso

AssemblyAI es lo más parecido a una API plug-and-play que probablemente encontrará, una vez que se acostumbre a ella. Hay un poco de una curva de aprendizaje, pero es lo que vale la pena, especialmente si usted ha tenido alguna vez que escribir transcripciones a mano.

"Un gran y único producto que los desarrolladores quieren poner en uso de inmediato". - Juez de API nórdicas

Fiabilidad de AssemblyAI

La API de AssemblyAI puede presumir de un 100% de tiempo de actividad durante los últimos 90 días. Eso es tan confiable como para ser efectivamente infalible. ¡Esta API está lista para integrarse en su flujo de trabajo sin preocuparse por las interrupciones!

“También se han centrado en la experiencia del desarrollador para facilitar el uso de sus API. Con ejemplos de copiar y pegar en cinco idiomas y tutoriales centrados en casos de uso, la empresa ayuda a los desarrolladores a superar el obstáculo más común: realizar la primera transcripción ". - Juez de API nórdicas

Precisión de ensamblaje

Por el bien de esta revisión, queríamos ir con algo bien conocido para poder verificar la precisión de AssemblyAI. Teniendo en cuenta que Halloween está cerca de nosotros, en el momento de esta revisión, decidimos utilizar una grabación de “Ligieia” de Edgar Allan Poe leída por Novella Sirena para el proyecto LibriVox .

Una vez que AssemblyAI estuvo en funcionamiento y configurado correctamente, la grabación de 41 minutos se transcribió en un lapso de tiempo impresionantemente corto. Antes de que te des cuenta, tenía un fragmento de texto y metadatos sin procesar con la conocida primera línea "Y en él está la voluntad, que no muere". Excepto que, en parte, regresó “Y la voluntad allí en la vida. ¿Qué etapa de la dieta… ”, lo cual es bastante comprensible, ya que su algoritmo podría no estar capacitado para interpretar el inglés bíblico. Es probable que note esto al mirar los metadatos al final, que es donde el puntaje de 'confianza' es útil.

Seguridad de AssemblyAI

AssemblyAI elimina sus archivos de audio de su servidor AWS al final de la transacción, por lo que no hay necesidad de preocuparse de que sus datos o información se vean comprometidos.

AssemblyAI: Pensamientos finales


La API de transcripción de AssemblyAI es más que merecedora de nuestro premio API del año, dada su utilidad y su fácil uso. Tiene el potencial de trabajar en una asombrosa variedad de diferentes pilas y flujos de trabajo. Pude verlo muy útil para todo, desde podcasts hasta reuniones de negocios e incluso para la creatividad. Es emocionante cuando aparece una pieza de tecnología que tiene el potencial de desbloquear la creatividad y la imaginación. AssemblyAI tiene el potencial de ser una aplicación de este tipo, además de práctica, útil e incluso divertida.

Publicar un comentario

0 Comentarios