设为首页 加入收藏

TOP

基于C# 百度AI和科大汛飞语音合成SDK(二)
2019-09-17 16:05:26 】 浏览:21
Tags:基于 C#百度 大汛 语音 合成 SDK
Button2_Click(object sender, EventArgs e) { // 应用APPID(必须为webapi类型应用,并开通语音合成服务,参考帖子如何创建一个webapi应用:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=36481) string appID = "****"; // 接口密钥(webapi类型应用开通合成服务后,控制台--我的应用---语音合成---相应服务的apikey) string APIKey = "****"; // 语音合成webapi接口地址 String url = "http://api.xfyun.cn/v1/service/v1/tts"; String bodys; // 待合成文本 string text = memoEdit1.Text; // 对要合成语音的文字先用utf-8然后进行URL加密 byte[] textData = Encoding.UTF8.GetBytes(text); text = HttpUtility.UrlEncode(textData); bodys = string.Format("text={0}", text); //aue = raw, 音频文件保存类型为 wav或者pcm //aue = lame, 音频文件保存类型为 mp3 string AUE = "lame"; Rootobject root = new Rootobject(); root.aue = AUE; root.auf = "audio/L16;rate=16000"; root.speed = speed.Value.ToString(); root.pitch = pitch.Value.ToString(); root.volume = volume.Value.ToString(); root.voice_name = voice_name.Text.Split('-')[0]; root.engine_type = engine_type.Text.Split('-')[0]; root.text_type = "text"; string param = Newtonsoft.Json.JsonConvert.SerializeObject(root); // 获取十位的时间戳 TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); string curTime = Convert.ToInt64(ts.TotalSeconds).ToString(); // 对参数先utf-8然后用base64编码 byte[] paramData = Encoding.UTF8.GetBytes(param); string paraBase64 = Convert.ToBase64String(paramData); // 形成签名 string checkSum = Md5(APIKey + curTime + paraBase64); // 组装http请求头 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Headers.Add("X-Param", paraBase64); request.Headers.Add("X-CurTime", curTime); request.Headers.Add("X-Appid", appID); request.Headers.Add("X-CheckSum", checkSum); Stream requestStream = request.GetRequestStream(); StreamWriter streamWriter = new StreamWriter(requestStream, Encoding.GetEncoding("gb2312")); streamWriter.Write(bodys); streamWriter.Close(); String htmlStr = string.Empty; HttpWebResponse response = request.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); using (StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8"))) { string header_type = response.Headers["Content-Type"]; if (header_type == "audio/mpeg") { Stream st = response.GetResponseStream(); MemoryStream memoryStream = StreamToMemoryStream(st); if (xtraSaveFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK) { // 保存音频文件地址和音频格式类型 File.WriteAllBytes(xtraSaveFileDialog2.FileName, streamTobyte(memoryStream)); } Console.WriteLine(response.Headers); Console.ReadLine(); } else { htmlStr = reader.ReadToEnd(); Console.WriteLine(htmlStr); Console.ReadLine(); } } responseStream.Close(); } #endregion }

 通过尝试百度和科大讯飞两个语音合成接口,发现科大讯飞语音比较好一些,百度有些词语会读错。

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C#从零单排上王者系列---数据类型 下一篇简洁实用Socket框架DotNettySocket

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目