AudioData

公共类 AudioData

定义环形缓冲区和一些用于准备输入音频样本的实用函数。

它会保留一个环形缓冲区来存放 输入音频数据。客户端可以通过 `load` 方法馈送输入音频数据,并访问 通过 `getTensorBuffer` 方法汇总音频样本。

请注意,此类只能处理浮点型(在 AudioFormat.ENCODING_PCM_16BIT 中)或 Shorts 短视频(在 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 封装一些描述传入音频样本格式的常量,即 频道和采样率。

公共方法

静态 AudioData
createAudioData.AudioDataFormat 格式,int SampleCounts)
创建一个具有大小为 sampleCounts * format.getNumOfChannels() 的环形缓冲区的 AudioRecord 实例。
静态 AudioData
create(AudioFormat 格式,int sampleCounts)
创建一个具有大小为 sampleCounts 的环形缓冲区的 AudioData 实例 * format.getChannelCount()
float[]
getBuffer()
返回一个浮点数组,其中包含 AudioFormat.ENCODING_PCM_FLOAT 中所有可用的音频样本,即
整数
AudioData.AudioDataFormat
无效
加载(short[] src)
将输入音频样本 src 转换为 ENCODING_PCM_FLOAT,然后将其存储在环中 缓冲区。
无效
load(float[] src, int offsetInFloat, int sizeInFloat)
将输入音频样本 src 存储在环形缓冲区中。
无效
load(short[] src, int offsetInShort, int sizeInShort) 加载
将输入音频样本 src 转换为 ENCODING_PCM_FLOAT,然后将其存储在环中 缓冲区。
整数
load(音频录制录制)
以非阻塞方式从 AudioRecord 加载最新数据。
无效
load(float[] src)
将输入音频样本 src 存储在环形缓冲区中。

继承的方法

公共方法

<ph type="x-smartling-placeholder"></ph> 公开 静态 AudioData 创建 (AudioData.AudioDataFormat 格式, int sampleCounts)

创建一个具有大小为 sampleCounts * format.getNumOfChannels() 的环形缓冲区的 AudioRecord 实例。

参数
格式 加载到此类中的预期 AudioData.AudioDataFormat 音频数据。
sampleCounts 样本数量。

<ph type="x-smartling-placeholder"></ph> 公开 静态 AudioData 创建 (AudioFormat 格式,int sampleCounts)

创建一个具有大小为 sampleCounts 的环形缓冲区的 AudioData 实例 * format.getChannelCount()

参数
格式 TFLite 模型所需的 AudioFormat。它定义了 声道数量和采样率
sampleCounts 要馈送到模型的样本数量。

<ph type="x-smartling-placeholder"></ph> 公开 float[] getBuffer ()

返回一个浮点数组,其中包含 AudioFormat.ENCODING_PCM_FLOAT 中所有可用的音频样本,即值在 [-1, 1] 的范围内。

<ph type="x-smartling-placeholder"></ph> 公开 整数 getBufferLength ()

<ph type="x-smartling-placeholder"></ph> 公开 AudioData.AudioDataFormat getFormat ()

<ph type="x-smartling-placeholder"></ph> 公开 无效 加载 (短 [] src)

将输入音频样本 src 转换为 ENCODING_PCM_FLOAT,然后将其存储在环中 缓冲区。

参数
src AudioFormat.ENCODING_PCM_16BIT 中的输入音频样本。对于 多通道输入,则数组是交错的。

<ph type="x-smartling-placeholder"></ph> 公开 无效 加载 (float[] src, int offsetInFloat, int sizeInFloat)

将输入音频样本 src 存储在环形缓冲区中。

参数
src AudioFormat.ENCODING_PCM_FLOAT 中的输入音频样本。对于 多通道输入,则数组是交错的。
offsetInFloat src 数组中的起始位置
sizeInFloat 要复制的浮点值的数量
抛出
IllegalArgumentException 因为音频格式不兼容或输入大小不正确

<ph type="x-smartling-placeholder"></ph> 公开 无效 加载 (short[] src, int offsetInShort, int sizeInShort)

将输入音频样本 src 转换为 ENCODING_PCM_FLOAT,然后将其存储在环中 缓冲区。

参数
src AudioFormat.ENCODING_PCM_16BIT 中的输入音频样本。对于 多通道输入,则数组是交错的。
offsetInShort src 数组中的起始位置
sizeInShort 要复制的短值的数量
抛出
IllegalArgumentException 如果无法复制源数组,则会发生此错误

<ph type="x-smartling-placeholder"></ph> 公开 整数 加载 (AudioRecord 记录)

以非阻塞方式从 AudioRecord 加载最新数据。仅限 支持 ENCODING_PCM_16BIT 和 ENCODING_PCM_FLOAT。

参数
记录 AudioRecord 的实例
返回
  • 捕获的音频值数量(大小为 channelCount * sampleCount)。如果 AudioRecord 中没有新数据或发生错误,则此方法会返回 0。
抛出
IllegalArgumentException 针对不受支持的音频编码格式
IllegalStateException 如果从 AudioRecord 读取失败

<ph type="x-smartling-placeholder"></ph> 公开 无效 加载 (float[] src)

将输入音频样本 src 存储在环形缓冲区中。

参数
src AudioFormat.ENCODING_PCM_FLOAT 中的输入音频样本。对于 多通道输入,则数组是交错的。