Più veloce e più efficiente di upsampling di routine per l'Audio in Java
-
02-10-2019 - |
Domanda
Ho bisogno di convertire i campioni audio da 11025 e 22050 a 44100;Sto cercando il metodo più rapido e migliore il suono della routine di conversione.Ho bisogno che la risposta sarà data in puro Java, senza la necessità di routine esterne o librerie.La fonte è un array di pochi valori che rappresentano i canali destro e sinistro, interleaved come LRLRLRLR
Ho sentito dire che gaussiana trasformazione è il migliore, ma è una cpu killer.
Aggiornamento
Per aggiungere ulteriori dettagli, vorrei un mix tra il migliore e il più veloce.La risposta dovrebbe dare grande suono audio adatto per vicino di comunicazione in tempo reale.
Aggiorna 2
Sto cercando alcuni brevi esempi di codice per questo, dovrebbe essere ez punti di audio guru
Soluzione
è possibile (in ultima analisi) basta usare un abete dopo il riempimento di ogni altro campione con 0s - sei upsampling da 2 o 4.questo sarà molto veloce in realtime.la qualità audio può essere un bene per la maggior parte delle applicazioni.
Altri suggerimenti
Beh, è difficile per ricampionare è abbastanza lento in modo che non è in realtime :-) Uno dei migliori e ancora soluzioni veloci è quello di fare avanti FFT, e poi fare inversione di FFT con qualsiasi frequenza di campionamento di cui hai bisogno.
Si può implementare questa tua, o copiare e incollare qualsiasi FFT attuazione.
Questo potrebbe funzionare come 100x realtime o più veloce, non è necessario 1000x più veloce (in questo caso si può andare per lineare o interpolazione bicubica) :-)