// OpenAI Realtime two-presenter audio backend; no external WebSocket library required.
if (!class_exists('SV_OpenAI_Realtime_Podcast')) {
class SV_OpenAI_Realtime_Podcast {
private static function readn($s,$n){$b='';while(strlen($b)<$n&&!feof($s)){$p=fread($s,$n-strlen($b));if($p===false||$p==='')break;$b.=$p;}return strlen($b)===$n?$b:false;}
private static function send($s,$data){$n=strlen($data);$h=chr(0x81);if($n<126)$h.=chr(0x80|$n);elseif($n<65536)$h.=chr(0xfe).pack('n',$n);else $h.=chr(0xff).pack('NN',0,$n);$mask=random_bytes(4);$p='';for($i=0;$i<$n;$i++)$p.=$data[$i]^$mask[$i%4];$frame=$h.$mask.$p;while($frame!==''){$w=fwrite($s,$frame);if(!$w)return false;$frame=substr($frame,$w);}return true;}
private static function frame($s){$h=self::readn($s,2);if($h===false)return false;$a=ord($h[0]);$b=ord($h[1]);$n=$b&127;if($n===126){$v=self::readn($s,2);if(!$v)return false;$n=unpack('n',$v)[1];}elseif($n===127){$v=self::readn($s,8);if(!$v)return false;$a64=unpack('Nhi/Nlo',$v);$n=$a64['hi']*4294967296+$a64['lo'];}if($n>12000000)return false;$mask=($b&128)?self::readn($s,4):'';$p=self::readn($s,(int)$n);if($p===false)return false;if($mask)for($i=0;$i<$n;$i++)$p[$i]=$p[$i]^$mask[$i%4];return ['opcode'=>$a&15,'data'=>$p];}
private static function pcm($key,$model,$voice,$text){
$host='api.openai.com';$path='/v1/realtime?model='.rawurlencode($model);
$ctx=stream_context_create(['ssl'=>['verify_peer'=>true,'verify_peer_name'=>true],'socket'=>['tcp_nodelay'=>true]]);
$s=@stream_socket_client('tls://'.$host.':443',$errno,$errstr,15,STREAM_CLIENT_CONNECT,$ctx);
if(!$s){error_log('[SV Realtime] connect '.$errstr);return false;}
stream_set_timeout($s,35);$nonce=base64_encode(random_bytes(16));
$req="GET $path HTTP/1.1\r\nHost: $host\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Key: $nonce\r\nSec-WebSocket-Version: 13\r\nAuthorization: Bearer $key\r\nOpenAI-Beta: realtime=v1\r\n\r\n";
fwrite($s,$req);$headers='';while(strpos($headers,"\r\n\r\n")===false&&strlen($headers)<16000){$line=fgets($s,4096);if($line===false)break;$headers.=$line;}
if(!preg_match('~^HTTP/1\\.[01] 101\\b~',$headers)){error_log('[SV Realtime] handshake '.substr($headers,0,90));fclose($s);return false;}
// Separate response for every presenter; no conversation content is generated or altered.
$session=['type'=>'session.update','session'=>['instructions'=>'Sei un doppiatore italiano. Parla ESCLUSIVAMENTE in italiano standard (it-IT) con cadenza giornalistica naturale. Leggi esattamente il testo richiesto, senza traduzioni o aggiunte. Non pronunciare istruzioni, etichette o nomi dei presentatori.','voice'=>$voice,'output_audio_format'=>'pcm16']];
$item=['type'=>'conversation.item.create','item'=>['type'=>'message','role'=>'user','content'=>[['type'=>'input_text','text'=>'Leggi ad alta voce ESATTAMENTE questo testo in italiano, senza cambiare parole e senza introduzioni: '.mb_substr($text,0,3500)]]]];
$response=['type'=>'response.create','response'=>['modalities'=>['audio'],'instructions'=>'Leggi SOLO la battuta specificata, in italiano standard, senza aggiungere parole.']];
foreach([$session,$item,$response] as $event)if(!self::send($s,wp_json_encode($event))){fclose($s);return false;}
$pcm='';$complete=false;$start=microtime(true);$error='';
while(microtime(true)-$start<105){$f=self::frame($s);if(!$f)break;if($f['opcode']===9){self::send($s,$f['data']);continue;}if($f['opcode']===8)break;if($f['opcode']!==1)continue;$e=json_decode($f['data'],true);if(!is_array($e))continue;
$type=$e['type']??'';
if($type==='response.audio.delta'||$type==='response.output_audio.delta'){$b=base64_decode($e['delta']??'',true);if($b!==false)$pcm.=$b;}
if($type==='response.done'){$complete=($e['response']['status']??'')==='completed';if(!$complete)$error=wp_json_encode($e['response']['status_details']??[]);break;}
if($type==='error'){$error=(string)($e['error']['message']??'error');break;}
}
fclose($s);
if(!$complete||strlen($pcm)<2000){error_log('[SV Realtime] failed '.$error);return false;}
return $pcm;
}
public static function synthesize($text,$key,$model,$voice,$mp3,$ffmpeg='ffmpeg'){
if(!in_array($model,['gpt-realtime-2.1-mini','gpt-realtime-2.1'],true))return false;
$pcm=self::pcm($key,$model,$voice,$text);if(!$pcm)return false;
$temp=tempnam(sys_get_temp_dir(),'svrtpcm');if(!$temp)return false;file_put_contents($temp,$pcm);
$cmd=escapeshellcmd($ffmpeg).' -nostdin -y -loglevel error -f s16le -ar 24000 -ac 1 -i '.escapeshellarg($temp).' -c:a libmp3lame -b:a 128k '.escapeshellarg($mp3).' 2>&1';
$o=[];$rc=1;exec($cmd,$o,$rc);@unlink($temp);
return $rc===0&&is_file($mp3)&&filesize($mp3)>1000;
}
}}
Caserta, ruba 300 chilogrammi di pesche: denunciatoCaserta, ruba 300 chilogrammi di pesche: denunciato
Esperto in diritto Diplomatico e Internazionale. Lavora da oltre 30 anni nel mondo dell’editoria e della comunicazione. E' stato rappresentante degli editori locali in F.I.E.G., Amministratore di Canale 10 e Direttore Generale della Società Centro Stampa s.r.l. Attento conoscitore della realtà Casertana.
Ascolta questo articoloRiproduci la versione audio
Ascolta
Caricamento in corso...
Aveva aspettato il calare della sera per mettere in atto il furto di oltre 300 chili di pesche da un terreno privato della Frazione di Sant’Andrea del Pizzone, agro del comune di Francolise, in provincia di Caserta.
Ma il 56enne di Casal di Principe è stato sorpreso dai carabinieri del Nucleo Operativo e Radiomobile del Reparto Territoriale di Mondragone proprio con le mani nel sacco.
I militari dell’Arma, immediatamente accorsi a seguito della segnalazione pervenuta sul numero di pronto intervento “112”, hanno sorpreso l’uomo mentre stava continuando a raccogliere le pesche, circondato dalle numerosissime cassette già riempite, di cui alcune già caricate sulla sua autovettura.
I Carabinieri hanno bloccato il 56enne e lo hanno accompagnato presso la Stazione Carabinieri di Sant’Andrea del Pizzone dove è stato denunciato in stato di libertà. Dovrà rispondere di furto aggravato. La frutta recuperata è stata restituita al legittimo proprietario.
A Napoli è stata presentata la conferenza di lancio del Forum Internazionale Il Metodo Mattei 2026. L’evento si terrà a Roma il 12 e 13 novembre 2026 presso il…
• leggi l’articolo
La vicenda prende le mosse da un appuntamento concordato tramite una piattaforma di annunci online. Un uomo ultrasessantacinquenne, affetto da patologie cronich…
• leggi l’articolo
Da Mondragone alla città normanna con la determinazione cucita nei guantoni. La parabola di Angelo Belli tra i pali è uno di quei racconti che accendono i rifle…
• leggi l’articolo
Napoli. -Il dado è tratto e la fase delle indagini preliminari ha ceduto il passo al giudizio. È fissata per il prossimo 3 dicembre l'udienza preliminare davant…
• leggi l’articolo
Nel borgo medievale sopra Caserta, la pizza con funghi porcini trova una cornice fatta di pietra, aria fresca e memoria urbana campana.
• leggi l’articolo
Nuovo importante riconoscimento per l’ASL Salerno e per il percorso di innovazione sanitaria che sta trasformando accessibilità e qualità dei servizi sociosanit…
• leggi l’articolo
A Sant’Arpino, nel Casertano, carabinieri hanno sequestrato un veicolo commerciale a tre ruote e un carico di rifiuti, deferendo un 33enne per gestione non auto…
• leggi l’articolo
Offerta di lavoro a Napoli per Senior Full Stack Developer presso una software house cliente di Grafton. Nessuna scadenza indicata nel bando; controllare la pag…
• leggi l’articolo
Il gaming mobile occupa ormai uno spazio importante nelle abitudini digitali degli italiani. Smartphone e tablet permettono di giocare durante una pausa, sui me…
• leggi l’articolo
Nella casa circondariale di Avellino gli agenti della Polizia Penitenziaria hanno sventato l’ennesimo tentativo di far entrare sostanze stupefacenti nell’istitu…
• leggi l’articolo
Controlli congiunti di Carabinieri e NAS in un panificio a Gricignano di Aversa: denunciato il titolare per irregolarità lavorative e igieniche; sequestrati cir…
• leggi l’articolo
Caivano - Si è conclusa nel territorio di Caivano la latitanza del 22enne Francesco Ahmetovic evaso lo scorso 13 ottobre dalla Casa di Reclusione di Carinola, i…
• leggi l’articolo
Giugliano - Un uomo di 37 anni è rimasto gravemente ferito al termine di una lite scoppiata nella tarda serata di ieri a Giugliano in Campania, nella zona di Li…
• leggi l’articolo
Michele Santoro debutta come monologhista teatrale con Siamo uomini o caporali al Teatro Karol, nell'ambito della rassegna Platealmente. Ingresso gratuito con p…
• leggi l’articolo
A Napoli, nella chiesa di Secondigliano, è in programma l’esecuzione gratuita del Requiem di Mozart diretta da Enzo Amato con un cast di solisti, nell’ambito de…
• leggi l’articolo
A Napoli arriva una guida gratuita per facilitare l’orientamento di studenti Erasmus e altri giovani stranieri: l’iniziativa, realizzata dall’associazione Noi@E…
• leggi l’articolo
A Napoli, una serata virtuale su TikTok ha messo insieme donne sopravvissute, associazioni, professionisti e rappresentanti istituzionali per rafforzare reti di…
• leggi l’articolo
Svolta nelle indagini della Squadra Mobile: mancano le telecamere nella zona del delitto, ma un testimone oculare ha fornito l'identikit dei tre assassini che l…
• leggi l’articolo
Dopo diversi mesi di utilizzo di una macchina isotonica, si può avvertire un movimento anomalo o un "gioco" nel carrello dei pesi o nei bracci di leva. Questa s…
• leggi l’articolo
Treccani Cultura racconta, attraverso la serie Onde, come gli italianismi abbiano varcato confini e culture. In vetta resta pizzaiuolo, seguito da espresso, mok…
• leggi l’articolo
Giovedì 29 ottobre il Centro Smile Dental di Napoli apre le porte alle famiglie per Sorrisi da paura, un evento speciale dedicato ai più piccoli, tra divertimen…
• leggi l’articolo
Ecco l'oroscopo completo di mercoledì 28 ottobre 2026, segno per segno, con l'analisi dei quattro ambiti richiesti e il consiglio astrologico del giorno. La gio…
• leggi l’articolo
Grafton cerca un Senior Graphic Designer per un cliente ICT con sede a Napoli. Candidatura tramite Grafton; la scadenza non è indicata nei dati disponibili.
• leggi l’articolo
Un esperimento ha riportato cellule del sangue anziane a uno stato simile a quello giovanile. Ma non è ancora un ringiovanimento dell’organismo.
• leggi l’articolo
Uno studio su 13 astronauti esamina come il cuore si adatta alla microgravità e alla gravità marziana simulata, con risultati incoraggianti ma ancora preliminar…
• leggi l’articolo
Un’analisi automatizzata di Reddit segnala sintomi inattesi associati a retatrutide non autorizzata, ma non dimostra un rapporto causale.
• leggi l’articolo
Un episodio ferroviario dell’Ottocento collega una tempesta geomagnetica ai primi segnali dei rischi per telegrafi e infrastrutture elettriche.
• leggi l’articolo
CREA pubblica un avviso informativo per assunzioni tramite collocamento mirato: 17 posti in diverse sedi italiane, tra cui Battipaglia (Campania), con candidatu…
• leggi l’articolo
Uno studio indica che un eccesso di RNA può danneggiare i mitocondri anche senza una risposta immunitaria, con possibili implicazioni per infezioni e invecchiam…
• leggi l’articolo
Portici - Restano gravissime, sebbene si registri un piccolissimo e cauto miglioramento, le condizioni di Mario Spedaliere, il 34enne tifoso del Portici rimasto…
• leggi l’articolo
Un uomo di 49 anni, con precedenti, è stato colpito da un’ordinanza di custodia cautelare in carcere nel contesto di un’indagine su detenzione ai fini di spacci…
• leggi l’articolo
Sigilli a un grande stabilimento conserviero nell’ambito dei controlli ambientali sul bacino del fiume Sarno. L’operazione, condotta dai militari del Nucleo ope…
• leggi l’articolo
Un contratto di lavoro che sarebbe stato registrato soltanto dopo la morte dell’operaio. È uno degli elementi emersi dalle indagini sulla morte di Salvatore Rus…
• leggi l’articolo
Una fabbrica clandestina di fuochi d’artificio nel centro abitato di Montesarchio, in provincia di Benevento, è stata scoperta dai Carabinieri. Un uomo, sorpres…
• leggi l’articolo
La giustizia gli ha riconosciuto il diritto al trasferimento, ma la decisione è arrivata quando ormai era troppo tardi per assistere la madre. Un maresciallo de…
• leggi l’articolo
Momenti di preoccupazione nel centro di Napoli, dove undici famiglie sono state sgomberate in via precauzionale da una palazzina al civico 37 di vico lungo Sant…
• leggi l’articolo
Il tempo cancella il reato, ma non gli effetti civili della sentenza. È questa la decisione pronunciata oggi dalla Corte di Assise di Appello di Napoli nei conf…
• leggi l’articolo