Passa ai contenuti principali

Storia di un cognome sintetizzato


Mi è venuta questa idea: creare una voce dal nulla, rovinarla apposta con un fischio fastidiosissimo, per poi riuscire a ripulirla.
Ho deciso di sintetizzare la parola "ROSSI". Non registrarla, proprio crearla da zero basandomi sul teorema di Fourier. Questo teorema in pratica ci dice che qualsiasi suono può essere rappresentato (e quindi ricreato) sommando tante onde sinusoidali.
Quindi, con l'aiuto dell'IA, ho creato uno script Python che prende una frequenza base di 150 Hz (voce maschile tipo) e costruisce ogni pezzo della parola separatamente.
La R viene generata come una vibrazione periodica intorno ai 25 Hz che modula la voce base, un po’ come succede nella R arrotata.
Poi la O con le formanti (che sono le risonanze tipiche di ogni vocale) piazzate a 500, 900 e 2600 Hz circa.
La doppia S è fondamentalmente rumore filtrato, sintetizzata dal rumore casuale privato delle frequenze basse, lasciando solo quelle sopra i 3000 Hz.
Per la I si utilizzano formanti ancora più alte. Tutto questo campionato a 48 kHz, che è abbondantemente sopra il limite di Nyquist-Shannon (che raccomanda di campionare almeno al doppio della frequenza massima).
Bene, a questo punto si ottiene una bella parola sintetica. Troppo facile no?
Così ho pensato bene di rovinarla mettendoci sopra un fischio a 3000 Hz bello forte, ampiezza 1.2, praticamente più alto della voce stessa. Ho aggiunto anche del rumore per fare le cose per bene. Il risultato è un audio orribile dove non si capisce più niente, classico caso di rapporto segnale-rumore andato a farsi benedire.
Però ecco il bello. Ho tirato fuori un filtro notch, uno di quei filtri IIR con risposta impulsiva infinita, e l'ho settato con il Q = 30 sulla frequenza esatta del fischio. Un filtro notch è tipo un bisturi per l'audio: toglie una frequenza specifica lasciando tutto il resto quasi intatto.
In realtà lavora nel dominio del tempo, ma il suo effetto si manifesta nel dominio della frequenza (convoluzione nel tempo = moltiplicazione in frequenza, cose da trasformata di Fourier) e usando pochi coefficienti riesce a essere super preciso.
L'ho applicato con filtfilt, che è una funzione che passa il segnale avanti e indietro attraverso il filtro, così non hai problemi di fase che ti sballerebbero la forma d'onda originale. E funziona!
Ho fatto gli spettrogrammi con la FFT e si vede chiarissimo: prima c'era questa riga luminosa continua a 3000 Hz che copriva tutto, dopo è sparita. La riduzione è stata di circa il 93-94%, mentre le formanti della voce sono rimaste esattamente dove dovevano stare.
Tutto questo è proprio la dimostrazione pratica di come funziona la teoria.
Fourier ci fa vedere il segnale nel dominio delle frequenze dove le cose diventano ovvie – vedi il fischio, vedi la voce, sono separati in frequenza quindi li puoi trattare separatamente.
Nyquist ti garantisce che campionando bene non perdi informazione.
I filtri lineari tempo-invarianti ti danno gli strumenti per manipolare il tutto.
Queste tecniche ormai vengono usate tutti i giorni.
  1. Il ronzio della corrente a 50 Hz che senti nelle registrazioni? Filtro notch.
  2. Feedback nei concerti? Filtro notch.
  3. Interferenze nelle radio? Stessa storia. Quando l'interferenza è a banda stretta e sai dov'è in frequenza, il notch filter è perfetto.
Lo script è completamente parametrico: si possono cambiare parametri, provare frequenze diverse, vedere cosa succede se si cambia il Q del filtro o se si usano altri tipi di filtro. È un modo concreto per capire molta della matematica alla base dell'elaborazione del segnale audio.
Quando senti la differenza tra l'audio sporco e quello pulito capisci veramente cosa hanno fatto Fourier e compagnia bella. Non è teoria astratta ma è roba che si utilizza nel mondo reale.


Audio sporco


Audio pulito


















Post popolari in questo blog

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Generatore Markmap HD

Pagina per il download di  Memento Lite Generatore Markmap Avanzato - Specifiche per l'utente finale Scopo principale: l'applicazione “Generatore Markmap Avanzato” permette agli utenti di trasformare testo scritto in formato Markdown in mappe mentali interattive. Offre funzionalità per creare, visualizzare, salvare, modificare, gestire ed esportare queste mappe mentali in vari formati. Interfaccia utente: l'interfaccia è strutturata nelle seguenti sezioni principali: Link al blog esterno: un link “🌐 Visita il Blog: Pensieri d'assestamento” che apre il blog associato in una nuova scheda. Intestazione (Header): Titolo: “Generatore Markmap Avanzato”. Sottotitolo: “Trasforma, salva e condividi il tuo testo Markdown in mappe mentali interattive”. Area Principale dei Contenuti: divisa in due pannelli affiancati (o impilati su schermi piccoli): Pannello di Input (Editor Markdown): Titolo: “✏️ Editor Markdown”. Area di Testo: un campo multiriga dove l...

Neural Tic-Tac-Toe Lab

Questo articolo presenta l'implementazione di una rete neurale specializzata nel gioco del tris (tic-tac-toe), addestrata mediante una metodologia innovativa basata sull'enumerazione completa degli stati di gioco. L'approccio supera le limitazioni dei metodi tradizionali di campionamento casuale, garantendo una copertura totale dello spazio delle configurazioni possibili. Struttura della rete neurale La rete implementata utilizza un'architettura feed-forward compatta con 9 neuroni di input, 16 neuroni nel layer nascosto e 9 neuroni di output. I neuroni di input ricevono la rappresentazione numerica dello stato della board (-1, 0, 1 per ciascuna delle 9 caselle), mentre i neuroni di output producono valutazioni numeriche per ogni possibile mossa. Il layer nascosto utilizza 16 neuroni con funzione di attivazione relu per introdurre capacità di apprendimento non-lineare. La rete contiene complessivamente 297 parametri: 144 pesi per le connessioni input-hidden, 16 bi...