Pagina 1 di 4
Noise reduction

Inviato:
9 nov 2012, 22:52
da pierinter
Ciao a tutti ragazzi!
Sto scrivendo un software di riconoscimento vocale, che funziona molto bene devo dire, mi soddisfa molto!
Il problema è che , l'altro giorno, in fiera, ho potuto fare delle prove in un ambiente un po' rumoroso, e il risultato è stato abbastanza negativo direi.
Secondo voi, dato un clip audio, è possibile attenuare il rumore , lasciando quasi solo la voce ?
Con l'assunzione che il rumore sia costante o quasi lungo tutto il tempo del parlato, si potrebbe riuscire a fare qualche cosa ?
Grazie.
Re: Noise reduction

Inviato:
9 nov 2012, 23:11
da simo85
Ciao
pierinter una domanda, per caso stai usando un microcontrollore?
Comunque qualsiasi segnale può essere filtrato quindi attenuato.
Re: Noise reduction

Inviato:
9 nov 2012, 23:21
da pierinter
ancora no, il programma di riconoscimento gira su computer e tramite USB comanda un microcontrollore, ma il software gira su PC (in realtà ho un mac, ma ho anche windows in virtuale a disposizione che uso).
In futuro prevedo di spostare il tutto su sistema embedded, ma un passo alla volta :)
So che qualsiasi segnale può essere filtrato ed attenuato, il problema è come :
Non ho esperienza di filtraggio o altro, non conosco programmi, ho solo qualche idea 'teorica' , forse nemmeno tanto giusta, per avere un filtraggio buono.
Io credo che, statisticamente , il rumore che voglio eliminare, cioè la gente lontana che parla (ecc..) , sia più o meno lo stesso nel tempo.
Quando inizio a parlare in teoria il segnale derivante dalla mia voce dovrebbe essere abbastanza più grosso del rumore di fondo, quindi credo debba essere anche abbastanza riconoscibile
Re: Noise reduction

Inviato:
9 nov 2012, 23:42
da Nunziox
Registra con audacity una situazione di rumore.
poi da audacity seleziona la traccia che hai registrato e scegliendo dal menù "Analizza", la voce "Plot Spectrum" apparirà lo spettro in frequenza, postalo

Re: Noise reduction

Inviato:
9 nov 2012, 23:55
da pierinter
Mi piacciono queste cose ! :)
Ecco qui :

- Spectrum
- Schermata 2012-11-09 alle 22.51.33.png (153.37 KiB) Osservato 6108 volte

- WaveForm
- Schermata 2012-11-09 alle 22.47.29.png (132.16 KiB) Osservato 6108 volte
Re: Noise reduction

Inviato:
10 nov 2012, 0:15
da Nunziox
Se non sbaglio le frequenze della voce umana sono comprese tra:
500 e 2.000 Hz, se provi a eliminare le frequenze fuori questo range noti differenze?
Anche se credo non sia cosi semplice, in alternativa potresti provare a rimuovere il rumore di fondo con l'algoritmo di audacity, ricalcoli lo spettro in frequenza e lo riposti, cosi cerchiamo di capire che modifiche vengono fatte allo spettro!

Re: Noise reduction

Inviato:
10 nov 2012, 0:29
da pierinter
Devo dire che il rumore si riduce molto si...
Con il noise removal, il rumore si cancella ma ottengo una specie di fastidioso fischio.
Con l'equalizzazione invece è molto meglio, un po' di rumore rimane ma si riesce ad isolare bene la voce.
Ma il problema è che dovrei riuscire a scrivere n software (in java magari ) che riesca a fare da solo questi tagli..
Re: Noise reduction

Inviato:
10 nov 2012, 0:33
da Nunziox
Quindi lasciando solo le frequenze da 500 e 2.000 Hz il rumore si riduce, ottieni un risultato soddisfacente?
Il software è scritto in java?
Re: Noise reduction

Inviato:
10 nov 2012, 0:38
da Pioz
Forse sarebbe possibile con un circuito analogico che captati i due segnali con due microfoni separati:
-segnale vocale+eventuale rumore
-segnale rumore ambiente
ne faccia la differenza ottenendo in uscita solo quello vocale utile.
Non so però se sia un utopia riuscire a regolare l'ampiezza del segnare di rumore in modo da ottenere una buona differenza.
Re: Noise reduction

Inviato:
10 nov 2012, 0:45
da Nunziox
Forte mi piace

Ci vuole però un amplificatore differenziale con un Ac molto bassa dico bene? Che dati di targa deve avere?