Newsgroup: it.comp.lang.c++
Titolo: Le orecchie del mio computer ...

Ciao. 
Mi chiamo Daniele De Luca e sono un programmatore. Sto studiando un sistema
di riconoscimento sonoro, ma sto brancolando nel buio. AIUTO!!! cerco sorgenti
C++ (io ho il Borland C++ 3.1) sotto DOS che permettano di gestire una scheda
sonora (SoundBlaster probabilmente).
Il mio sistema dovrebbe distinguere  2 o 3 oggetti "ascoltando" (e classificando) il rumore che essi producono cadendo su una certa superficie.
Se qualcuno può aiutarmi, GRAZIE MILLE.
Ciao.
Daniele.
--
Automatic posted from 
maggiore.dsnet.it
 [195.32.0.15]
via Mailgate Server - 
http://www.mailgate.org

Daniele.
Ciao,
Mi sento in dovere di rispondere poiche' parecchi anni fa ho
realizzato una macchina che faceva esattamente la funzione che hai
descritto. 
E sono ancora molto affezionato a quel poco fortunato progetto che ho
proprio voglia di parlarne.
Negli anni in cui l' M24 della Olivetti era il Pc piu' avanzato sul
mercato, una Fonderia Italiana mi aveva chiesto un metodo automatico
per selezionare raccordi in ghisa per idraulica.
Ed io, vista la notevole sonorita' del prodotto, ho proposto una
selezione acustica.
Infatti il committene mi ha poi ordinato un prototipo che ho
realizzato in pochi mesi.
Il prototipo e' (o era ? forse adesso lo hanno demolito) una macchina
lunga una ventina di metri in elettrosaldato composta da:
- un traslatore a tappeto che sollevava e lasciava cadere (altezza 10
cm) i pezzi su una specie di incudine;
- un microfono vicino all'incudine collegato ad una scheda per il Pc
autocostruita, che acquisiva il segnale;
- ovviamente il mitico m24.
- I pezzi dopo aver battuto sull'incudine cadevano su un altro tappeto
traslante completo di  palette di espulsione.
Al momento buono una o piu' delle 20 palette della macchina si
azionava e spediva il pezzo nel cassone appropriato tutto controllato
in interrupt dal Pc.
Era veramente spettacolare vederla funzionare e soprattutto
affascinava la sequenza di DING DANG TOK CRIK che si sentiva in tutto
il capannone.
Purtroppo il software, che su qualche dischetto ho ancora, non serve
piu' a molto perche' l'ho scritto in assembler strettissimo per avere
la speranza di riuscire a far fare il l'arduo compito al povero (col
senno di poi) M24.
Comunque la logica della parte acustica era questa:
1) Trigger sul segnale del micro che quando superava una soglia
avviava la conversione A/D per qualche millisecondo a 40kSample/sec
(banda 20 kHz).
2) filtro antialiasing e windowing hardware per risparmiare risorse di
calcolo (il windowing tipo hanning o hamming non mi ricordo quale)
3) sui samples, un algoritmo di FFT anzi piu` precisamente un power
spectrum trasformava  il timewave fornendo gli addensamenti di energia
nel dominio della frequenza, l'algoritmo lo avevo tradotto da un
application notes del DSP TMS32010.
4) un estrattore dei picchi di frequenza con le 5 energie piu'
significative completava la caratterizzazione del segnale.
5) poi una procedura complicata valutava le varie  ampiezze e
frequenze di ogni DING cercando la corrispondenza statisticamente piu'
vicina ad un dbase precedentemente appreso (vedi distanza di
Mahalanobis e le nuvole di punti in uno spazio multidimensionale).
Il problema piu' pesante era che il catalogo dei pezzi da riconoscere
contava quasi un centinaio di figure ed in piu' ogni figura emetteva 3
o 4 tipologie di suoni a seconda di come cadeva.
risultato quasi 500 caratterizzazioni di suoni nel data base.
Nonostante tutto cio' il sistema funzionava! e riconosceva una figura
ogni 4 secondi con una accuratezza del 92%.
il poblema era proprio qui' il 92% per il committente era troppo
poco!! volevano almeno!! :-) il 99,5 %, come avveniva gia' con la
selezione manuale (di 22 persone).
Ed e' stato inutile spiegare che questo era il primo ed entusiasmante
risultato di un prototipo che sarebbe stato degno di una vera e
propria attivita' di ricerca, e che nel mentre era comparso sul
mercato il (potentisimo!! :-> ) 286 che avrebbe drasticamente
aumentato la velocita' di elaborazione.
Cosicche' la sfortunata creatura e' stata stroncata poco dopo la
nascita. Spero che questo racconto estremamente drammatico ti potra'
essere di aiuto.
Saluti cordiali a tutti.
Massimo Ippolito. 
 
 

 Il mio sistema dovrebbe distinguere  2 o 3 oggetti "ascoltando" (e classificando) il rumore che essi producono cadendo su una certa superficie.
Non ho del codice da proporti, ma quella che proponi e' una 
applicazione che si risolve magnificamente con un particolare 
algoritmo che si chiama rete neurale, se hai voglia e tempo di leggere
sull'argomento, il tuo sistema di riconoscimento diventera' quasi 
infallibile e potrai riconoscere ben piu' di  2 o 3 oggetti.
Cercando neural networks su internet si trova tantissimo materiale.
** Email replies to 
md7...@mclink.it
 **
visit my homepage at: 
http://www.volftp.tin.it/IT/IT/ITALIANI/rullo/index.htm