AudioData

public クラス AudioData

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

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

このクラスが処理できるのは、浮動小数点数(AudioFormat.ENCODING_PCM_16BIT 内)または Short(AudioFormat.ENCODING_PCM_FLOAT 内)の入力音声のみです。内部的には、すべての音声サンプルを PCM 浮動小数点エンコードで変換して保存します。

Kotlin での一般的な使用方法

   val audioData = AudioData.create(format, modelInputLength)
   audioData.load(newData)
 

AudioRecord の別の使用例:

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

ネストされたクラス

クラス AudioData.AudioDataFormat 受信音声サンプルの形式(チャンネル数とサンプルレート)を記述する定数をラップします。

パブリック メソッド

static AudioData
createAudioData.AudioDataFormat format、int sampleCounts)
サイズが sampleCounts × format.getNumOfChannels() のリングバッファを持つ AudioRecord インスタンスを作成します。
static AudioData
create(AudioFormat 形式、int sampleCounts)
サイズが sampleCounts * format.getChannelCount() のリングバッファを持つ AudioData インスタンスを作成します。
float[]
getBuffer()
AudioFormat.ENCODING_PCM_FLOAT で使用可能なすべてのオーディオ サンプルを保持する浮動小数点数の配列を返します。つまり、
整数
AudioData.AudioDataFormat
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 AudioData create (AudioData.AudioDataFormat format, int sampleCounts)

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

パラメータ
形式 このクラスに読み込まれる音声データの想定される AudioData.AudioDataFormat
sampleCounts サンプル数。

public static AudioData create (AudioFormat format, int sampleCounts)

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

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

public float[] getBuffer ()

AudioFormat.ENCODING_PCM_FLOAT で使用可能なすべてのオーディオ サンプルを保持する float 配列を返します。つまり、値は [-1, 1] の範囲です。

public int getBufferLength ()

public AudioData.AudioDataFormat getFormat ()

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