接收语音数据的回调方法中的byte[]数组不是全部是语音数据

语音数据的长度由.binaryDataSize属性决定,直接存binarData声音数据直接就乱了,

由声音的byte[]数组转换为AudioClip参考了下面的文章

(164条消息) Unity 字节数组转换成音频_字节转音频_高远-临客的博客-CSDN博客

   public static AudioClip ConvertClipToBytes(List<byte> voice)
    {
        //clip length
        float[] samples = new float[voice.Count / 2];
        float rescaleFactor = 32767;
        short st = 0;
        float ft = 0;
        byte[] v = voice.ToArray();
        for (int i = 0; i < v.Length; i += 2)
        {
            st = BitConverter.ToInt16(v, i);
            ft = st / rescaleFactor;
            samples[i / 2] = ft;
        }
        AudioClip cp = AudioClip.Create("audioClip", samples.Length, 1, 16000, false);
        cp.SetData(samples, 0);
        return cp;
    }
  if (e.binaryDataSize > 0)
  {
      for (int i = 0; i < e.binaryDataSize; i++)
      {
          voiceQueue.Add(e.binaryData[i]);
      }
  }

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐