3.9 KiB
Workflow per Analitzar i Transcriure Arxius d’Àudio de Ràdio
Aquest esquema mostra el procés per a detectar patrons (falques, separadors), identificar veus i transcriure l’àudio de manera automàtica.
s'ha instal·lat una instància d'A.N.a.B. https://secre.xab.cat/index.php
A.N.a.B. és un conjunt d'eines genials (coolkit) per gestionar arxius d'àudio de manera col·laborativa per a un grup de persones que volen compartir documents sonors: conferències, remescles musicals o arxius de ràdio.
- Pots importar tots els teus documents d'àudio a partir de fitxers d'àudio i vídeo amb una simple URL.
- El sistema extraurà una forma d'ona dels teus fitxers i només emmagatzemarà això al teu servidor.
- No emmagatzemarà el fitxer d'àudio ni l'àudio extret d'un vídeo, sinó només la forma d'ona.
- La proporció de forma d'ona a fitxer d'àudio és aproximadament d'1/10.
https://github.com/chevil/anab
[INPUT] → [Arxius MP3] → [Fingerprinting] → [Reconeixement de Veu] → [Transcripció] → [OUTPUT]
** 1. Captura i Processament Inicial**
- Entrada: Arxius
.mp3
en blocs d'1 a 5 hores. - Conversió a format compatible (
ffmpeg
per convertir a.wav
si cal) - Divisió en segments més manejables (
pydub
,sox
offmpeg
)
+--------------------------------+
| input/audio_20240201.mp3 |
+--------------------------------+
│ (ffmpeg / pydub)
▼
+--------------------------------+
| audio_20240201_segment1.wav |
| audio_20240201_segment2.wav |
+--------------------------------+
** 2. Identificació de Falques i Separadors**
- Objectiu: Localitzar segments recurrents a l’àudio (falques publicitàries, sintonies, talls informatius...)
- Fingerprinting amb
audfprint
oChromaprint
- Comparació amb una base de dades prèviament entrenada
+---------------------+
| Analitzant hash |
+---------------------+
│ (audfprint match)
▼
+---------------------+
| Coincidència! |
| Falca detectada |
+---------------------+
** 3. Diarització i Identificació de Veus**
- Objectiu: Saber quan parla qui en cada moment.
pyannote.audio
per segmentació de locutors- Coincidència amb mostres predefinides
pipeline = SpeakerDiarization.from_pretrained("pyannote/speaker-diarization")
diarization = pipeline("audio_segment.wav")
+---------------------+
| 0s-30s: Speaker A |
| 31s-55s: Speaker B |
| 56s-90s: Speaker A |
+---------------------+
** 4. Transcripció Automàtica**
- Objectiu: Convertir la veu en text per alimentar webs i bases de dades.
- Whisper d’OpenAI (
base
,medium
,large
) - DeepSpeech (entrenable, més privacitat)
whisper audio_segment.wav --language ca --model medium
+---------------------+
| Transcripció |
+---------------------+
| "Avui a les 9h..."|
| "Bon dia..." |
+---------------------+
** 5. Generació de Resultats i Integració**
- Objectiu: Guardar i distribuir els resultats.
- Indexació per hora i locutor
- Exportació en format JSON, TXT, RSS per webs de notícies
- Opció de revisió manual per millorar precisió
{
"data": "2024-02-01",
"hora": "09:00",
"locutor": "Speaker A",
"text": "Bon dia, comencem el butlletí informatiu..."
}
Implementació Bàsica en Python
Exemple de pipeline bàsic en Python:
import whisper
model = whisper.load_model("medium")
result = model.transcribe("audio_segment.wav")
print(result["text"])
Conclusions
✔ Automatització del flux de treball des de la captura fins a la transcripció.
✔ Identificació de patrons i locutors per segmentar millor el contingut.
✔ Sistema escalable per gestionar volums grans d’àudio de ràdio de forma eficient.
✔ Possibilitat d’integració en APIs i CMS per difondre contingut automàticament.