Penso che ciò che stai proponendo sia fattibile in teoria, ma in pratica i client e gli standard web non sono ancora sufficientemente maturi. Ad esempio, dai un'occhiata a questo interessante blog su audio synthesis in JavaScript.
Ora, per la teoria:
Alternativa 1: Attendere che i browser per aggiungere il supporto per un formato di streaming audio (tipicamente, il tag audio attualmente supporta WAV, OGG e/o MP3).
Alternativa 2: implementazione streaming in corso ...
Per il lato server (la cosa di input audio "mic") presumo che tu sia libero di fare praticamente quello che vuoi. Ad esempio, dovrebbe essere possibile non collegare effettivamente il microfono al server, ma piuttosto consentire al server di eseguire una sorta di processo di transcodifica da un'altra sorgente/server. Quindi è possibile avere un'applicazione CGI/FastCGI a cui i client Web si connettono per ottenere l'ultima finestra del flusso (parte dello stream, ad esempio 1-5 secondi?).
Dal lato del client Web, è possibile utilizzare il tag audio e controllarlo da JavaScript per aggiornarlo periodicamente con nuove finestre di flusso. L'accodamento di campioni audio non è supportato, quindi è necessario elaborare una sorta di meccanismo di sincronizzazione personalizzato. Una soluzione potrebbe essere quella di utilizzare due campioni audio simultanei che si dissolvono in dissolvenza (riducendo così al minimo i clic & hickup risultanti da un tempo impreciso).
Grazie per la risposta.Proverò questa soluzione stasera! – Zakaria
In questo modo i dati vengono effettivamente trasmessi o solo transcodificare un file audio e inviare il tutto? Poiché la domanda richiede l'ingresso microfonico, non sarebbe un file audio sul server, ma un flusso. Ho guardato la fonte, ma non sono sicuro che questo funzionerebbe per l'input microfonico o simili al volo. – sworoc
Immagino che mandi tutto, ma la radio internet funziona grazie al fatto che gli mp3 non devono segnare dove si trova la fine del file - e suppongo che Ogg Vorbis faccia lo stesso. Quindi dovremmo controllare se mandare un file all'infinito (o dividerlo su blocchi più piccoli e inviarlo parzialmente, e poi giocare insieme nel browser di un client) farebbe il trucco. – flegmatyk