UWP应用获取HTTP请求返回的MP3音频文件(以百度语音合成API为例)
来源:互联网 发布:录制电脑屏幕视频软件 编辑:程序博客网 时间:2024/05/16 07:55
获取HTTP请求返回的MP3音频文件(以百度语音合成API为例)
使用百度语音合成API时,与使用人脸识别API的最大不同之处在于:人脸识别API返回结果均为JSON格式的字符串,而语音合成API则是返回的二进制语音文件。因此在代码的编写上有很大的不同。在此之前我也上网查了好多,但是没有针对UWP的示例,经过一番摸索算是找到了可以用的办法 (~ ̄▽ ̄)~
下面直接写出核心代码以供来日复习参考。
注:示例代码均是从uwp项目中截取的,保留了异步用法,不清楚的话可以大致先了解一下异步编程。
使用到的命名空间:
using Windows.Web.Http;//HttpClient所属using System.Threading.Tasks;//Task所属using Windows.Storage.Streams;//IBuffer所属using Windows.Media.Playback;//MediaPlayer所属using Windows.Media.Core;//MediaSource所属
这是请求的参数列表:
List<KeyValuePair<String, String>> paralist = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("tex",tex_seting), new KeyValuePair<string, string>("lan",lan_setting), new KeyValuePair<string, string>("tok",access_Token), new KeyValuePair<string, string>("ctp",ctp_setting), new KeyValuePair<string, string>("cuid","cuid"), new KeyValuePair<string, string>("spd",spd_setting), new KeyValuePair<string, string>("pit",pit_setting), new KeyValuePair<string, string>("vol",vol_setting), new KeyValuePair<string, string>("per",per_setting) };
获取content 内容:
private async Task<IBuffer> GetTtsResultAsync(string url, List<KeyValuePair<String, String>> list)// 获取文件 { HttpClient hc = new HttpClient(); using (var content = new HttpFormUrlEncodedContent(list)) { var response = await hc.PostAsync(new Uri(url), content); IBuffer buffer = await response.Content.ReadAsBufferAsync(); return buffer; } }
此处的关键点在于 使用 ReadAsBufferAsync()
来将content中的内容读取为IBuffer
类型。
private async void PlayAudio(IBuffer result)//最终播放音频 { folder = await KnownFolders.MusicLibrary.CreateFolderAsync("Greeting", CreationCollisionOption.ReplaceExisting);//创建文件夹 StorageFile x = await folder.CreateFileAsync("语音文件.mp3", CreationCollisionOption.ReplaceExisting);//创建文件 StorageFile storageFile = await folder.GetFileAsync("语音文件.mp3"); await FileIO.WriteBufferAsync(storageFile, result);//从缓冲写入文件 // storageFile = await folder.GetFileAsync("语音文件.mp3"); MediaPlayer _mediaPlayer = new MediaPlayer(); _mediaPlayer.Source = MediaSource.CreateFromStorageFile(storageFile); _mediaPlayer.Play(); }
将content中的内容读取为缓冲类型之后,在写入文件时就可以使用 FileIO.WriteBufferAsync()
方法来将数据从缓冲区写入文件了。因为此处为mp3格式,所以在创建文件时,需要加上后缀名.mp3
StorageFile x = await folder.CreateFileAsync("语音文件.mp3", CreationCollisionOption.ReplaceExisting);
我想,其他获取其他类型的文件也可以同理吧 :-)
阅读全文
0 0
- UWP应用获取HTTP请求返回的MP3音频文件(以百度语音合成API为例)
- 以Wave格式为例的音频文件合成
- 百度语音合成api
- matlab_tts更改为在线获取百度语音合成
- 遍历JObject中的Json数据(以百度云人脸识别api返回的JSON数据为例)
- 百度语音合成的使用
- 百度的语音合成功能
- Qt使用HTTP通信(以调用百度翻译api为例)
- android应用百度语音识别、语音合成和语音唤醒
- 为 UWP 应用提供的 .NET 网络 API
- AS3(flash)获取MP3音频文件的比特率
- 百度 语音合成 语音识别 获取 Access Token
- 百度语音合成(TTS) 在Android的使用方法
- 百度语音合成(TTS) 在Android的使用方法
- .net 从WebService的restful api接口以POST方式请求并获取返回值
- 集成百度语音合成的一些问题
- 基于百度AI的语音合成
- iOS-百度语音合成的使用
- CodeForces 344 A.Magnets(水~)
- 解析xml文件,遍历输出xml文件中的所有节点, 最终模仿实现struts2框架
- GOF23中设计模式之单例设计模式
- C. From Y to Y
- 图的最小生成树概念和数据结构实现
- UWP应用获取HTTP请求返回的MP3音频文件(以百度语音合成API为例)
- visio/Office Professional Plus 2016简体中文版(带激活工具)
- luogu 3377 可并堆
- lucene优化
- SSL P2712 跳格子
- 期望 -LightOJ 1248
- 实战scrapy-爬取红袖添香前20页小说
- 软件测试学习1-软件缺陷和测试员的自我修养
- BootStrap简介与使用