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