AudioData

lớp công khai AudioData

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 công cụ này, 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 audioData = AudioData.create(format, modelInputLength)
   audioData.load(newData)
 

Một ví dụ về hoạt động sử dụng với AudioRecord

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

Lớp lồng ghép

lớp AudioData.AudioDataFormat 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 AudioData
tạo(định dạng AudioData.AudioDataFormat, int sampleCounts)
Tạo một thực thể AudioRecord có vùng đệm vòng có kích thước là sampleCounts * format.getNumOfChannels().
tĩnh AudioData
tạo(định dạng AudioFormat, int sampleCounts)
Tạo một thực thể AudioData có vùng đệm đổ chuông có kích thước là sampleCounts * format.getChannelCount().
float[]
getBuffer()
Trả về một mảng dấu phẩy động chứa tất cả mẫu âm thanh có sẵn trong AudioFormat.ENCODING_PCM_FLOAT, tức là
int
AudioData.AudioDataFormat
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(chuỗ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.
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 AudioData tạo (Định dạng AudioData.AudioDataFormat, int sampleCounts)

Tạo một thực thể AudioRecord có vùng đệm vòng có kích thước là sampleCounts * format.getNumOfChannels().

Thông số
định dạng AudioData.AudioDataFormat 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ông khai tĩnh AudioData tạo (Định dạng AudioFormat, int sampleCounts)

Tạo một thực thể AudioData có vùng đệm đổ chuông có kích thước là sampleCounts * format.getChannelCount().

Thông 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 float[] getBuffer ()

Trả về một mảng dấu phẩy động 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 đánh chặn getBufferLength ()

công khai AudioData.AudioDataFormat getFormat ()

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.

Thông 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.

Thông 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.

Thông 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.

Thông số
bản ghi một bản sao của AudioRecord
Giá trị trả về
  • số giá trị âm thanh đã ghi 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.

Thông 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ẽ.