gpt4 book ai didi

android - Audiorecord.read() 值的含义

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:08 36 4
gpt4 key购买 nike

我想了解使用 Audiorecord.read() 获得的值的实际含义。

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

问题是当我调用这个方法时,我真的不知道存储在“数据”中的值代表什么:

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

这些是我获得的一些值:

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

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

你们能帮我解决这个问题吗?

最佳答案

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

sampleRateInHz 是每秒的样本数。 channel 配置是 MONO 或 STEREO,表示 1 或 2 个 channel 。格式为 PCM8 或 PCM16,表示每个样本 8 位或 16 位。

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

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

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

关于android - Audiorecord.read() 值的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270379/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com