Definiert einen Ringpuffer und einige Dienstfunktionen zur Vorbereitung der Audio-Eingabebeispiele.
Sie unterhält einen Ringzwischenspeicher, um Eingangsaudiodaten zu speichern. Clients konnten Eingabeaudiodaten über „load“-Methoden einspeisen und über die Methode „getTensorBuffer“ auf die aggregierten Audiobeispiele zugreifen.
Diese Klasse kann Audioeingaben nur in Float (in AudioFormat.ENCODING_PCM_16BIT
) oder Short (in AudioFormat.ENCODING_PCM_FLOAT
) verarbeiten. Intern werden alle Audiobeispiele in der PCM-Float-Codierung konvertiert und gespeichert.
Typische Verwendung in Kotlin
val audioData = AudioData.create(format, modelInputLength) audioData.load(newData)
Eine weitere Beispielverwendung mit AudioRecord
val audioData = AudioData.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { audioData.load(audioRecord) }
Verschachtelte Klassen
Klasse | AudioData.AudioDataFormat | Umfasst einige Konstanten, die das Format der eingehenden Audioproben beschreiben, nämlich die Anzahl der Kanäle und die Abtastrate. |
Public Methods
Statisches AudioData |
create(AudioData.AudioDataFormat-Format, int sampleCounts)
Erstellt eine
AudioRecord -Instanz mit einem Ringpuffer der Größe sampleCounts * format.getNumOfChannels() . |
Statisches AudioData | |
float[] |
getBuffer()
Gibt ein Float-Array zurück, das alle verfügbaren Audio-Samples in
AudioFormat.ENCODING_PCM_FLOAT enthält (d.h. |
int | |
AudioData.AudioDataFormat | |
void |
load(short[] src)
Wandelt die
src -Eingabe-AudioSamples in ENCODING_PCM_FLOAT um und speichert sie dann im Ringzwischenspeicher. |
void |
load(float[] src, int offsetInFloat, int sizeInFloat)
Speichert die Audiobeispiele
src im Ringzwischenspeicher. |
void |
load(short[] src, int offsetInShort, int sizeInShort)
Wandelt die
src -Eingabe-AudioSamples in ENCODING_PCM_FLOAT um und speichert sie dann im Ringzwischenspeicher. |
int |
load(AudioRecord)
Lädt die neuesten Daten aus
AudioRecord ohne Blockierung. |
void |
load(float[] src)
Speichert die Audiobeispiele
src im Ringzwischenspeicher. |
Übernommene Methoden
Public Methods
public static AudioData create (AudioData.AudioDataFormat-Format, int sampleCounts)
Erstellt eine AudioRecord
-Instanz mit einem Ringpuffer der Größe sampleCounts
* format.getNumOfChannels()
.
Parameter
formatieren | erwartete AudioData.AudioDataFormat an Audiodaten, die in diese Klasse geladen wurden. |
---|---|
sampleCounts | die Anzahl der Stichproben. |
public static AudioData create (AudioFormat-Format, int sampleCounts)
Erstellt eine AudioData
-Instanz mit einem Ringpuffer der Größe sampleCounts
* format.getChannelCount()
.
Parameter
formatieren | Den für das TFLite-Modell erforderlichen AudioFormat . Sie definiert die Anzahl der Kanäle und die Abtastrate. |
---|---|
sampleCounts | die Anzahl der Stichproben, die in das Modell eingespeist werden sollen |
public float[] getBuffer ()
Gibt ein Float-Array zurück, das alle verfügbaren Audiobeispiele in AudioFormat.ENCODING_PCM_FLOAT
enthält, d.h., die Werte liegen im Bereich [-1, 1].
public int getBufferLength ()
public void Laden (short[] src)
Wandelt die src
-Eingabe-AudioSamples in ENCODING_PCM_FLOAT um und speichert sie dann im Ringzwischenspeicher.
Parameter
src | Audiobeispiele in AudioFormat.ENCODING_PCM_16BIT eingeben. Bei der Eingabe über mehrere Kanäle ist das Array verschränkt.
|
---|
public void load (float[] src, int offsetInFloat, int sizeInFloat)
Speichert die Audiobeispiele src
im Ringzwischenspeicher.
Parameter
src | Audiobeispiele in AudioFormat.ENCODING_PCM_FLOAT eingeben. Bei der Eingabe über mehrere Kanäle ist das Array verschränkt. |
---|---|
offsetInFloat | Startposition im Array src |
sizeInFloat | die Anzahl der zu kopierenden Gleitkommawerte |
Löst aus
IllegalArgumentException | bei inkompatiblem Audioformat oder falscher Eingabegröße |
---|
public void load (short[] src, int offsetInShort, int sizeInShort)
Wandelt die src
-Eingabe-AudioSamples in ENCODING_PCM_FLOAT um und speichert sie dann im Ringzwischenspeicher.
Parameter
src | Audiobeispiele in AudioFormat.ENCODING_PCM_16BIT eingeben. Bei der Eingabe über mehrere Kanäle ist das Array verschränkt. |
---|---|
offsetInShort | Startposition im „src“-Array |
sizeInShort | Anzahl der Kurzwerte, die kopiert werden sollen |
Löst aus
IllegalArgumentException | Das Quellarray kann nicht kopiert werden. |
---|
public int load (AudioRecord)
Lädt die neuesten Daten aus AudioRecord
ohne Blockierung. Es werden nur ENCODING_PCM_16BIT und ENCODING_PCM_FLOAT unterstützt.
Parameter
schallplatte | eine Instanz von AudioRecord |
---|
Rückgabe
- Anzahl der erfassten Audiowerte mit einer Größe von
channelCount * sampleCount
. Wenn in AudioRecord keine neuen Daten vorhanden waren oder ein Fehler aufgetreten ist, gibt diese Methode 0 zurück.
Löst aus
IllegalArgumentException | für nicht unterstütztes Audiocodierungsformat |
---|---|
IllegalStateException | wenn Lesen aus AudioRecord fehlgeschlagen ist |
public void Laden (float[] src)
Speichert die Audiobeispiele src
im Ringzwischenspeicher.
Parameter
src | Audiobeispiele in AudioFormat.ENCODING_PCM_FLOAT eingeben. Bei der Eingabe über mehrere Kanäle ist das Array verschränkt.
|
---|