前言

最近在弄一个语音合成相关的接口,其中合成的语音会通过byte[]返回,如果保存的话是没有任何问题的,不过要是试听的话就很麻烦,网上的方法大多是WAV的,尝试几次后发现播放的声音都是有问题的。期间,看到一种思路就是先将其保存为文件,之后将文件加载成AudioClip,再播放。根据这种思路实现了这个功能。

实现过程

不过比较简单暴力,目前在编辑器下测试没问题,其它平台暂未测试。

保存文件

  string VoiceUrl = Application.persistentDataPath + "/temp.mp3"; //存储路径
  File.WriteAllBytes(VoiceUrl, bytes);  //写入文件

这里bytes就是mp3的数据即字节数组。

加载文件播放

   IEnumerator DoVioceClip()
    {
        UnityWebRequest uwr = UnityWebRequestMultimedia.GetAudioClip(VoiceUrl, AudioType.MPEG);
        {
            yield return uwr.SendWebRequest();
            if (uwr.isNetworkError)
                Debug.LogError(uwr.error);
            else
             {
                AS.clip = DownloadHandlerAudioClip.GetContent(uwr);
                AS.Play();
             }
        }
    }

如上过程,比较简单明了。调用方式:

     StartCoroutine(DoVioceClip());
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐