Enllaços:
[1] https://puntweb.diba.cat/
[2] https://puntweb.diba.cat/members/gutierrezff
[3] https://puntweb.diba.cat/blogs/2023/10/16/subtitulacio-de-videos-catala-amb-whisper
[4] https://administracionelectronica.gob.es/pae_Home/pae_Estrategias/pae_Accesibilidad/pae_normativa/pae_eInclusion_Normas_Accesibilidad.html
[5] https://www.w3.org/WAI/media/av/captions/
[6] https://openai.com/research/whisper
[7] https://support.google.com/youtube/answer/6373554?hl=ca#zippy=%2Csubt%C3%ADtols-autom%C3%A0tics-en-v%C3%ADdeos-llargs-i-curts
[8] https://www.w3.org/WAI/media/av/captions/#automatic-captions-are-not-sufficient
[9] https://youtu.be/_iWCosx9_Y8?t=156
[10] https://colab.research.google.com/
[11] https://colab.research.google.com/#scrollTo=Primeros_pasos
[12] https://www.youtube.com/watch?v=13KNmFE6TLo
[13] https://puntweb.diba.cat/sites/puntweb.diba.cat/files/e8joamuogmk.txt
[14] https://puntweb.diba.cat/node/1397
La història de l'accessibilitat del contingut web en les administracions públiques no és malauradament una història d'èxit, com demostra el timeline normatiu del Portal de Administración Electrónica [4]. Un dels requisits per assolir la conformitat amb els criteris d'accessibilitat és oferir subtítols sincronitzats per al contingut multimèdia [5]. Avui us comparteixo una solució per afegir subtítols en català de qualitat als vídeos de YouTube mitjançant Whisper [6], una intel·ligència artificial (IA) creada per OpenAI (els de ChatGPT) i alliberada com a programari de codi obert (open source).
Introducció
Whisper és una IA enfocada en el reconeixement automàtic de la parla (ASR, Automatic Speech Recognition), amb unes característiques que la fan totalment disruptiva davant les opcions preexistents, com són haver estat entrenada amb un dataset de més de 600.000 hores d'audio, el 17% d'elles en idiomes diferents de l'anglès, incloent-hi el català amb 1.883 hores en un lloc rellevant (14è entre 75 idiomes). Poden semblar poques 1.883 hores, però la veritat és que són més que suficients per obtenir resultats gairebé professionals, com veurem més endavant.
La situació anterior a Whisper
El català no està entre les 14 llengües suportades per a la generació automàtica de subtítols en Youtube [7]. De tota manera, la subtitolació automàtica en sí mateixa pot arribar a provocar errors fints i tot mortals com el descrit en aquest enllaç de la WAI/W3C [8].
Tot i que existien diverses alternatives externes, el cert és que les solucions anteriors a Whisper prometien molt però la realitat és que donaven més feina de la que estalviaven. A tall d'exemple, veieu aquest vídeo del Govern de les Illes Balears demostratiu de les capacitats de Subtitle Edit: Subtitle Edit. Generar subtítols en català. IBSTEAM (caib) [9]. El vídeo és de l'any 2022, per tant coetani a la publicació de Whisper. L'enllaç porta directament al minut 2:37 on es veuen els resultats generats pel programari i les correccions que ha de fer l'usuari al text generat, gairebé l'ha de reescriure de nou:
Funcionament de Whisper
Hi ha diverses opcions per executar Whisper, però la més senzilla i immediata que requereix menys recursos és executar-lo en un entorn remot com Colaboratory de Google [10]. Només us caldrà un compte de Google i unes poques línies de codi. És recomanable consultar la secció de Primeres passes amb Colab [11].
Pel que fa el compte de Google podeu fer servir el mateix que vau crear per configurar el mòbil corporatiu.
!pip install git+https://github.com/openai/whisper.git
!pip install pytubefix
from pytubefix import YouTube
url = input("Introdueix la URL del video de YouTube: ")
yt_url = YouTube(url)
audio_stream = yt_url.streams.filter(only_audio=True).first()
output_path="/content"
filename="audio.mp3"
audio_stream.download(output_path=output_path, filename=filename)
print(f"S'ha desat l'audio a la seguent carpeta del COLAB {output_path}/{filename}")
!whisper "/content/audio.mp3" --task transcribe --model large --language=ca --verbose False --output_format srt --output_dir audio_transcription
A tall d'exemple, he fet la prova amb el primer vídeo del canal Diba que actualment és el de la campanya Foc off! [12] i que en tenir subtítols integrats, serveix per comparar els resultats amb els generats per Whisper que copio a continuació:
1
00:00:00,000 --> 00:00:05,000
Has vist l'incendi descontrolat i tu llençant burilles per la finestra?
2
00:00:06,000 --> 00:00:07,000
Foc off!
3
00:00:07,000 --> 00:00:10,000
Amb la sequera que patim i faràs barbacoes a tocar del bosc?
4
00:00:10,000 --> 00:00:11,000
Foc off!
5
00:00:11,000 --> 00:00:14,000
I encendràs petards en plena onada de calor?
6
00:00:16,000 --> 00:00:17,000
Foc off!
7
00:00:17,000 --> 00:00:20,000
Saps que si utilitzes maquinària on no toca pots provocar un desastre?
8
00:00:20,000 --> 00:00:21,000
Foc off!
9
00:00:21,000 --> 00:00:23,000
Aquesta es diu més que cap altra.
10
00:00:23,000 --> 00:00:24,000
Per les imprudències...
11
00:00:24,000 --> 00:00:25,000
Foc off!
12
00:00:25,000 --> 00:00:28,000
Si veus foc o una columna de fum, truca al 112.
13
00:00:28,000 --> 00:00:29,000
Generalitat de Catalunya.
14
00:00:29,000 --> 00:00:30,000
Sempre endavant.
Només cal corregir:
Sempre cal revisar els resultats, òbviament, sobretot pel que fa noms propis, gentilicis, topònims, etc. però Whisper estalvia més del 90% de la feina. Gaudiu-ne!