我试图了解使用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 ....... ..]
我们的想法是从这些值设置阈值,但首先我需要知道它们代表什么。
你们能帮助我吗?
答案 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。