# **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** ```sh 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)** ```sh 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ó** ```json { "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**: ```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.