Ich versuche, Fast Fourier Transform in einer .3gpp Audiodatei durchzuführen. Die Datei enthält eine kleine Aufnahme von 5 Sekunden in 44100 kHz vom Mikrofon des Telefons.
Jeder Java-FFT-Algorithmus, den ich finden kann, benötigt nur double [], float [] oder Complex [], aus offensichtlichen Gründen, aber ich lese die Audiodatei in einem Byte-Array, also bin ich irgendwie verwirrt darüber, wohin ich von hier gehe. Das einzige, was ich finden konnte, ist die Antwort auf eine vorherige Frage:
Android-Audio-FFT zum Abrufen bestimmter Frequenz Magnitude mit Audiorecorder
Aber ich bin nicht sicher, ob das die richtige Vorgehensweise ist oder nicht. Jeder mit etwas Einblick?
Es gibt keine Alternative. Sie müssen eine Schleife ausführen und jedes Element des Arrays separat darstellen.
Ich mache das gleiche für Shorts, die ich als Schwimmer fft:
%Vor%Wenn Sie wirklich 16 Bit PCM haben, aber es als ein Byte [] haben, dann können Sie dies tun:
%Vor%dann
%Vor%Wenn Sie nicht mit einer seltsamen und schlecht entworfenen Klasse arbeiten, die Ihnen zuerst das Byte-Array gab, sollten die Designer dieser Klasse die Bytes gepackt haben, damit sie konsistent mit der Art sind, wie Java Bytes konvertiert (2 gleichzeitig). zu Shorts.