AudioData

Public Class AudioData

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
create(AudioFormat-Format, int sampleCounts)
Erstellt eine AudioData-Instanz mit einem Ringpuffer der Größe sampleCounts * format.getChannelCount().
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 AudioData.AudioDataFormat getFormat ()

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.