一、百度语音合成

百度语音合成C# SDK主要是基于Rest API,需要互联网调用HTTP接口,Rest API 仅支持最多512个汉字,合成的格式文件为MP3,没有其它的格式。如果想离线使用需下载SDK,Android 或IOS。

1、安装语音合成 C# SDK

C# SDK 现已开源! https://github.com/Baidu-AIP/dotnet-sdk

** 支持平台:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **

2、方法一:使用Nuget管理依赖 (推荐)

在NuGet中搜索 Baidu.AI,安装最新版即可。

packet地址 https://www.nuget.org/packages/Baidu.AI/

3、源程序界面及代码

   #region 百度语音private void simpleButton1_Click(object sender, EventArgs e){if (spinEdit1.Value <= 0){spinEdit1.Focus();return;}if (trackBarControl1.Value <= 0){trackBarControl1.Focus();return;}if (string.IsNullOrEmpty(textBox1.Text.Trim())){textBox1.Focus();textBox1.Select();return;}// 设置APPID/AK/SKvar APP_ID = "******";var API_KEY = "******";var SECRET_KEY = "*****";var client = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);client.Timeout = 60000;  // 修改超时时间// 可选参数var option = new Dictionary<string, object>(){{"spd", spinEdit1.Value}, // 语速{"vol", trackBarControl1.Value}, // 音量{"per", comboBoxEdit1.SelectedIndex}  // 发音人,4:情感度丫丫童声
            };var result = client.Synthesis(textBox1.Text, option);if (xtraSaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK){if (result.ErrorCode == 0)  // 或 result.Success
                {File.WriteAllBytes(xtraSaveFileDialog1.FileName, result.Data);}}}#endregion

接口参数说明:

二、科大讯飞语音合成

科大讯飞没有c# SDK,采用WebAPi的形式调用。不过请注意该接口使用的HTTP API协议不支持跨域。

1、接口调用流程

注: 调用接口前需配置IP白名单,IP白名单规则请参照 IP白名单。(由于我之前没有设置正确的IP,导致接口调用不成功)可以在百度里面输入IP将会显示你的互联网IP

  1. 通过接口密钥基于MD5计算签名,将签名以及其他参数放在Http Request Header中 。
  2. 将文本数据放在Http Request Body中 。
  3. 向服务器端发送Http请求后,接收服务器端的返回结果。

注: 在控制台添加服务后,点击“发音人管理”可自行添加并试用发音人,添加后会显示该发音人参数值,设置参数voice_name为相应的发音人参数值即可。

2、程序界面及源代码

源代码

  public class Rootobject{public string auf { get; set; }public string aue { get; set; }public string voice_name { get; set; }public string speed { get; set; }public string volume { get; set; }public string pitch { get; set; }public string engine_type { get; set; }public string text_type { get; set; }}

        String Md5(string s){System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);bytes = md5.ComputeHash(bytes);md5.Clear();string ret = "";for (int i = 0; i < bytes.Length; i++){ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');}return ret.PadLeft(32, '0');}

        #region 把流转换成缓存流MemoryStream StreamToMemoryStream(Stream instream){MemoryStream outstream = new MemoryStream();const int bufferLen = 4096;byte[] buffer = new byte[bufferLen];int count = 0;while ((count = instream.Read(buffer, 0, bufferLen)) > 0){outstream.Write(buffer, 0, count);}return outstream;}#endregion

        #region 把缓存流转换成字节组public static byte[] streamTobyte(MemoryStream memoryStream){byte[] buffer = new byte[memoryStream.Length];memoryStream.Seek(0, SeekOrigin.Begin);memoryStream.Read(buffer, 0, buffer.Length);return buffer;}#endregion

   private void simpleButton2_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, 音频文件保存类型为 mp3string 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}

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

转载于:https://www.cnblogs.com/w2011/p/11328023.html

基于C# 百度AI和科大汛飞语音合成SDK相关推荐

  1. Android apps 拍立知-基于百度Ai的图像识别与tts语音合成(介绍)

    一款基于百度Ai的图像识别与tts语音合成的Android apps-拍立知. 这款apps是拿来参加小比赛的,理工男没有ui!界面有点小丑. 原理是通过拍照/上传图片,调用百度Ai中的图像通用识别功 ...

  2. Python调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序

    调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序 1. 实验环境 Python3.8.Pycharm.window10 2.实验过程 1.首先登陆百度智能云:https ...

  3. 基于百度AI平台的语音识别功能开发-SDK调用

    文章目录 一.前期工作 二.调用百度语音SDK,基于python3 一.前期工作 1.拥有一个百度智能云账号 2.创建一个语音应用,创建成功后会显示有一个应用 3.在应用列表里查看自己的应用 强调: ...

  4. 【毕业设计】基于springboot+百度AI的人脸考勤系统

    这个是需求描述 具体的功能演示可以看这个视频:https://www.bilibili.com/video/BV1FK4y1m7Ge 这个是登录图 人脸收集图:

  5. 百度AI学习:二、语音合成

    这个简单,直接上代码 package com.ye.ai.application; import java.io.IOException; import org.json.JSONObject; im ...

  6. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  7. python实现文本审核_百度AI文本审核API使用说明

    虽然,虽然,虽然,今天: 百度发布了2019年第一季度未经审计的财务报告.本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%.低于市场预期242 ...

  8. 百度AI开放平台和高德开放平台的使用

    目录 1.百度AI开放平台 1.1语音合成 1.2语音识别 1.3人脸识别 1.4文字识别 1.4.1手写文字识别 1.4.2 身份证识别 1.5人体检测 2.高德开放平台 2.1天气查询 2.2地理 ...

  9. 微信小程序录音 第一篇 (基于微信小程序及百度AI的 人员语音识别转文字显示小程序)

    基于微信小程序及百度AI的 人员语音识别转文字显示小程序 基于微信小程序及百度AI的 人员语音识别转文字显示小程序主要分3篇 1.微信小程序录音篇(小程序基于wx.startRecord()微信语音录 ...

最新文章

  1. layer 弹不出来_红米k20pro摄像头弹不出来怎么办?昆明小米手机维修教你解决
  2. php中表单的非空验证,Javascript的表单与验证-非空验证_javascript技巧
  3. datatables 行分组信息展开与折叠的功能实现_[LaTeX 尝试] fancyvrb - 修复行引用的超链接跳转位置
  4. python画roc曲线_使用Python画ROC曲线以及AUC值
  5. 这又是什么新玩法?华为Mate 30 Pro真机谍照现身:音量键大变样
  6. Spring boot 日志框架
  7. 计算机省vb二级试题,江苏省计算机二级VB试题及答案
  8. 软媒魔方 6.0 正式绿色版
  9. 用 QT实现拖放(drag-drop)功能
  10. 水星怎么设置网速最快_水星无线路由器怎么设置网速限制【设置方法】
  11. 【Python】Time模块 ValueError: unconverted data remains: UnicodeEncodeError:
  12. 通过金矿模型介绍动态规划(转载)
  13. 解决无法修改日志时间的问题(Local time zone must be set--see zic manual page 2019 )
  14. 深富策略:罕见巨额成交量背后蕴含深意
  15. 计算机的内存的作用是什么,电脑内存的作用是什么?
  16. 菜鸟的经历和今后目标
  17. 为什么我没有早点进入IT行业?
  18. 谷歌中国开发者网站地址
  19. 什么是安全骑士WAF
  20. 美食大战老鼠html,美食大战老鼠卤料花园过法详解

热门文章

  1. unity ui框架_[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了
  2. html中如何多列布局,CSS3 多列布局
  3. unet图片数据增强_kaggle气胸疾病图像分割top5解决方案
  4. Flink 生成数据源
  5. javascript HTMLMediaElement
  6. python FIFO命名管道
  7. Flask cookie
  8. MongoDB Collections
  9. pandas.Series.asfreq
  10. Linux线程同步介绍和示例