所以我目前正在尝试从外部麦克风(在这种情况下实际上是在机器人上)获取音频并将其流式传输到 Unity 中以在场景中播放。我很确定这个音频是以 mp3 格式编码的,采样率为 16000 Hz,比特率为 192 kHz。
我可以在 Unity 中将此音频作为字节数组(似乎始终是 Little Endian)获取,并且我想转换为每个值范围从 -1.0f 到 +1.0f 的浮点数组,以便我可以使用 AudioClip.SetData 在 Unity 场景中播放。我的问题是到目前为止我无法做到这一点。
我的第一次尝试是基于这个 StackOverflow 答案:create AudioClip from byte[] 它使用以下函数进行转换:
private float[] ConvertByteToFloat(byte[] array) {
float[] floatArr = new float[array.Length / 4];
for (int i = 0; i < floatArr.Length; i++) {
if (BitConverter.IsLittleEndian) {
Array.Reverse(array, i * 4, 4);
}
floatArr[i] = BitConverter.ToSingle(array, i * 4) / 0x80000000;
}
return floatArr;
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样调用它:
scaledAudio = ConvertByteToFloat(audioData);
AudioClip audioClip = …Run Code Online (Sandbox Code Playgroud)