入力オーディオ サンプルを準備するためのリング バッファーといくつかのユーティリティ関数を定義します。
入力オーディオ データを保持するリング バッファーを維持します。クライアントは、「load」メソッドを介して入力オーディオ データをフィードし、「getTensorBuffer」メソッドを介して集約されたオーディオ サンプルにアクセスできます。
このクラスは、Float ( AudioFormat.ENCODING_PCM_16BIT
内) または Short ( AudioFormat.ENCODING_PCM_FLOAT
内) の入力オーディオのみを処理できることに注意してください。内部的には、すべてのオーディオ サンプルを PCM Float エンコーディングに変換して保存します。
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形式、intsampleCounts) |
静的TensorAudio | create ( TensorAudio.TensorAudioFormat形式、 int sampleCounts) |
TensorAudio.TensorAudioFormat | getFormat () |
テンソルバッファ | getTensorBuffer () AudioFormat.ENCODING_PCM_FLOAT 内の利用可能なすべてのオーディオ サンプルを保持する float TensorBuffer を返します。 |
空所 | ロード(short[] ソース) 入力オーディオ サンプル src ENCODING_PCM_FLOAT に変換し、リング バッファーに格納します。 |
空所 | ロード(float[] src、int offsetInFloat、int sizeInFloat) 入力オーディオ サンプル src リング バッファーに保存します。 |
空所 | ロード(short[] src、int offsetInShort、int sizeInShort) 入力オーディオ サンプル src ENCODING_PCM_FLOAT に変換し、リング バッファーに格納します。 |
整数 | ロード(AudioRecord レコード) ノンブロッキングな方法で AudioRecord から最新のデータをロードします。 |
空所 | ロード(float[] src) 入力オーディオ サンプル src リング バッファーに保存します。 |
継承されたメソッド
パブリックメソッド
public static TensorAudio create (AudioFormat 形式、intsampleCounts)
サイズがsampleCounts
* format.getChannelCount()
のリング バッファを持つTensorAudio
インスタンスを作成します。
パラメーター
フォーマット | TFLite モデルに必要なAudioFormat 。チャンネル数とサンプルレートを定義します。 |
---|---|
サンプル数 | モデルに供給されるサンプルの数 |
public static TensorAudio create ( TensorAudio.TensorAudioFormat形式、 int sampleCounts)
サイズがsampleCounts
* format.getChannels()
のリング バッファを持つAudioRecord
インスタンスを作成します。
パラメーター
フォーマット | このクラスにロードされるオーディオ データの予期されるTensorAudio.TensorAudioFormat 。 |
---|---|
サンプル数 | モデルに供給されるサンプルの数 |
public TensorBuffer getTensorBuffer ()
AudioFormat.ENCODING_PCM_FLOAT
内の使用可能なすべてのオーディオ サンプルを保持する float TensorBuffer
を返します。つまり、値は [-1, 1] の範囲内にあります。
public voidロード(short[] src)
入力オーディオ サンプルsrc
ENCODING_PCM_FLOAT に変換し、リング バッファーに格納します。
パラメーター
送信元 | AudioFormat.ENCODING_PCM_16BIT でオーディオ サンプルを入力します。マルチチャネル入力の場合、配列はインターリーブされます。 |
---|
パブリック voidロード(float[] src、int offsetInFloat、int sizeInFloat)
入力オーディオ サンプルsrc
リング バッファーに保存します。
パラメーター
送信元 | AudioFormat.ENCODING_PCM_FLOAT にオーディオ サンプルを入力します。マルチチャネル入力の場合、配列はインターリーブされます。 |
---|---|
オフセットInFloat | src 配列内の開始位置 |
サイズインフロート | コピーされる浮動小数点値の数 |
投げる
IllegalArgumentException | 互換性のないオーディオ形式または間違った入力サイズの場合 |
---|
public void load (short[] src、int offsetInShort、int sizeInShort)
入力オーディオ サンプルsrc
ENCODING_PCM_FLOAT に変換し、リング バッファーに格納します。
パラメーター
送信元 | AudioFormat.ENCODING_PCM_16BIT でオーディオ サンプルを入力します。マルチチャネル入力の場合、配列はインターリーブされます。 |
---|---|
オフセット短い | src 配列内の開始位置 |
サイズ短め | コピーされる short 値の数 |
投げる
IllegalArgumentException | ソース配列をコピーできない場合 |
---|
public intロード(AudioRecord レコード)
ノンブロッキングな方法でAudioRecord
から最新のデータをロードします。 ENCODING_PCM_16BIT と ENCODING_PCM_FLOAT のみをサポートします。
パラメーター
記録 | AudioRecord のインスタンス |
---|
戻り値
- サイズが
channelCount * sampleCount
であるキャプチャされたオーディオ値の数。 AudioRecord に新しいデータがない場合、またはエラーが発生した場合、このメソッドは 0 を返します。
投げる
IllegalArgumentException | サポートされていないオーディオエンコード形式の場合 |
---|---|
IllegalStateException | AudioRecord からの読み取りに失敗した場合 |
パブリック voidロード(float[] src)
入力オーディオ サンプルsrc
リング バッファーに保存します。
パラメーター
送信元 | AudioFormat.ENCODING_PCM_FLOAT にオーディオ サンプルを入力します。マルチチャネル入力の場合、配列はインターリーブされます。 |
---|