值的含义来自Audiorecord.read()

时间:2014-06-17 17:56:33

标签: android audio-recording audiorecord

我试图了解使用Audiorecord.read()获得的值实际意味着什么。

我正在尝试创建一个应用程序,它会在检测到脉冲响应时开始录制声音(因此我必须设置一个阈值,其中任何声音都将被视为冲动)。

问题在于,当我调用此方法时,我真的不知道“data”中存储的值是什么:

read = recorder.read(data, 0, bufferSize);

这些是我获得的一些价值观:

[96,2,101,3,101,2,110,1,-41,2,-80,2,-117,2,119,2,-94,0 ....... ..]

我们的想法是从这些值设置阈值,但首先我需要知道它们代表什么。

你们能帮助我吗?

1 个答案:

答案 0 :(得分:5)

数据取决于您发送给构造函数的参数。 AudioRecord(int audioSource,int sampleRateInHz,int channelConfig,int audioFormat,int bufferSizeInBytes)

sampleRateInHz是每秒的样本数。 channel config是MONO或STEREO,意思是1或2个通道。格式为PCM8或PCM16,表示每个样本8位或16位。

所以数据是一个样本数组。每个样本都是一个通道数组。每个通道将具有8位或16位值,具体取决于您的要求。不会跳过任何数据,它将始终是固定大小的格式。

因此,如果您选择1个通道和8个位,则每个字节都会听到一个声音,您应该会看到每秒的sampleRateInHz声音。如果选择16位,则每个声音长度为2个字节。如果您使用2个通道,它应按顺序进入通道1,然后通道2进入每个样品。

各个值是以请求的频率采样时声音数据的幅度。有关其工作原理的详细信息,请参阅http://en.wikipedia.org/wiki/Pulse-code_modulation