TensorAudio

classe publique TensorAudio

Définit un tampon d'anneau et certaines fonctions utilitaires pour préparer les échantillons audio d'entrée.

Il gère un tampon d'anneau pour stocker les données audio d'entrée. Les clients peuvent transmettre des données audio d'entrée via les méthodes "load" et accéder aux échantillons audio agrégés via la méthode "getTensorBuffer".

Notez que cette classe ne peut gérer le contenu audio d'entrée qu'en float (dans AudioFormat.ENCODING_PCM_16BIT) ou en Short (dans AudioFormat.ENCODING_PCM_FLOAT). En interne, elle convertit et stocke tous les échantillons audio en utilisant l'encodage PCM Float.

Utilisation habituelle en Kotlin

   val tensor = TensorAudio.create(format, modelInputLength)
   tensor.load(newData)
   interpreter.run(tensor.getTensorBuffer(), outputBuffer);
 

Autre exemple d'utilisation avec AudioRecord

   val tensor = TensorAudio.create(format, modelInputLength)
   Timer().scheduleAtFixedRate(delay, period) {
     tensor.load(audioRecord)
     interpreter.run(tensor.getTensorBuffer(), outputBuffer)
   }
 

Classes imbriquées

classe TensorAudio.TensorAudioFormat Encapsule quelques constantes décrivant le format des échantillons audio entrants, à savoir le nombre de canaux et le taux d'échantillonnage. 

Méthodes publiques

TensorAudio statique
create(format AudioFormat, int sampleCounts)
Crée une instance TensorAudio avec un tampon en anneau d'une taille de sampleCounts x format.getChannelCount().
TensorAudio statique
create(format TensorAudio.TensorAudioFormat, int sampleCounts)
Crée une instance AudioRecord avec un tampon en anneau d'une taille de sampleCounts * format.getChannels().
TensorAudio.TensorAudioFormat
TensorBuffer
getTensorBuffer()
Renvoie une valeur flottante TensorBuffer contenant tous les échantillons audio disponibles dans AudioFormat.ENCODING_PCM_FLOAT, c'est-à-dire
void
load(short[] src)
Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon de l'anneau.
void
load(float[] src, int offsetInFloat, int sizeInFloat)
Stocke les échantillons audio d'entrée src dans le tampon de l'anneau.
void
load(short[] src, int offsetInShort, int sizeInShort)
Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon de l'anneau.
int
load(enregistrement AudioRecord)
Charge les dernières données depuis AudioRecord de manière non bloquante.
void
load(float[] src)
Stocke les échantillons audio d'entrée src dans le tampon de l'anneau.

Méthodes héritées

Méthodes publiques

public statique TensorAudio create (format AudioFormat, int sampleCounts)

Crée une instance TensorAudio avec un tampon en anneau d'une taille de sampleCounts x format.getChannelCount().

Paramètres
format le AudioFormat requis par le modèle TFLite. Il définit le nombre de canaux et le taux d'échantillonnage.
sampleCounts le nombre d'échantillons à alimenter dans le modèle ;

public statique TensorAudio create (format TensorAudio.TensorAudioFormat, int sampleCounts)

Crée une instance AudioRecord avec un tampon en anneau d'une taille de sampleCounts * format.getChannels().

Paramètres
format TensorAudio.TensorAudioFormat de données audio attendues chargées dans cette classe.
sampleCounts le nombre d'échantillons à alimenter dans le modèle ;

public TensorAudio.TensorAudioFormat getFormat ()

public TensorBuffer getTensorBuffer ()

Renvoie une valeur flottante TensorBuffer contenant tous les échantillons audio disponibles dans AudioFormat.ENCODING_PCM_FLOAT, c'est-à-dire que les valeurs sont comprises dans la plage [-1, 1].

public vide charger (short[] src)

Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon de l'anneau.

Paramètres
src échantillons audio d'entrée dans AudioFormat.ENCODING_PCM_16BIT. Pour une entrée multicanal, le tableau est entrelacé.

public void load (float[] src, int offsetInFloat, int sizeInFloat)

Stocke les échantillons audio d'entrée src dans le tampon de l'anneau.

Paramètres
src échantillons audio d'entrée dans AudioFormat.ENCODING_PCM_FLOAT. Pour une entrée multicanal, le tableau est entrelacé.
offsetInFloat position de départ dans le tableau src
sizeInFloat nombre de valeurs flottantes à copier
Génère
IllegalArgumentException en raison d'un format audio incompatible ou d'une taille d'entrée incorrecte

public void load (short[] src, int offsetInShort, int sizeInShort)

Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon de l'anneau.

Paramètres
src échantillons audio d'entrée dans AudioFormat.ENCODING_PCM_16BIT. Pour une entrée multicanal, le tableau est entrelacé.
offsetInShort position de départ dans le tableau "src"
sizeInShort nombre de valeurs courtes à copier
Génère
IllegalArgumentException si le tableau source ne peut pas être copié

public int load (enregistrement AudioRecord)

Charge les dernières données depuis AudioRecord de manière non bloquante. Compatible uniquement avec ENCODING_PCM_16BIT et ENCODING_PCM_FLOAT.

Paramètres
disque une instance de AudioRecord
Renvoie
  • Nombre de valeurs audio capturées dont la taille est de channelCount * sampleCount. Si l'enregistrement audio ne contient pas de nouvelles données ou qu'une erreur s'est produite, cette méthode renvoie la valeur 0.
Génère
IllegalArgumentException pour un format d'encodage audio non compatible
IllegalStateException si la lecture à partir d'AudioRecord échoue

public vide load (float[] src)

Stocke les échantillons audio d'entrée src dans le tampon de l'anneau.

Paramètres
src échantillons audio d'entrée dans AudioFormat.ENCODING_PCM_FLOAT. Pour une entrée multicanal, le tableau est entrelacé.