定義環形緩衝區和一些公用程式函式,用來準備輸入音訊樣本。
會保留鈴聲緩衝區來 輸入音訊資料用戶端可以透過「load」方法提供輸入音訊資料,並存取 透過 `getTensorBuffer` 方法匯總音訊樣本
請注意,此類別只能處理浮動 (AudioFormat.ENCODING_PCM_16BIT) 或 Shorts (AudioFormat.ENCODING_PCM_FLOAT 中) 的輸入音訊。它可在內部轉換並儲存所有音訊
PCM Float 編碼的範例。
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 | 包含一些常數,用於說明傳入的音訊樣本格式,也就是 管道和取樣率 | |
公用方法
| 靜態 AudioData |
create(AudioData.AudioDataFormat 格式, int sampleCounts)
|
| 靜態 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 中的最新資料。 |
| void |
load(float[] src)
將輸入音訊樣本
src 儲存在環形緩衝區中。 |
繼承的方法
公用方法
公開 靜態 AudioData 建立 (AudioData.AudioDataFormat 格式, int sampleCounts)
建立具有環形緩衝區的 AudioRecord 執行個體,大小為 sampleCounts * format.getNumOfChannels()。
參數
| format | 載入此類別的音訊資料預期 AudioData.AudioDataFormat。 |
|---|---|
| sampleCounts | 以及樣本數 |
公開 靜態 AudioData 建立 (AudioFormat 格式、 int sampleCounts)
建立具有環形緩衝區且大小為 sampleCounts 的 AudioData 執行個體 *
format.getChannelCount()。
參數
| format | TFLite 模型所需的 AudioFormat。會定義
管道數量和取樣率 |
|---|---|
| sampleCounts | 提供給模型的樣本數 |
公開 攔截 getBufferLength ()
公開 void 載入 (短 [] src)
將輸入音訊樣本 src 轉換為 ENCODING_PCM_FLOAT,然後儲存在環形中
緩衝區。
參數
| src | 在 AudioFormat.ENCODING_PCM_16BIT 中輸入音訊樣本適用對象
多管道輸入,陣列就會交錯。
|
|---|
公開 void 載入 (float[] src、int offsetInFloat、int sizeInFloat)
將輸入音訊樣本 src 儲存在環形緩衝區中。
參數
| src | 在 AudioFormat.ENCODING_PCM_FLOAT 中輸入音訊樣本適用對象
多管道輸入,陣列就會交錯。 |
|---|---|
| offsetInFloat | src 陣列中的起始位置 |
| sizeInFloat | 要複製的浮點值數量 |
擲回
| IllegalArgumentException | 表示不相容的音訊格式或輸入大小不正確 |
|---|
公開 void 載入 (short[] src、int offsetInShort、int sizeInShort)
將輸入音訊樣本 src 轉換為 ENCODING_PCM_FLOAT,然後儲存在環形中
緩衝區。
參數
| src | 在 AudioFormat.ENCODING_PCM_16BIT 中輸入音訊樣本適用對象
多管道輸入,陣列就會交錯。 |
|---|---|
| offsetInShort | src 陣列中的起始位置 |
| sizeInShort | 要複製的短值數量 |
擲回
| IllegalArgumentException | 如果無法複製來源陣列 |
|---|
公開 攔截 載入 (錄音)
以非封鎖的方式載入 AudioRecord 中的最新資料。僅限
支援 ENCODING_PCM_16BIT 和 ENCODING_PCM_FLOAT。
參數
| record | AudioRecord 的執行個體 |
|---|
傳回
- 擷取的音訊值數量,大小為
channelCount * sampleCount。如果 錄音檔中沒有任何新資料,或是發生錯誤,這個方法會傳回 0。
擲回
| IllegalArgumentException | 表示不支援的音訊編碼格式 |
|---|---|
| IllegalStateException | 如果從 AudioRecord 讀取失敗 |
公開 void 載入 (浮點值 [] src)
將輸入音訊樣本 src 儲存在環形緩衝區中。
參數
| src | 在 AudioFormat.ENCODING_PCM_FLOAT 中輸入音訊樣本適用對象
多管道輸入,陣列則會交錯。
|
|---|