Domanda

Sono uno studente di ingegneria e devo risolvere un problema accademico per quanto riguarda l'elaborazione del segnale.

Fondamentalmente, dato un segnale DTMF in formato WAV, devo identificare la sequenza numerica che ha codificato. Devo farlo utilizzando un'analisi discreta di Transform Fourier in Ambiente MATLAB, per creare uno script che legge il file WAV e tramite il processo identifica i numeri nel tono di linea.

Sto avendo problemi nel senso che non sono molto confortevole con l'ambiente Matlab e l'intera analisi discreta di Fourier è anche molto nuova per me, quindi mi sento un po 'perso.

Qualcuno ha dei buoni consigli o puntatori che possono condividere?

È stato utile?

Soluzione

A DFT (o FFT) è eccessivo per il rilevamento DTMF.Hai solo bisogno di 2 x 4 filtri Goertizie per rilevare i toni bassi e alti.L'uscita di ciascun filtro Gotzel dovrà essere bassa passata filtrata per evitare il rilevamento del rumore, ma diverso da quello che è piuttosto semplice.

Se l'uso di DFT / FFT è obbligatorio, allora l'approccio generale sarebbe:

    .
  • per ogni blocco di campioni di input
      .
    • Applica una finestra adatta (ad esempio Hanning)
    • Esegui DFT
    • Calcola la grandezza di ciascun bin DFT (RE * RE + IM * IM)
    • misura la grandezza a ciascuno degli 8 contenitori che corrispondono ai 2 x 4 dtmf toni
    • Se si dispone di un tono di gruppo elevato e un tono di gruppo basso che ha una grandezza significativamente maggiore rispetto agli altri toni del gruppo, è stata rilevata una coppia di tono DTMF

Altri suggerimenti

Un DFT di magnitudo di dati reali è praticamente equivalente a N / 2 I filtri ortogonali goertzel di lunghezza N. e un FFT è solo un algoritmo DFT veloce.

Se è necessario utilizzare un FFT perché questa è parte delle specifiche, prestare attenzione ai bidoni FFT che corrispondono alle frequenze dei filtri Goertizel necessari per acquisire i toni DTMF richiesti e convertire il risultato complesso in magnitudini. .

fft_bin_frequency = fft_bin_number * sample_rate / fft_length ;
.

Sanity Controllare eventuali toni sospetti contro l'energia totale della magnitudine FFT.Se il rapporto è "piccolo", potrebbe essere solo rumore nel cestino FFT invece di un tono DTMF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top