我收到一个音频波流,将其存储在 byte[] 中并想要播放它。我在网上找到了这个并测试了它:
//byte[] data
float[] arr = new float[data.Length / 2];
for(int i= 0; i < arr.Length; i++) {
arr[i] = (float)BitConverter.ToInt16(data, i*2) / 32767.0f;
}
我也测试了这个https://stackoverflow.com/a/76858809/15107271。
声音可辨认,但非常吵闹。听起来像是一个糟糕的对讲机。有谁知道如何正确解释数据?
编辑:
我使用波形格式的启动文件来发送数据。 https://github.com/ros-drivers/audio_common/blob/master/audio_capture/launch/capture_wave.launch
在 Unity 中,接收到的消息数据随后存储在 byte[] data 中
你可以看一下这里。我知道这有点痛苦,但提供听起来像什么的音频样本可能会有所帮助。我敢打赌,音频值会超出范围。
我见过有人提到unity音频剪辑使用-1, 1的范围。你知道字节数组是否包含标题吗?您也许可以在标头的帮助下使用预先存在的类来智能地读取音频数据。