Xác định vùng đệm vòng và một số hàm hiệu dụng để chuẩn bị mẫu âm thanh đầu vào.
Nó duy trì một Ring Buffer (Vùng đệm vòng) để lưu giữ dữ liệu âm thanh đầu vào. Khách hàng có thể cấp dữ liệu âm thanh đầu vào thông qua phương thức "load" và truy cập vào các mẫu âm thanh tổng hợp thông qua phương thức "getTensorBuffer".
Lưu ý rằng lớp này chỉ có thể xử lý âm thanh đầu vào ở định dạng Số thực (trong AudioFormat.ENCODING_PCM_16BIT) hoặc Ngắn (trong AudioFormat.ENCODING_PCM_FLOAT). Bên trong bộ chuyển đổi và lưu trữ tất cả âm thanh
mẫu trong mã hoá PCM Float.
Cách sử dụng điển hình trong Kotlin
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
Một ví dụ về hoạt động sử dụng với AudioRecord
val tensor = TensorAudio.create(format, modelInputLength)
Timer().scheduleAtFixedRate(delay, period) {
tensor.load(audioRecord)
interpreter.run(tensor.getTensorBuffer(), outputBuffer)
}
Lớp lồng ghép
| lớp | TensorAudio.TensorAudioFormat | Gói một vài hằng số mô tả định dạng của mẫu âm thanh đến, cụ thể là số lượng kênh và tốc độ lấy mẫu. | |
Phương thức công khai
| tĩnh TensorAudio |
tạo(định dạng AudioFormat, int sampleCounts)
Tạo một thực thể
TensorAudio có vùng đệm đổ chuông có kích thước là sampleCounts *
format.getChannelCount(). |
| tĩnh TensorAudio |
tạo(định dạng TensorAudio.TensorAudioFormat, int sampleCounts)
|
| TensorAudio.TensorAudioFormat | |
| TensorBuffer |
getTensorBuffer()
Trả về một số thực
TensorBuffer có chứa tất cả mẫu âm thanh có sẵn trong AudioFormat.ENCODING_PCM_FLOAT, tức là |
| void |
load(nguồn rút gọn[])
Chuyển đổi mẫu âm thanh đầu vào
src thành ENCODING_PCM_FLOAT, sau đó lưu trữ mẫu này trong vòng
vùng đệm. |
| void |
load(float[] src, int offsetInFloat, int sizeInFloat)
Lưu trữ mẫu âm thanh đầu vào
src trong vùng đệm đổ chuông. |
| void |
load(short[] src, int offsetInShort, int sizeInShort)
Chuyển đổi mẫu âm thanh đầu vào
src thành ENCODING_PCM_FLOAT, sau đó lưu trữ mẫu này trong vòng
vùng đệm. |
| int |
load(bản ghi AudioRecord)
Tải dữ liệu mới nhất từ
AudioRecord theo cách không chặn luồng thực thi. |
| void |
load(float[] src)
Lưu trữ mẫu âm thanh đầu vào
src trong vùng đệm đổ chuông. |
Phương thức kế thừa
Phương thức công khai
công khai tĩnh TensorAudio tạo (Định dạng AudioFormat, int sampleCounts)
Tạo một thực thể TensorAudio có vùng đệm đổ chuông có kích thước là sampleCounts *
format.getChannelCount().
Tham số
| định dạng | AudioFormat theo yêu cầu của mô hình TFLite. Định nghĩa
số lượng kênh và tốc độ lấy mẫu. |
|---|---|
| sampleCounts | số lượng mẫu được đưa vào mô hình |
công khai tĩnh TensorAudio tạo (Định dạng TensorAudio.TensorAudioFormat, int sampleCounts)
Tạo một thực thể AudioRecord có vùng đệm vòng có kích thước là sampleCounts * format.getChannels().
Tham số
| định dạng | TensorAudio.TensorAudioFormat dự kiến của dữ liệu âm thanh được tải vào lớp này. |
|---|---|
| sampleCounts | số lượng mẫu được đưa vào mô hình |
công khai TensorBuffer getTensorBuffer ()
Trả về một số thực TensorBuffer có chứa tất cả mẫu âm thanh có sẵn trong AudioFormat.ENCODING_PCM_FLOAT, tức là các giá trị nằm trong khoảng [-1, 1].
công khai trống tải (short[] src)
Chuyển đổi mẫu âm thanh đầu vào src thành ENCODING_PCM_FLOAT, sau đó lưu trữ mẫu này trong vòng
vùng đệm.
Tham số
| src | đầu vào mẫu âm thanh vào AudioFormat.ENCODING_PCM_16BIT. Cho
đầu vào đa kênh, mảng nằm xen kẽ.
|
|---|
công khai trống tải (float[] src, int offsetInFloat, int sizeInFloat)
Lưu trữ mẫu âm thanh đầu vào src trong vùng đệm đổ chuông.
Tham số
| src | đầu vào mẫu âm thanh vào AudioFormat.ENCODING_PCM_FLOAT. Cho
đầu vào đa kênh, mảng nằm xen kẽ. |
|---|---|
| offsetInFloat | vị trí bắt đầu trong mảng src |
| sizeInFloat | số lượng giá trị số thực được sao chép |
Gửi
| IllegalArgumentException | cho định dạng âm thanh không tương thích hoặc kích thước đầu vào không chính xác |
|---|
công khai trống tải (short[] src, int offsetInShort, int sizeInShort)
Chuyển đổi mẫu âm thanh đầu vào src thành ENCODING_PCM_FLOAT, sau đó lưu trữ mẫu này trong vòng
vùng đệm.
Tham số
| src | đầu vào mẫu âm thanh vào AudioFormat.ENCODING_PCM_16BIT. Cho
đầu vào đa kênh, mảng nằm xen kẽ. |
|---|---|
| offsetInShort | vị trí bắt đầu trong mảng src |
| sizeInShort | số lượng giá trị ngắn sẽ được sao chép |
Gửi
| IllegalArgumentException | nếu mảng nguồn không thể được sao chép |
|---|
công khai đánh chặn tải (bản ghi AudioRecord)
Tải dữ liệu mới nhất từ AudioRecord theo cách không chặn luồng thực thi. Chỉ
hỗ trợ ENCODING_PCM_16BIT và ENCODING_PCM_FLOAT.
Tham số
| bản ghi | một bản sao của AudioRecord |
|---|
Giá trị trả về
- số giá trị âm thanh được ghi lại có kích thước là
channelCount * sampleCount. Nếu không có dữ liệu mới trong AudioRecord hoặc đã xảy ra lỗi, phương pháp này sẽ trả về 0.
Gửi
| IllegalArgumentException | cho định dạng mã hoá âm thanh không được hỗ trợ |
|---|---|
| IllegalStateException | nếu không đọc được từ AudioRecord |
công khai trống tải (float[] src)
Lưu trữ mẫu âm thanh đầu vào src trong vùng đệm đổ chuông.
Tham số
| src | đầu vào mẫu âm thanh vào AudioFormat.ENCODING_PCM_FLOAT. Cho
đầu vào đa kênh, mảng nằm xen kẽ.
|
|---|