TensorAudio

öffentliche Klasse TensorAudio

Definiert einen Ringpuffer und einige Dienstfunktionen zum Vorbereiten der Audio-Samples.

Die Funktion unterhält einen Ring Buffer, Audioeingabedaten. Clients konnten Eingabeaudiodaten über „load“-Methoden einspeisen und auf die aggregierte Audiobeispiele über die Methode „getTensorBuffer“.

Beachten Sie, dass diese Klasse nur Audioeingaben als Gleitkommazahl (in AudioFormat.ENCODING_PCM_16BIT) oder Short (in AudioFormat.ENCODING_PCM_FLOAT) verarbeiten kann. Konvertiert und speichert es alle Audioinhalte, in der PCM-Float-Codierung.

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 Bindet einige Konstanten ein, die das Format der eingehenden Audio-Samples beschreiben, nämlich die Anzahl der und die Abtastrate.

Public Methods

Statisch TensorAudio
create(AudioFormat-Format, int sampleCounts)
Erstellt eine TensorAudio-Instanz mit einem Ringpuffer, dessen Größe sampleCounts* ist format.getChannelCount()
Statisch TensorAudio
create(TensorAudio.TensorAudioFormat-Format, int sampleCounts)
Erstellt eine AudioRecord-Instanz mit einem Ringpuffer, dessen Größe sampleCounts × format.getChannels() ist.
TensorAudio.TensorAudioFormat
TensorBuffer
getTensorBuffer()
Gibt eine Gleitkommazahl TensorBuffer zurück, die alle verfügbaren Audio-Samples in AudioFormat.ENCODING_PCM_FLOAT enthält, d.h.
voidm
load(short[] src)
Wandelt die Audio-Samples src in ENCODING_PCM_FLOAT um und speichert sie dann im Ring Puffer.
voidm
load(float[] src, int offsetInFloat, int sizeInFloat)
Speichert die Audioeingabe-Samples src im Ringpuffer.
voidm
load(short[] src, int offsetInShort, int sizeInShort)
Wandelt die Audio-Samples src in ENCODING_PCM_FLOAT um und speichert sie dann im Ring Puffer.
int
load(AudioRecord)
Lädt die neuesten Daten nicht blockierend aus dem AudioRecord.
voidm
load(float[] src)
Speichert die Audioeingabe-Samples src im Ringpuffer.

Übernommene Methoden

Public Methods

<ph type="x-smartling-placeholder"></ph> öffentlich Statisch TensorAudio Erstellen (AudioFormat-Format, int sampleCounts)

Erstellt eine TensorAudio-Instanz mit einem Ringpuffer, dessen Größe sampleCounts* ist format.getChannelCount()

Parameter
Format Das vom TFLite-Modell erforderliche AudioFormat. Sie definiert die Anzahl der Kanäle und die Abtastrate.
sampleCounts Anzahl der Stichproben, die in das Modell eingegeben werden sollen

<ph type="x-smartling-placeholder"></ph> öffentlich Statisch TensorAudio Erstellen (TensorAudio.TensorAudioFormat-Format, int sampleCounts)

Erstellt eine AudioRecord-Instanz mit einem Ringpuffer, dessen Größe sampleCounts × format.getChannels() ist.

Parameter
Format Die erwartete TensorAudio.TensorAudioFormat an Audiodaten, die in diese Klasse geladen wurden.
sampleCounts Anzahl der Stichproben, die in das Modell eingegeben werden sollen

<ph type="x-smartling-placeholder"></ph> öffentlich TensorAudio.TensorAudioFormat getFormat ()

<ph type="x-smartling-placeholder"></ph> öffentlich TensorBuffer getTensorBuffer ()

Gibt eine Gleitkommazahl TensorBuffer zurück, die alle verfügbaren Audio-Samples in AudioFormat.ENCODING_PCM_FLOAT enthält, d.h. Werte im Bereich von [-1, 1].

<ph type="x-smartling-placeholder"></ph> öffentlich voidm laden (short[] src)

Wandelt die Audio-Samples src in ENCODING_PCM_FLOAT um und speichert sie dann im Ring Puffer.

Parameter
src Audio-Samples in AudioFormat.ENCODING_PCM_16BIT eingeben. Für Multi-Channel-Eingabe, ist das Array verschränkt.

<ph type="x-smartling-placeholder"></ph> öffentlich voidm laden (float[] src, int offsetInFloat, int sizeInFloat)

Speichert die Audioeingabe-Samples src im Ringpuffer.

Parameter
src Audio-Samples in AudioFormat.ENCODING_PCM_FLOAT eingeben. Für Multi-Channel-Eingabe, ist das Array verschränkt.
offsetInFloat Startposition im Array src
sizeInFloat Anzahl der zu kopierenden Gleitkommawerte
Löst aus
IllegalArgumentException für inkompatibles Audioformat oder falsche Eingabegröße

<ph type="x-smartling-placeholder"></ph> öffentlich voidm laden (short[] src, int offsetInShort, int sizeInShort)

Wandelt die Audio-Samples src in ENCODING_PCM_FLOAT um und speichert sie dann im Ring Puffer.

Parameter
src Audio-Samples in AudioFormat.ENCODING_PCM_16BIT eingeben. Für Multi-Channel-Eingabe, ist das Array verschränkt.
offsetInShort Startposition im src-Array
sizeInShort Anzahl der Kurzwerte, die kopiert werden sollen
Löst aus
IllegalArgumentException Quellarray kann nicht kopiert werden

<ph type="x-smartling-placeholder"></ph> öffentlich Ganzzahl laden (Audioeintrag)

Lädt die neuesten Daten nicht blockierend aus dem AudioRecord. Nur ENCODING_PCM_16BIT und ENCODING_PCM_FLOAT unterstützt.

Parameter
record eine Instanz von AudioRecord
Gibt Folgendes zurück:
  • Anzahl der erfassten Audiowerte mit einer Größe von channelCount * sampleCount. Wenn keine neuen Daten im AudioRecord vorhanden sind oder ein Fehler aufgetreten ist, gibt diese Methode 0 zurück.
Löst aus
IllegalArgumentException für nicht unterstütztes Audiocodierungsformat
IllegalStateException wenn Fehler beim Lesen von AudioRecord

<ph type="x-smartling-placeholder"></ph> öffentlich voidm laden (float[] src)

Speichert die Audioeingabe-Samples src im Ringpuffer.

Parameter
src Audio-Samples in AudioFormat.ENCODING_PCM_FLOAT eingeben. Für Multi-Channel-Eingabe, ist das Array verschränkt.