TensorAudio

Öffentliche Klasse TensorAudio

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

öffentlich TensorAudio.TensorAudioFormat getFormat ()

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.