AudioData

klasa publiczna AudioData

Definiuje bufor pierścieniowy i niektóre funkcje użytkowe służące do przygotowywania wejściowych próbek audio.

Zawiera on bufor pierścieniowy do przechowywania wejściowych danych audio. Klienty mogą przesyłać wejściowe dane audio za pomocą metod „load” i uzyskiwać dostęp do zagregowanych próbek audio za pomocą metody „getTensorBuffer”.

Pamiętaj, że ta klasa obsługuje tylko wejście audio w formacie Float (w formacie AudioFormat.ENCODING_PCM_16BIT) lub Short (w języku AudioFormat.ENCODING_PCM_FLOAT). Wewnętrznie konwertuje i przechowuje wszystkie próbki audio w kodowaniu PCM Float.

Typowe zastosowanie w Kotlin

   val audioData = AudioData.create(format, modelInputLength)
   audioData.load(newData)
 

Kolejne przykładowe użycie funkcji AudioRecord

   val audioData = AudioData.create(format, modelInputLength)
   Timer().scheduleAtFixedRate(delay, period) {
     audioData.load(audioRecord)
   }
 

Zagnieżdżone klasy

klasa AudioData.AudioDataFormat Opakowuje kilka stałych opisujących format przychodzących próbek audio, czyli liczbę kanałów i częstotliwość próbkowania. 

Metody publiczne

statyczne AudioData
create(format AudioData.AudioDataFormat, int sampleCounts)
Tworzy instancję AudioRecord z buforem pierścieniowym o rozmiarze sampleCounts * format.getNumOfChannels().
statyczne AudioData
create(format AudioFormat, int sampleCounts)
Tworzy instancję AudioData z buforem pierścieniowym o rozmiarze sampleCounts * format.getChannelCount().
float[]
getBuffer(),
Zwraca tablicę zmiennoprzecinkową, w której znajdują się wszystkie dostępne próbki audio w funkcji AudioFormat.ENCODING_PCM_FLOAT, tj.
int
AudioData.AudioDataFormat
void
load(short[] src)
Konwertuje wejściowe próbki audio src na ENCODING_PCM_FLOAT, a następnie zapisuje je w buforze pierścieniowym.
void
load(float[] src, int shiftInFloat, int sizeInFloat)
Zapisuje wejściowe próbki audio src w buforze pierścieniowym.
void
load(short[] src, int shiftInShort, int sizeInShort)
Konwertuje wejściowe próbki audio src na ENCODING_PCM_FLOAT, a następnie zapisuje je w buforze pierścieniowym.
int
load(nagranie audio)
Wczytuje najnowsze dane z AudioRecord w nieblokujący sposób.
void
load(float[] src)
Zapisuje wejściowe próbki audio src w buforze pierścieniowym.

Metody dziedziczone

Metody publiczne

public static AudioData create (format AudioData.AudioDataFormat, int sampleCounts)

Tworzy instancję AudioRecord z buforem pierścieniowym o rozmiarze sampleCounts * format.getNumOfChannels().

Parametry
reklamy oczekiwanych AudioData.AudioDataFormat danych audio wczytanych do tych zajęć.
sampleCounts liczby próbek.

public static AudioData create (format AudioFormat, int sampleCounts)

Tworzy instancję AudioData z buforem pierścieniowym o rozmiarze sampleCounts * format.getChannelCount().

Parametry
reklamy AudioFormat wymagana przez model TFLite. Określa liczbę kanałów i częstotliwość próbkowania.
sampleCounts liczba próbek, które zostaną przekazane do modelu

public float[] getBuffer ()

Zwraca tablicę zmiennoprzecinkową, w której znajdują się wszystkie dostępne próbki audio w funkcji AudioFormat.ENCODING_PCM_FLOAT, tj. wartości mieszczą się w zakresie [–1, 1].

public int getBufferLength ()

public AudioData.AudioDataFormat getFormat ()

public void load (short[] src)

Konwertuje wejściowe próbki audio src na ENCODING_PCM_FLOAT, a następnie zapisuje je w buforze pierścieniowym.

Parametry
src próbki audio w języku: AudioFormat.ENCODING_PCM_16BIT. W przypadku wielokanałowych danych wejściowych tablica jest przeplatana.

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

Zapisuje wejściowe próbki audio src w buforze pierścieniowym.

Parametry
src próbki audio w języku: AudioFormat.ENCODING_PCM_FLOAT. W przypadku wielokanałowych danych wejściowych tablica jest przeplatana.
offsetInFloat pozycja początkowa w tablicy src
sizeInFloat liczba wartości zmiennoprzecinkowych do skopiowania
Rzuty
IllegalArgumentException pod kątem niezgodnego formatu dźwięku lub nieprawidłowego rozmiaru wejściowego

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

Konwertuje wejściowe próbki audio src na ENCODING_PCM_FLOAT, a następnie zapisuje je w buforze pierścieniowym.

Parametry
src próbki audio w języku: AudioFormat.ENCODING_PCM_16BIT. W przypadku wielokanałowych danych wejściowych tablica jest przeplatana.
offsetInShort pozycja początkowa w tablicy src
sizeInShort liczba krótkich wartości do skopiowania
Rzuty
IllegalArgumentException jeśli nie można skopiować tablicy źródłowej

public int load (rekord audioRecord)

Wczytuje najnowsze dane z AudioRecord w nieblokujący sposób. Obsługa tylko ENCODING_PCM_16BIT i ENCODING_PCM_FLOAT.

Parametry
rekord wystąpienie elementu AudioRecord
Zwroty
  • liczba zarejestrowanych wartości audio, których rozmiar wynosi channelCount * sampleCount. Jeśli w rekordzie audio nie było nowych danych lub wystąpił błąd, ta metoda zwróci wartość 0.
Rzuty
IllegalArgumentException w przypadku nieobsługiwanego formatu kodowania audio
IllegalStateException jeśli nie udało się odczytać dźwięku z rekordu audio

public void load (float[] src)

Zapisuje wejściowe próbki audio src w buforze pierścieniowym.

Parametry
src próbki audio w języku: AudioFormat.ENCODING_PCM_FLOAT. W przypadku wielokanałowych danych wejściowych tablica jest przeplatana.