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