Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Probar la transcripción automática de audio #9

Open
dcabo opened this issue Feb 28, 2019 · 4 comments
Open

Probar la transcripción automática de audio #9

dcabo opened this issue Feb 28, 2019 · 4 comments
Labels

Comments

@dcabo
Copy link
Member

dcabo commented Feb 28, 2019

Estamos empezando a trabajar con el ejemplo de los Telediarios de RTVE, que vienen ya subtitulados, pero es interesante en cualquier caso probar los servicios que existen para transcribir audio, por varios motivos:

  1. Algunos días no publican los subtítulos. En particular, hay varias semanas de julio de 2018 donde no lo hacen, no sé por qué.

  2. Hay algunos errores, sobre todo cuando conectan con corresponsales. Podría ser que la transcripción automática fuera de mejor calidad, aunque en principio sería raro.

  3. Lo de transcribir audio es algo útil para nuestros otros proyectos, así que ya que nos ponemos a trabajar con estas cosas...

@dcabo
Copy link
Member Author

dcabo commented Feb 28, 2019

Hago una prueba siguiendo esto de Dan Nguyen. Primero instalo las cosas que dice, y uso aws configure para configurar AWS. Hay que elegir una "default region" para que la transcripción funcione, yo he elegido "eu-west-3" (París), y he creado un cubo para guardar estas pruebas.

Estoy usando -al azar- el Telediario de las 15h del día que Aznar va a declarar al Congreso por la Gürtel.

# extract the audio as a mp3 file
ffmpeg -i ../4743546.mp4 -acodec libmp3lame 4743546.mp3

# upload the mp3 file to a S3 bucket 
# (and optionally make it publicly readable)
aws s3 cp --acl public-read 4743546.mp3 s3://verba-test.civio.es/tmp/4743546.mp3 

# Start the transcription job and specify that the transcription result data be saved to a given bucket
# NOTE: es-ES not allowed. Not sure whether that's an issue
aws transcribe start-transcription-job \
    --language-code 'es-US' \
    --media-format 'mp3' \
    --transcription-job-name 'telediario' \
    --media '{"MediaFileUri": "s3://verba-test.civio.es/tmp/4743546.mp3"}' \
    --output-bucket-name 'verba-test.civio.es'

# optionally: use this to check the status of the job before attempting to download the transcript
aws transcribe get-transcription-job  \
        --transcription-job-name telediario

# Download the JSON at the expected S3 URL, parse it with jq and spit it out as raw text
curl -s https://s3.eu-west-3.amazonaws.com/verba-test.civio.es/telediario.json \
    | jq '.results.transcripts[0].transcript' --raw-output

El proceso tardó bastante, unos 25 minutos si entiendo bien los metadatos, y me encaja con lo que yo noté en directo. Cuesta, por cierto, 0.0004$ por segundo, o sea que una hora de telediario son 1.5$ o así.

@dcabo
Copy link
Member Author

dcabo commented Feb 28, 2019

El resultado final es de muy buena calidad, excepto en algún nombres propio (e.g. "Gürtel"), que le confunden bastante. Se puede subir un diccionario personalizado, si quisiéramos. El JSON generado es extremadamente detallado: tiene timing ¡a nivel de palabra! Tampoco creo que eso sea la solución a la segmentación (#7), que en realidad debe operar a nivel semántico. Pero es curioso, y permitiría hacer cortes muy precisos. Ejemplo del principio:

José María Aznar ha negado una caja de en el PP y que conociera al cabecilla de la burdel, Francisco Correa. El ex presidente del Gobierno y el Partido Popular ha llegado a la comisión de Investigación sobre la presunta financiación ilegal de ese partido acompañado por la dirección y el nuevo líder. Y uno de los momentos más tensos se ha producido cuando preguntaba Pablo Iglesias

Ponerse a transcribir todo de nuevo no parece tener mucho sentido, y tiene un coste no despreciable (700 programas / año => ~1200$). Pero es interesante para uso interno.

@dcabo
Copy link
Member Author

dcabo commented Feb 28, 2019

Por comparar con otras alternativas, Google Cloud, la versión gratuita, sin login (<1 minuto), es bastante patetero, solo mejora que pilla "Gürtel", pero pierde a Correa y la puntación no existe:

José María Aznar ha negado una caja de en el PP y que conociera el cabecilla de la Gürtel
Franco corre al ex presidente del Gobierno del Partido Popular ha llegado a la comisión de
investigación sobre la presunta financiación ilegal de ese partido acompañado por la dirección
y el nuevo líder de uno de los momentos más tensos se ha producido cuando preguntaba Pablo Iglesias

Watson, de IBM, es de puto chiste:

Speaker 0: Cuál.
Speaker 1: Pasarían a negado una caja en el space que conociera carecía de la urss el francisco correa el expresidente del gobierno del partido popular ha llegado a la comisión de investigación sobre la presunta financiación.
Speaker 2: Ilegal de su partido acompañado por la dirección y el nuevo líder de uno de los momentos más tensos sea producido cuando preguntaba padres.
Speaker 0: Creo que.

Quería probar alguna otra app comercial, pero me daba pereza andar registrándome. La única que me dejaba probar así de forma sencilla era Temi, aunque luego resulta que pedía el correo igualmente. Bah. El resultado era una mierda horrenda: no me han preguntado el idioma en ningún momento y claro, no daba una. Se supone que otros servicios comerciales son mejores (tengo notas de recomendaciones por ahí), pero por coste y modo de uso se salen del ámbito de Verba.

@dcabo
Copy link
Member Author

dcabo commented Sep 14, 2019

La gente de AWS monta unas demos bastante flipantes, donde combinan un porrón de componentes para generar transcripciones y subtítulos en tiempo real en varios idiomas, todo sin usar servidores. Yo no necesito este tinglado, pero dejo aquí un par de demos por curiosidad:

  • AWS Video Transcriber: This solution provides a serverless single page web application and set of supporting Amazon API Gateway end points and AWS Lambda functions which allow users to upload videos into S3 and compute and edit closed captions. AWS services used: Amazon S3, Amazon Elastic Transcoder, Amazon Transcribe, Amazon API Gateway, AWS Lambda and Amazon DynamoDB.

  • Live Streaming with Automated Multi-Language Subtitling: Utilizes AWS Transcribe Streaming to create live captions for live video streaming. This solution uses AWS MediaLive as the encoder, AWS MediaPackage, Amazon Translate, Amazon Transcribe Streaming, Amazon S3, and Amazon Lambda.

@dcabo dcabo added the V2 label Oct 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant