ANaB/full_de_ruta.md

3.9 KiB
Raw Blame History

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 o ffmpeg)
+--------------------------------+
|  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 o Chromaprint
  • 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 dOpenAI (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 dintegració en APIs i CMS per difondre contingut automàticament.