合成-REST_API Unity中无法使用返回的音频数据
啁劫轮 发布于2017-01 浏览:2069 回复:5
0
收藏

我使用的服务是:合成-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
个赞
共5条回复 最后由用户已被禁言回复于2022-04
#6nickms回复于2017-01

回复啁劫轮:

感谢您提出的宝贵建议,至于通过上传参数设置返回音频的格式,我们已排入2017的上半年计划,谢谢对百度语音的支持。

0
#5啁劫轮回复于2017-01

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:要是能通过上传参数设置返回音频的格式就好了。百度加油!

0
#4啁劫轮回复于2017-01

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文件没有更新。

0
#3nickms回复于2017-01

你好,我也没搞过具体的unity开发,在网上搜了一下,我个人感觉可以有两种方案吧,

一是通过动态获取clip,然后播放,代码如下:

AudioSource.clip=getData.audio;

AudioSource.Play();

二是如您所说将mp3存储下来,再以处理本地音频文件的方式去播放mp3,网上也有类似代码示例。

AudioSource audioSource;

AudioClip ac = Resources.Load("Audio/"+fileName) ;

audioSource.clip = ac;

audioSource.Play();

以上只是个人拙见,希望有帮到你,谢谢

0
#2啁劫轮回复于2017-01

需求:getData.bytes数据转成float[]数据。


我尝试用数据拷贝方法Buffer.BlockCopy(data, 0, bytes, 0, bytes.Length);

或者数组数据替换方法都失败了。


Unity有简单的getData.audioClip和getData.GetAudioClip()方法。也无法接收音频数据。

0
TOP
切换版块