入力オーディオ サンプルを準備するリングバッファとユーティリティ関数を定義します。
入力音声データを保持するためにリングバッファを維持します。クライアントは「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 |
create(AudioData.AudioDataFormat format、int sampleCounts)
|
static 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 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 の入力オーディオ サンプル。マルチチャンネル入力の場合、配列はインターリーブされます。
|
---|