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 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.
|
|---|