TensorAudio

공개 클래스 TensorAudio

입력 오디오 샘플을 준비하기 위한 링 버퍼와 일부 유틸리티 함수를 정의합니다.

입력 오디오 데이터를 보관하는 링 버퍼를 유지합니다. 클라이언트는 `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);
 

AudioRecord

   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)
크기가 sampleCounts * format.getChannelCount()인 링 버퍼를 사용하여 TensorAudio 인스턴스를 생성합니다.
정적 TensorAudio
create(TensorAudio.TensorAudioFormat 형식, int sampleCounts)
크기가 sampleCounts * format.getChannels()인 링 버퍼를 사용하여 AudioRecord 인스턴스를 만듭니다.
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 TensorAudio.TensorAudioFormat getFormat ()

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) 다중 채널 입력의 경우 배열이 인터리브 처리됩니다.