我使用的服务是:合成-REST_API
调用的接口是:合成-REST_API
参数设置情况:
使用Unity的WWW类, WWW getData = new WWW("http://tsn.baidu.com/text2audio?tex="接收语音合成数据"”+"&lan=zh&cuid=vr&ctp=1&tok=自己申请的");
返回getData.bytes数据,通过File.WriteAllBytes()将此数据存为MP3文件验证语音数据是正常可用的。但是Unity的语音是float[]类型。我怎么转换类型输出的都是杂音。求大神支持...QQ327969636
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
回复啁劫轮:
感谢您提出的宝贵建议,至于通过上传参数设置返回音频的格式,我们已排入2017的上半年计划,谢谢对百度语音的支持。
nickms:
你好,我也没搞过具体的unity开发,在网上搜了一下,我个人感觉可以有两种方案吧,
一是通过动态获取clip,然后播放,代码如下:
AudioSource.clip=getData.audio;
AudioSource.Play();
二是如您所说将mp3存储下来,再以处理本地音频文件的方式去播放mp3,网上也有类似代码示例。
AudioSource audioSource;
AudioClip ac = Resources.Load("Audio/"+fileName) ;
audioSource.clip = ac;
audioSource.Play();
以上只是个人拙见,希望有帮到你,谢谢
回复nickms:要是能通过上传参数设置返回音频的格式就好了。百度加油!
nickms:
你好,我也没搞过具体的unity开发,在网上搜了一下,我个人感觉可以有两种方案吧,
一是通过动态获取clip,然后播放,代码如下:
AudioSource.clip=getData.audio;
AudioSource.Play();
二是如您所说将mp3存储下来,再以处理本地音频文件的方式去播放mp3,网上也有类似代码示例。
AudioSource audioSource;
AudioClip ac = Resources.Load("Audio/"+fileName) ;
audioSource.clip = ac;
audioSource.Play();
以上只是个人拙见,希望有帮到你,谢谢
回复nickms:感谢回复!
第一种方案行不通,因为你们的二进制音频文件是MP3格式。
unity官方API原文
The data must be an audio clip in Ogg(Web/Standalones), MP3(phones), WAV, XM, IT, MOD or S3M format. The clip will be downloaded completely before it's ready to play. Use the overloaded GetAudioClip (bool threeD, bool stream) to stream the audio, instead of downloading the entire clip.
PC版接收MP3格式的音频会报错,提示为不被支持的格式。要用这种方案只能转格式,将byte[]转成float[]。据说用josn可以转,但是完全不会。
第二种方案我的的确确存下来了,并且用播放器播放出来是正确的音频。奈何unity在运行中无法加载临时存下来的文件,因为unity文件没有更新。
你好,我也没搞过具体的unity开发,在网上搜了一下,我个人感觉可以有两种方案吧,
一是通过动态获取clip,然后播放,代码如下:
AudioSource.clip=getData.audio;
AudioSource.Play();
二是如您所说将mp3存储下来,再以处理本地音频文件的方式去播放mp3,网上也有类似代码示例。
AudioSource audioSource;
AudioClip ac = Resources.Load("Audio/"+fileName) ;
audioSource.clip = ac;
audioSource.Play();
以上只是个人拙见,希望有帮到你,谢谢
需求:getData.bytes数据转成float[]数据。
我尝试用数据拷贝方法Buffer.BlockCopy(data, 0, bytes, 0, bytes.Length);
或者数组数据替换方法都失败了。
Unity有简单的getData.audioClip和getData.GetAudioClip()方法。也无法接收音频数据。