Définit un tampon en anneau et quelques fonctions utilitaires pour préparer les échantillons audio d'entrée.
Il maintient un Ring Buffer pour contenir les données audio d’entrée. Les clients pouvaient alimenter les 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 que l'audio d'entrée dans Float (dans AudioFormat.ENCODING_PCM_16BIT
) ou Short (dans AudioFormat.ENCODING_PCM_FLOAT
). En interne, il convertit et stocke tous les échantillons audio en codage PCM Float.
Utilisation typique dans Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Un 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 la fréquence d'échantillonnage. |
Méthodes publiques
TensorAudio statique | créer (format AudioFormat, int sampleCounts) Crée une instance TensorAudio avec un tampon en anneau dont la taille est sampleCounts * format.getChannelCount() . |
TensorAudio statique | créer (format TensorAudio.TensorAudioFormat , int sampleCounts) Crée une instance AudioRecord avec un tampon en anneau dont la taille est sampleCounts * format.getChannels() . |
TensorAudio.TensorAudioFormat | |
TensorBuffer | getTensorBuffer () Renvoie un TensorBuffer flottant contenant tous les échantillons audio disponibles dans AudioFormat.ENCODING_PCM_FLOAT , c'est-à-dire |
vide | charger (short[] src) Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon en anneau. |
vide | charger (float[] src, int offsetInFloat, int sizeInFloat) Stocke les échantillons audio d’entrée src dans le tampon en anneau. |
vide | charger (short[] src, int offsetInShort, int sizeInShort) Convertit les échantillons audio d'entrée src en ENCODING_PCM_FLOAT, puis les stocke dans le tampon en anneau. |
int | charger (enregistrement AudioRecord) Charge les dernières données de l' AudioRecord de manière non bloquante. |
vide | charger (float[] src) Stocke les échantillons audio d’entrée src dans le tampon en anneau. |
Méthodes héritées
Méthodes publiques
création TensorAudio statique publique (format AudioFormat, int sampleCounts)
Crée une instance TensorAudio
avec un tampon en anneau dont la taille est sampleCounts
* format.getChannelCount()
.
Paramètres
format | l' AudioFormat requis par le modèle TFLite. Il définit le nombre de canaux et la fréquence d'échantillonnage. |
---|---|
nombres d'échantillons | le nombre d'échantillons à introduire dans le modèle |
création TensorAudio statique publique (format TensorAudio.TensorAudioFormat , int sampleCounts)
Crée une instance AudioRecord
avec un tampon en anneau dont la taille est sampleCounts
* format.getChannels()
.
Paramètres
format | le TensorAudio.TensorAudioFormat attendu des données audio chargées dans cette classe. |
---|---|
nombres d'échantillons | le nombre d'échantillons à introduire dans le modèle |
public TensorBuffer getTensorBuffer ()
Renvoie un TensorBuffer
flottant contenant tous les échantillons audio disponibles dans AudioFormat.ENCODING_PCM_FLOAT
, c'est-à-dire que les valeurs sont comprises entre [-1, 1].
charge vide publique (short[] src)
Convertit les échantillons audio d'entrée src
en ENCODING_PCM_FLOAT, puis les stocke dans le tampon en anneau.
Paramètres
src | saisissez des échantillons audio dans AudioFormat.ENCODING_PCM_16BIT . Pour une entrée multicanal, le tableau est entrelacé. |
---|
charge vide publique (float[] src, int offsetInFloat, int sizeInFloat)
Stocke les échantillons audio d’entrée src
dans le tampon en anneau.
Paramètres
src | saisissez des échantillons audio dans AudioFormat.ENCODING_PCM_FLOAT . Pour une entrée multicanal, le tableau est entrelacé. |
---|---|
offsetInFloat | position de départ dans le tableau src |
tailleDansFloat | le nombre de valeurs flottantes à copier |
Jetés
Exception d'argument illégal | pour un format audio incompatible ou une taille d'entrée incorrecte |
---|
charge vide publique (short[] src, int offsetInShort, int sizeInShort)
Convertit les échantillons audio d'entrée src
en ENCODING_PCM_FLOAT, puis les stocke dans le tampon en anneau.
Paramètres
src | saisissez des échantillons audio dans AudioFormat.ENCODING_PCM_16BIT . Pour une entrée multicanal, le tableau est entrelacé. |
---|---|
offsetInShort | position de départ dans le tableau src |
tailleEnCourt | le nombre de valeurs courtes à copier |
Jetés
Exception d'argument illégal | si le tableau source ne peut pas être copié |
---|
chargement int public (enregistrement AudioRecord)
Charge les dernières données de l' AudioRecord
de manière non bloquante. Ne prend en charge que ENCODING_PCM_16BIT et ENCODING_PCM_FLOAT.
Paramètres
enregistrer | une instance de AudioRecord |
---|
Retour
- nombre de valeurs audio capturées dont la taille est
channelCount * sampleCount
. S'il n'y avait aucune nouvelle donnée dans l'AudioRecord ou si une erreur s'est produite, cette méthode renverra 0.
Jetés
Exception d'argument illégal | pour un format d'encodage audio non pris en charge |
---|---|
IllegalStateException | si la lecture depuis AudioRecord a échoué |
charge vide publique (float[] src)
Stocke les échantillons audio d’entrée src
dans le tampon en anneau.
Paramètres
src | saisissez des échantillons audio dans AudioFormat.ENCODING_PCM_FLOAT . Pour une entrée multicanal, le tableau est entrelacé. |
---|