TensorAudio

パブリック クラス TensorAudio

入力オーディオ サンプルを準備するリングバッファとユーティリティ関数を定義します。

入力音声データを保持するためにリングバッファを維持します。クライアントは「load」メソッドを介して入力音声データをフィードし、「getTensorBuffer」メソッドを介して集計された音声サンプルにアクセスできます。

このクラスが処理できるのは、浮動小数点数(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 受信音声サンプルの形式(チャンネル数とサンプルレート)を記述する定数をラップします。

パブリック メソッド

static TensorAudio
create(AudioFormat 形式、int sampleCounts)
サイズが sampleCounts * format.getChannelCount() のリングバッファを持つ TensorAudio インスタンスを作成します。
static TensorAudio
createTensorAudio.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 に変換し、リングバッファに保存します。
整数
load(AudioRecord レコード)
AudioRecord から最新のデータを非ブロック方法で読み込みます。
void
load(float[] src)
入力オーディオ サンプル src をリングバッファに保存します。

継承されるメソッド

パブリック メソッド

public static TensorAudio create (AudioFormat format, int sampleCounts)

サイズが sampleCounts * format.getChannelCount() のリングバッファを持つ TensorAudio インスタンスを作成します。

パラメータ
形式 TFLite モデルに必要な AudioFormat。チャンネル数とサンプルレートを定義します。
sampleCounts モデルにフィードされるサンプル数

public static TensorAudio create (TensorAudio.TensorAudioFormat format, int sampleCounts)

サイズが sampleCounts × format.getChannels() のリングバッファを持つ AudioRecord インスタンスを作成します。

パラメータ
形式 このクラスに読み込まれる音声データの想定される 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 コピーする short_value の数
例外
IllegalArgumentException ソースの配列をコピーできない場合

public int load (AudioRecord record)

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 の入力オーディオ サンプル。マルチチャンネル入力の場合、配列はインターリーブされます。