Radio Giurgiu AI Radio Giurgiu AI
⚡ Architecture & Engineering Specs

Cum Funcționează Radio Giurgiu AI

O privire tehnologică agnostică asupra arhitecturii software autonome: de la ingestia datelor locale în timp real și generarea contextuală de discurs, până la procesarea acustică 15-Band Multiband DSP și emisie 24/7 cu atenuară dinamică.

Diagramă de Arhitectură & Flux Date

🌐 Web Scrapers Știri, Meteo, Trafic 📲 WhatsApp Router Dedicații & Cereri 🎵 Music Library Onset Density 1-5 🧠 Scripting Engine Generare discurs DJ Cârlig dinamic & Reguli 🎙️ Voice Synthesizer Neural TTS Romanian Audio Pre-buffering 🔀 Scheduler & Auto-Mixer Rhythmic Energy Balancing BBC/CHR Jingle Overlap 🎛️ 15-Band Multiband DSP Crossover 25Hz - 15kHz dynaudnorm + acompressor 📻 Icecast Server Shoutcast Stream 24/7 ICY Metadata Broadcaster 📱 Mobile & Web Android Auto IPC Firebase REST Sync

Decizii Logice de Arhitectură (Engineering Commentary)

⚡
Onset Density vs RMS Volume
Decizie: Clasificarea energiei muzicale (scara 1-5) se realizează prin măsurarea densității transienților ritmici (beats/sec) și a centroidului spectral, NU prin volumul maxim RMS dBFS.
if onset_density < 1.2: energy = 1 # Balade
elif onset_density < 2.2: energy = 3 # Mid-tempo
elif onset_density >= 3.2: energy = 5 # EDM/Dance
🎛️
15-Band Multiband DSP
Decizie: Semnalul audio este împărțit în 15 benzi independente de frecvență. Fiecare bandă aplică secvențial dynaudnorm (nivelare dinamică) urmat de acompressor (compresie).
# Crossover Frequency Cutoffs (Hz)
cutoffs = [25, 50, 100, 200, 400, 800, 1500, 2500, 4000, 6000, 8000, 10000, 12000, 15000]
⏱️
Latență Scăzută Look-Ahead
Decizie: Fereastra de analiză f (look-ahead) din filtrelor de normalizare pe benzi este limitată strict la intervalul 100ms - 250ms.
# Previne WinError 10053 socket drops
dynaudnorm = f=150:g=15:p=0.85
🔊
Profil Spectral Pink-Noise
Decizie: Țintele de volum (peak p) respectă curba logaritmică a auzului uman: p=0.90 pe sub-bass (25Hz) până la p=0.45 pe înalte (15kHz) pentru bas cald și fără oboseală acustică.
target_peak = base_peak * 10^(eq_gain/20)
# Out-of-bounds gain apply post-comp
🎙️
Mixaj Jingle-uri BBC / CHR
Decizie: În cazul jingle-urilor de tip Combo (beat la început + acapella la final), intro-ul melodiei noi începe exact când se oprește beat-ul jingle-ului, iar vocea acapella cântă peste intro-ul piesei.
overlap_sec = duration_sec - beat_drop_sec
# Vocals finish before track vocals
🔒
Zero-Lock WAL SQLite
Decizie: Toate interogările din bucla de emisie și worker-ele de fundal execută necondiționat PRAGMA journal_mode=WAL și timeout=30.0s, eliminând blocajele de bază de date.
PRAGMA journal_mode=WAL;
PRAGMA busy_timeout=30000;

Specificații Tehnice & Arhitecturale Detaliate

1. Motorul de Ingestie Date & Router WhatsApp

Sistemul colectează continuu semnale din surse locale (starea vremii în Giurgiu, timpii de așteptare din Vama Giurgiu-Ruse, știri administrative și monitorizarea prețurilor din supermarket-urile locale). În plus, modulul ScraperRouter procesează cererile primite pe WhatsApp: melodiile cerute sunt auditate prin filtrul de realitate media, descărcate și introduse în coada de emisie fără intervenție umană.

2. Generarea Discursului & Cârligul Dinamic

Intervențiile DJ-ului nu folosesc fraze șablon. Fiecare intervenție deschide cu un cârlig dinamic (curiozități, știri trăsnite sau trivia muzicală) din 4 categorii de rotație, după care urmează prezentarea piesei și informația utilitară locală.

3. Motorul Master DSP pe 15 Benzi (Real-Time Audio Processing)

Procesarea sonoră finală se execută printr-un lanț DSP multi-bandă pe 15 frecvențe crossover. Spre deosebire de un compresor simplu pe o singură bandă (care provoacă fenomenul de "pumping" pe voce când basul este puternic), arhitectura pe 15 benzi menține o separare acustică perfectă:

4. Mobil & IPC Service (Android Auto)

Aplicația nativă de mobil folosește un MediaBrowserService securizat prin legătură IPC Binder nativă (intent.action == "android.media.browse.MediaBrowserService"), asigurând compatibilitate 100% cu interfața Android Auto și notificările din sistemul de operare.