前言
最近在弄一个语音合成相关的接口,其中合成的语音会通过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());