Domanda

Ciao ho bisogno di downsample frequenza di campionamento di un file audio wav da 44,1 a 8 kHz. Devo fare manualmente tutto il lavoro con un array di byte ... è per scopi accademici.

Attualmente sto usando 2 classi, lavello e Fonte, al pop e spingere array di byte. Tutto va bene fino a raggiungere la parte in cui ho bisogno di downsample il blocco di dati utilizzando un'interpolazione lineare.

Dal momento che sto downsampling 44.100-8.000 Hz, come faccio a interpolare un array di byte che contiene qualcosa come 128 000 000 byte? In questo momento sto popping 5, 6 o 7 byte a seconda i% 2 == 0, i% 2 == 1 e io% 80 == 0 e spingere la media di queste 5, 6 o 7 byte nel nuovo file .

Il risultato è infatti un file audio rispetto all'originale, ma non possono essere riprodotti su windows media player (dice che c'è un errore durante la lettura del file) e c'è un sacco di rumore anche se posso sentire la strada giusta dietro la rumore.

Quindi, per riassumere le cose, ho bisogno di aiuto per quanto riguarda la parte interpolazione lineare. Grazie in anticipo.

È stato utile?

Soluzione

Credo che non si dovrebbe usare la media di quei campioni che sarebbe un filtro mediano, non esattamente downsampling. Basta usare ogni campione / 6 ° / 7 ° 5 ° e scrivere che al nuovo file.

Che probabilmente hanno alcune artefatti di aliasing, ma potrebbe nel complesso essere riconoscibile.

Un altro, più complesso soluzione, ma probabilmente uno con risultati migliori, qualità-saggio, sarebbe quello di convertire prima i campioni in una distribuzione di frequenza utilizzando una FFT o DFT e poi riconvertirlo con la frequenza di campionamento appropriata. E 'stato un po' che ho fatto una cosa del genere, ma è sicuramente fattibile. Potrebbe essere necessario smanettare un po 'per farlo funzionare correttamente, però.

Anche quando non prendendo un FT della gamma completa, ma piuttosto in segmenti si ha il problema dei confini del segmento in corrispondenza dello 0. Alcuni anni fa, quando ho giocato con queste cose io non sono venuto su con una soluzione praticabile per questo (dal momento che genera artefatti pure), ma probabilmente c'è uno se avete letto i libri giusti: -)

Per quanto riguarda WMP lamentano il file: ha modificare l'intestazione si scrive di conseguenza, a destra

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