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 tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Eine weitere Beispielverwendung mit AudioRecord
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }
Verschachtelte Klassen
Klasse | TensorAudio.TensorAudioFormat | Umfasst einige Konstanten, die das Format der eingehenden Audioproben beschreiben, nämlich die Anzahl der Kanäle und die Abtastrate. |
Public Methods
statisches TensorAudio |
create(AudioFormat-Format, int sampleCounts)
Erstellt eine
TensorAudio -Instanz mit einem Ringpuffer der Größe sampleCounts * format.getChannelCount() . |
statisches TensorAudio |
create(TensorAudio.TensorAudioFormat-Format, int sampleCounts)
Erstellt eine
AudioRecord -Instanz mit einem Ringpuffer der Größe sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
Gibt eine Gleitkommazahl
TensorBuffer mit allen verfügbaren Audio-Samples in AudioFormat.ENCODING_PCM_FLOAT zurück (d.h. |
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 TensorAudio create (AudioFormat-Format, int sampleCounts)
Erstellt eine TensorAudio
-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 static TensorAudio create (TensorAudio.TensorAudioFormat-Format, int sampleCounts)
Erstellt eine AudioRecord
-Instanz mit einem Ringpuffer der Größe sampleCounts
* format.getChannels()
.
Parameter
formatieren | erwartete TensorAudio.TensorAudioFormat an Audiodaten, die in diese Klasse geladen wurden. |
---|---|
sampleCounts | die Anzahl der Stichproben, die in das Modell eingespeist werden sollen |
public TensorBuffer getTensorBuffer ()
Gibt die Gleitkommazahl TensorBuffer
mit allen verfügbaren Audiobeispielen in AudioFormat.ENCODING_PCM_FLOAT
zurück, das heißt, die Werte liegen im Bereich [-1, 1].
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.
|
---|