입력 오디오 샘플을 준비하기 위한 링 버퍼와 일부 유틸리티 함수를 정의합니다.
입력 오디오 데이터를 보관하는 링 버퍼를 유지합니다. 클라이언트는 `load` 메서드를 통해 입력 오디오 데이터를 제공하고 `getTensorBuffer` 메서드를 통해 집계된 오디오 샘플에 액세스할 수 있습니다.
이 클래스는 Float (AudioFormat.ENCODING_PCM_16BIT
) 또는 Short 형식 (AudioFormat.ENCODING_PCM_FLOAT
)으로만 입력 오디오를 처리할 수 있습니다. 내부적으로 모든 오디오 샘플을 PCM 부동 소수점 인코딩으로 변환하고 저장합니다.
Kotlin의 일반적인 사용법
val tensor = TensorAudio.create(format, modelInputLength) tensor.load(newData) interpreter.run(tensor.getTensorBuffer(), outputBuffer);
val tensor = TensorAudio.create(format, modelInputLength) Timer().scheduleAtFixedRate(delay, period) { tensor.load(audioRecord) interpreter.run(tensor.getTensorBuffer(), outputBuffer) }를 사용한 또 다른 샘플 사용
중첩된 클래스
클래스 | TensorAudio.TensorAudioFormat | 수신 오디오 샘플의 형식, 즉 채널 수와 샘플링 레이트를 설명하는 상수를 래핑합니다. |
공개 메서드
정적 TensorAudio |
create(AudioFormat 형식, int sampleCounts)
|
정적 TensorAudio |
create(TensorAudio.TensorAudioFormat 형식, int sampleCounts)
|
TensorAudio.TensorAudioFormat | |
TensorBuffer |
getTensorBuffer()
AudioFormat.ENCODING_PCM_FLOAT 에서 사용 가능한 모든 오디오 샘플을 포함하는 부동 TensorBuffer 를 반환합니다. 즉, |
void |
load(short[] src)
입력 오디오 샘플
src 를 ENCODING_PCM_FLOAT로 변환한 다음 링 버퍼에 저장합니다. |
void |
load(float[] src, int offsetInFloat, int sizeInFloat)
입력 오디오 샘플
src 를 링 버퍼에 저장합니다. |
void |
load(short[] src, int offsetInShort, int sizeInShort)
입력 오디오 샘플
src 를 ENCODING_PCM_FLOAT로 변환한 다음 링 버퍼에 저장합니다. |
int |
load(AudioRecord 레코드)
비차단 방식으로
AudioRecord 에서 최신 데이터를 로드합니다. |
void |
load(float[] src)
입력 오디오 샘플
src 를 링 버퍼에 저장합니다. |
상속된 메서드
공개 메서드
public static TensorAudio create (AudioFormat 형식, int sampleCounts)
크기가 sampleCounts
* format.getChannelCount()
인 링 버퍼를 사용하여 TensorAudio
인스턴스를 생성합니다.
매개변수
format | TFLite 모델에 필요한 AudioFormat . 채널 수와 샘플링 레이트를 정의합니다. |
---|---|
sampleCounts | 모델에 입력할 샘플 수 |
public static TensorAudio create (TensorAudio.TensorAudioFormat 형식, int sampleCounts)
크기가 sampleCounts
* format.getChannels()
인 링 버퍼를 사용하여 AudioRecord
인스턴스를 만듭니다.
매개변수
format | 이 클래스에 로드된 오디오 데이터의 예상 TensorAudio.TensorAudioFormat 입니다. |
---|---|
sampleCounts | 모델에 입력할 샘플 수 |
public TensorBuffer getTensorBuffer ()
AudioFormat.ENCODING_PCM_FLOAT
에서 사용 가능한 모든 오디오 샘플을 포함하는 부동 TensorBuffer
를 반환합니다. 즉, 값은 [-1, 1] 범위 내에 있습니다.
public void load (short[] src)
입력 오디오 샘플 src
를 ENCODING_PCM_FLOAT로 변환한 다음 링 버퍼에 저장합니다.
매개변수
src | 입력 오디오 샘플(AudioFormat.ENCODING_PCM_16BIT ) 다중 채널 입력의 경우 배열이 인터리브 처리됩니다.
|
---|
public void load (float[] src, int offsetInFloat, int sizeInFloat)
입력 오디오 샘플 src
를 링 버퍼에 저장합니다.
매개변수
src | 입력 오디오 샘플(AudioFormat.ENCODING_PCM_FLOAT ) 다중 채널 입력의 경우 배열이 인터리브 처리됩니다. |
---|---|
offsetInFloat | src 배열의 시작 위치 |
sizeInFloat | 복사할 부동 소수점 값의 수 |
생성 값
IllegalArgumentException | 호환되지 않는 오디오 형식 또는 잘못된 입력 크기 |
---|
public void load (short[] src, int offsetInShort, int sizeInShort)
입력 오디오 샘플 src
를 ENCODING_PCM_FLOAT로 변환한 다음 링 버퍼에 저장합니다.
매개변수
src | 입력 오디오 샘플(AudioFormat.ENCODING_PCM_16BIT ) 다중 채널 입력의 경우 배열이 인터리브 처리됩니다. |
---|---|
offsetInShort | src 배열의 시작 위치 |
sizeInShort | 복사할 짧은 값의 수 |
생성 값
IllegalArgumentException | 소스 배열을 복사할 수 없는 경우 |
---|
public int load (AudioRecord 레코드)
비차단 방식으로 AudioRecord
에서 최신 데이터를 로드합니다. ENCODING_PCM_16BIT 및 ENCODING_PCM_FLOAT만 지원됩니다.
매개변수
레코드 | AudioRecord 의 인스턴스 |
---|
반환 값
- 크기가
channelCount * sampleCount
인 캡처된 오디오 값의 개수입니다. AudioRecord에 새 데이터가 없거나 오류가 발생한 경우 이 메서드는 0을 반환합니다.
생성 값
IllegalArgumentException | - 지원되지 않는 오디오 인코딩 형식 |
---|---|
IllegalStateException | AudioRecord에서 읽어오지 못한 경우 |
public void load (float[] src)
입력 오디오 샘플 src
를 링 버퍼에 저장합니다.
매개변수
src | 입력 오디오 샘플(AudioFormat.ENCODING_PCM_FLOAT ) 다중 채널 입력의 경우 배열이 인터리브 처리됩니다.
|
---|