STT: Transcripció àudio català (i castellà)

De wikijoan
Salta a la navegació Salta a la cerca

Whisper

ho hem de fer en un venv:

mkdir model-whisper
cd model-whisper
python3 -m venv whisper-env
source whisper-env/bin/activate

() pip install -U pip
() pip install -U openai-whisper

i ara ja podem fer una transcripció:

Recordatori punt de muntatge

per posar el fitxer t0001.wav al servidor, recordem que tenim una unitat muntada en el portàtil: ~/servidorIA. Hem de mirar si ja el tenim muntat:

mount | grep servidorIA

si no està muntat el muntem:

$ sshfs joan@192.168.1.184:/home/joan/projectes ~/servidorIA
$ sshfs joan@79.156.157.3:/home/joan/projectes ~/servidorIA2 -p 2222

i si no es pot muntar perquè el directori no està buit, podem eliminar el contingut:

rm -rf ~/servidorIA/*

i aleshores ja podem muntar. O bé millor muntar-ho sense haver d'eliminar el contingut:

sshfs -o nonempty joan@192.168.1.184:/home/joan/projectes ~/servidorIA

per desmuntar-lo:

fusermount -u ~/servidorIA

i en el servidor copiem el wav de la carpeta compartida al directori de treball:

$ mv /home/joan/projectes/t0001.wav .

I ara ja podem fer la transcripció:

whisper t0001.wav --language Catalan --model turbo

100%|██████████████████████████████████████| 1.51G/1.51G [00:14<00:00, 114MiB/s]
[00:00.000 --> 00:01.160]  Gràcies per ser amb nosaltres.
[00:01.760 --> 00:02.040]  Hola.
[00:02.280 --> 00:06.400]  Helen, pot ser un problema ser crònicament amables i complements?
[00:07.100 --> 00:10.580]  Sí, perquè quan parlem de ser crònicament amables i complements
[00:10.580 --> 00:14.160]  estem parlant que ens estem traient a nosaltres
[00:14.160 --> 00:17.600]  perquè són persones que no sabem mai escoltar-nos.
...
whisper t0001.wav --language Catalan --model turbo --output_format txt

Amb un script python: prova_whisper.py:

import whisper

model = whisper.load_model("turbo")

result = model.transcribe(
    "t0001.wav",
    language="ca"
)

print(result["text"])
$ python3 prova_whisper.py

I una cosa important si el que busques és català amb la màxima qualitat

Existeix també un model específic de català, whisper-large-v3-ca-3catparla, desenvolupat pel Projecte AINA, entrenat específicament per a reconeixement automàtic de veu en català.

Per instal·lar aquest model:

() pip install torch transformers accelerate

creem el fitxer transcribe.py:

import torch
from transformers import pipeline

model_name = "projecte-aina/whisper-large-v3-ca-3catparla"

pipe = pipeline(
    "automatic-speech-recognition",
    model=model_name,
    device=0 if torch.cuda.is_available() else -1,
)

result = pipe("t0001.wav")

print(result["text"])
$ python3 transcribe.py 
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
config.json: 100%|█████████████████████████████████████████████████████████████████████████████████| 1.35k/1.35k [00:00<00:00, 6.20MB/s]
pytorch_model.bin.index.json: 100%|██████████████████████████████████████████████████████████████████| 112k/112k [00:00<00:00, 35.7MB/s]
model.safetensors.index.json: 100%|███████████████████████████████████████████████████
...

el primer que fa és descarregar el model

ValueError: You have passed more than 3000 mel input features (> 30 seconds) which automatically enables long-form generation

(li he passat un àudio de més de 30 segons, però funcionaria).

Ho provo amb el /home/joan/projectes/NLP_catala/gravar_so_intern/samples/t0014/c993.wav i funciona correctament: el número de seguidors a youtube en directe

la segona vegada que ho executo ja no caldrà descarregar el model. El que fa és carregar els pesos del model. Recordar que estic treballant en un venv, amb tots els avantatges que això comporta.


creat per Joan Quintana Compte, octubre 2026