Les timelines multiples sous Kdenlive et reconnaissance vocale avec whisper

La version 23.04 du logiciel de montage vidéo opensource Kdenlive avait emmené l’évolution majeure des timelines multiples ou séquences (nested timelines en anglais) comme je l’avais rapporté dans ce post.

Je l’utilise maintenant sans cesse et il me semblait utile de vous présenter plus en avant cette fonctionnalité dans un tutoriel vidéo que voici.

Ça m’a permis de tester la fonctionnalité Whisper basée sur l’intelligence artificielle qui permet de faire du sous titrage automatique et même de la traduction en anglais. Elle se base sur PyTorch qui est une bibliothèque opensource écrite en python d »apprentissage profond (deep learning) qui peut utiliser le GPU s’il est compatible.

Pour installer PyTorch avec une carte graphique NVIDIA, il a fallu trouver la version du CUDA je me suis mélangé les pinceaux avec les commandes nvcc-version et nvidia-smi qui me donnent des résultats discordants, finalement j’ai mis le numéro de version indiqué sur le site PyTorch.

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu11.8

Pour savoir si tout est bien installé et prêt à l’usage, on tape la commande:

python -m torch.utils.collect_env

Et voilà le résultat

Collecting environment information...
/usr/local/lib64/python3.10/site-packages/torch/cuda/__init__.py:190: UserWarning:
Found GPU0 NVIDIA GeForce GTX 760 (192-bit) which is of cuda capability 3.0.
PyTorch no longer supports this GPU because it is too old.
The minimum cuda capability supported by this library is 3.7.

warnings.warn(
PyTorch version: 2.1.2 cu118
Is debug build: False
CUDA used to build PyTorch: 11.8
ROCM used to build PyTorch: N/A

OS: Mageia 9 (x86_64)
GCC version: (Mageia 12.3.0-3.mga9) 12.3.0
Clang version: Could not collect
CMake version: version 3.26.4
Libc version: glibc-2.36

Python version: 3.10.11 (main, Apr 16 2023, 03:21:15) [GCC 12.2.1 20230415] (64-bit runtime)
Python platform: Linux-6.5.13-desktop-6.mga9-x86_64-with-glibc2.36
Is CUDA available: True
CUDA runtime version: 12.1.105
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: GPU 0: NVIDIA GeForce GTX 760 (192-bit)
Nvidia driver version: 470.223.02
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture : x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Tailles des adresses: 39 bits physical, 48 bits virtual
Boutisme : Little Endian
Processeur(s) : 8
Liste de processeur(s) en ligne : 0-7
Identifiant constructeur : GenuineIntel
Nom de modèle : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
Famille de processeur : 6
Modèle : 60
Thread(s) par cœur : 2
Cœur(s) par socket : 4
Socket(s) : 1
Révision : 3
multiplication des MHz du/des CPU(s) : 93%
Vitesse maximale du processeur en MHz : 4000,0000
Vitesse minimale du processeur en MHz : 800,0000
BogoMIPS : 7183,94
Drapeaux : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_
good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm c
puid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts vnmi md_clear flush_l1d
Virtualisation : VT-x
Cache L1d : 128 KiB (4 instances)
Cache L1i : 128 KiB (4 instances)
Cache L2 : 1 MiB (4 instances)
Cache L3 : 8 MiB (1 instance)
Nœud(s) NUMA : 1
Nœud NUMA 0 de processeur(s) : 0-7
Vulnérabilité Gather data sampling : Not affected
Vulnérabilité Itlb multihit : KVM: Mitigation: VMX disabled
Vulnérabilité L1tf : Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable
Vulnérabilité Mds : Mitigation; Clear CPU buffers; SMT vulnerable
Vulnérabilité Meltdown : Mitigation; PTI
Vulnérabilité Mmio stale data : Unknown: No mitigations
Vulnérabilité Retbleed : Not affected
Vulnérabilité Spec rstack overflow : Not affected
Vulnérabilité Spec store bypass : Mitigation; Speculative Store Bypass disabled via prctl
Vulnérabilité Spectre v1 : Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnérabilité Spectre v2 : Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected
Vulnérabilité Srbds : Mitigation; Microcode
Vulnérabilité Tsx async abort : Not affected

Versions of relevant libraries:
[pip3] numpy==1.23.5
[pip3] torch==2.1.2
[pip3] torchaudio==2.1.2 cu118
[pip3] torchvision==0.16.2 cu118
[pip3] triton==2.1.0

Les premières lignes me font craindre le pire, mais je tente le coup sous Kdenlive. Dans les paramètres de configuration de kdenlive je choisis Whisper puis au niveau de Device ma carte graphique Nvidia.

Et je lance la création d’un sous titre automatique à partir de la commande Speech Recognition, mais malheureusement je n’irai pas plus loin que cette erreur

/usr/local/lib64/python3.10/site-packages/torch/cuda/__init__.py:190: UserWarning: 
Found GPU0 NVIDIA GeForce GTX 760 (192-bit) which is of cuda capability 3.0.
PyTorch no longer supports this GPU because it is too old.
The minimum cuda capability supported by this library is 3.7.

warnings.warn(
Traceback (most recent call last):
File "/usr/share/kdenlive/scripts/whispertosrt.py", line 54, in <module>
sys.exit(main())
File "/usr/share/kdenlive/scripts/whispertosrt.py", line 33, in main
result = whispertotext.run_whisper(source, model, device, task, language)
File "/var/share/kdenlive/scripts/whispertotext.py", line 53, in run_whisper
model = whisper.load_model(model, device)
File "/home/olivier/.local/lib/python3.10/site-packages/whisper/__init__.py", line 146, in load_model
checkpoint = torch.load(fp, map_location=device)
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1014, in load
return _load(opened_zipfile,
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1422, in _load
result = unpickler.load()
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1392, in persistent_load
typed_storage = load_tensor(dtype, nbytes, key, _maybe_decode_ascii(location))
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1366, in load_tensor
wrap_storage=restore_location(storage, location),
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1296, in restore_location
return default_restore_location(storage, map_location)
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 381, in default_restore_location
result = fn(storage, location)
File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 279, in _cuda_deserialize
return obj.cuda(device)
File "/usr/local/lib64/python3.10/site-packages/torch/_utils.py", line 114, in _cuda
untyped_storage = torch.UntypedStorage(
RuntimeError: NVML_SUCCESS == r INTERNAL ASSERT FAILED at "../c10/cuda/CUDACachingAllocator.cpp":1154, please report a bug to PyTorch.

Ça marche en revanche je repasse en mode CPU

Le résultat est plutôt pas mal quand on choisit le français avec une bonne diction en revanche la traduction automatique n’a pas marché.

Laisser un commentaire