Unity3d C# 实现mp3的字节数组byte[] 转AudioClip并播放(含源码)
前言最近在弄一个语音合成相关的接口,其中合成的语音会通过byte[]返回,如果保存的话是没有任何问题的,不过要是试听的话就很麻烦,网上的方法大多是WAV的,尝试几次后发现播放的声音都是有问题的。期间,看到一种思路就是先将其保存为文件,之后将文件加载成AudioClip,再播放。根据这种思路实现了这个功能。实现过程不过比较简单暴力,目前在编辑器下测试没问题,其它平台暂未测试。保存文件string V
·
前言
最近在弄一个语音合成相关的接口,其中合成的语音会通过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());
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)