小编njk*_*k23的帖子

将 mp3 字节数组转换为浮点数组以使用 Unity

所以我目前正在尝试从外部麦克风(在这种情况下实际上是在机器人上)获取音频并将其流式传输到 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)

c# audio mp3 unity-game-engine ros

6
推荐指数
1
解决办法
3679
查看次数

标签 统计

audio ×1

c# ×1

mp3 ×1

ros ×1

unity-game-engine ×1