Resum de vídeos de JLCava

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Com funciona cada pas

  • Vídeo: fa servir yt-dlp i agafa l’últim vídeo del canal que encara no hagi processat. Guarda els ja fets a processats.json, així no repeteix res encara que l’executis dues vegades.
  • Transcripció: fa servir faster-whisper si el tens instal·lat, i si no, openai-whisper, amb el model large-v3-turbo forçat a castellà. En acabar allibera la VRAM.
  • Resum: crida l’API d’Ollama i després li demana que descarregui el model (keep_alive: 0). Així Whisper i el LLM no comparteixen mai els 16 GB. Si el vídeo és molt llarg, primer fa resums parcials per trossos i després els uneix en un de sol.
  • TTS: fa servir Piper amb la veu es_ES-davefx-medium. Funciona amb CPU, és ràpid i té un castellà prou natural. Treu el format markdown abans de llegir el text.
  • Correu: ja hi és, però està desactivat (ENVIAR_CORREU = False) -> ho canvio a True, i funciona.

El directori del projecte:

mkdir jlcava
cd jlcava

ara bé, el whisper està en un altre directori, i en aquest directori del whisper hi ha un venv.

Ollama

pregunta: el ollama suposo que l'he de tenir encès en un altre terminal? Resposta: No cal, en principi. Normalment Ollama ja funciona com a servei en segon pla i el script s’hi connecta sol a http://localhost:11434. Linux: l’instal·lador oficial crea un servei systemd que s’engega sol. Pots comprovar-ho amb systemctl status ollama.

he de canviar el script per un model que tingui descarregat (ollama list). D'entrada, faré servir qwen3.5:9b

Whisper

He de tenir el whisper activat. I puc aprofitar aquest entorn venv per utilitzar el yt-dlp que em permet descarregar vídeos del youtube.

source model-whisper/whisper-env/bin/activate        # Linux
# source model-whisper/whisper-env/Scripts/activate  # si és Windows amb Git Bash
pip install -U yt-dlp piper-tts
pip list | grep -i whisper
  • Si surt faster-whisper, el script fa servir el model large-v3-turbo.
  • Si surt openai-whisper, fa servir turbo. -> aquest és el que faig servir

A l'executar el script *cava_resum.py* surt un error d'incompatibilitat de llibreries

La versió de faster-whisper que tens fa servir una opció de PyAV (la llibreria que llegeix l’àudio) que la versió de PyAV que tens instal·lada ja no accepta. Ho he arreglat al script: ara l’àudio el descodifica ffmpeg i a Whisper li arriba ja preparat, així que PyAV no hi intervé. Substitueix el teu cava_resum.py per la versió nova que t’he enviat.

L’avís de “JavaScript runtime”: Ara mateix no fa fallar res, però yt-dlp avisa que aviat necessitarà Deno per descarregar de YouTube. De moment no ho faig, però en el Claude ss'explica com fer-ho.

Un altre error: RuntimeError: Library libcublas.so.12 is not found or cannot be loaded

/home/joan/model-whisper/whisper-env/bin/pip install nvidia-cublas-cu12 "nvidia-cudnn-cu12==9.*"

veus (la part de TTS)

El resum ja s’ha fet. El trobaràs a sortida/2026-11-12_<id>/2026-11-12_Cava_resumen.md. Ara falla l’últim pas, el de generar l’àudio, perquè no tens descarregada la veu de Piper.

Cada veu de Piper són dos fitxers, el .onnx i el .onnx.json, i tots dos han d’estar a la carpeta veus/. Descarrega’ls així:

mkdir -p /home/joan/jlcava/veus && cd /home/joan/jlcava/veus
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/es/es_ES/davefx/medium/es_ES-davefx-medium.onnx
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/es/es_ES/davefx/medium/es_

Execució

Finalment ja funciona:

/home/joan/model-whisper/whisper-env/bin/python /home/joan/jlcava/cava_resum.py

/home/joan/model-whisper/whisper-env/bin/python /home/joan/jlcava/cava_resum.py --url https://www.youtube.com/watch?v=1O5wZd1qBqI

És a dir, el directori del projecte és */home/joan/jlcava*, però necessito executar-ho amb la versió de python que hi ha en el projecte */home/joan/model-whisper*, on també he instal·lat la funcionalitat de descarregar vídeos del youtube.

Sortida:

 /home/joan/model-whisper/whisper-env/bin/python /home/joan/jlcava/cava_resum.py --url https://www.youtube.com/watch?v=1O5wZd1qBqI
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
[20:49:30] Vídeo: Bienvenidos a La CRISIS Demócrata. Así Nos Protegemos | José Luis Cava (2026-11-12)
WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add  --js-runtimes RUNTIME[:PATH]  to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See  https://github.com/yt-dlp/yt-dlp/wiki/EJS  for details on installing one
[20:49:32] Transcrivint amb faster-whisper (large-v3-turbo)...
[20:49:52] Generant resum amb qwen3.5:9b...
[20:51:09] Resum desat: /home/joan/jlcava/sortida/2026-11-12_1O5wZd1qBqI/2026-11-12_Cava_resumen.md
[20:51:09] Generant àudio amb Piper...
[20:51:14] Àudio desat: /home/joan/jlcava/sortida/2026-11-12_1O5wZd1qBqI/2026-11-12_Cava_resumen.mp3
[20:51:14] Fet!

Enviar mail (SMTP Gmail)

En el fitxer *smtp_password.txt* no s'ha de posar el password del Gmail, sinó un password d'aplicació (16 lletres). En el tutorial del Claude s'explica com fer-ho. Jo he creat un password d'aplicació que es diu *enviar_gmail*.

  • amagar el password

creat per Joan Quintana Compte, novembre 2026