因为用得到,所以作个记录:

代码如下:

  1. public class BaiduTTSService : IBaiduTTSService
  2. {
  3. public string tok = GetBaiduToken();
  4. private const string lan = "zh";//语言
  5. private const string per = "";//发音人选择 0位女 1位男 默认 女0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
  6. private const string ctp = "";//客户端类型选择 web端为1
  7. private const string spd = "";//范围0~9 默认 5 语速
  8. private const string pit = "";//范围0~9 默认 5 音调
  9. private const string vol = "";//范围0~9 默认 5 音量
  10. private string cuid = Computer.GetMacAddress();//机器Mak地址
  11. private const string rest = "tex={0}&lan={1}&per={2}&ctp={3}&cuid={4}&tok={5}&spd={6}&pit={7}&vol={8}";
  12.  
  13. /// <summary>
  14. /// tex 即:被转化的文本 可以是中英文结合体,如:hello 陈卧龙
  15. /// </summary>
  16. /// <param name="tex"></param>
  17. /// <returns></returns>
  18. public string GetBaiduUri(string tex)
  19. {
  20. string Uri = "http://tsn.baidu.com/text2audio?" + string.Format(rest, tex, lan, per, ctp, cuid, tok, spd, pit, vol);
  21. return Uri;
  22. }
  23.  
  24. /// <summary>
  25. /// 获取百度Token 百度Token有效请为30天
  26. /// </summary>
  27. /// <returns></returns>
  28. public static string GetBaiduToken()
  29. {
  30. //string Uri = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的client_id&client_secret=你的client_secret";
  31. //string page = GetPage(Uri, "");
  32. //string Token = GetJsonValue(page, "access_token");
  33. return "24.926b57f9665a644fa7b38c76c021834d.2592000.1496304195.282335-9593280";
  34. }
  35.  
  36. #region 获取网络资源
  37. /// <summary>
  38. /// 获取网络资源
  39. /// </summary>
  40. /// <param name="posturl">请求的URL</param>
  41. /// <param name="postData">发送的数据</param>
  42. /// <returns>json格式的字符串</returns>
  43. public static string GetPage(string posturl, string postData)
  44. {
  45. //WX_SendNews news = new WX_SendNews();
  46. //posturl: news.Posturl;
  47. //postData:news.PostData;
  48. System.IO.Stream outstream = null;
  49. Stream instream = null;
  50. StreamReader sr = null;
  51. HttpWebResponse response = null;
  52. HttpWebRequest request = null;
  53. Encoding encoding = Encoding.UTF8;
  54. byte[] data = encoding.GetBytes(postData);
  55. // 准备请求...
  56. try
  57. {
  58. // 设置参数
  59. request = WebRequest.Create(posturl) as HttpWebRequest;
  60. CookieContainer cookieContainer = new CookieContainer();
  61. request.CookieContainer = cookieContainer;
  62. request.AllowAutoRedirect = true;
  63. request.Method = "POST";
  64. request.ContentType = "application/x-www-form-urlencoded";
  65. request.ContentLength = data.Length;
  66. outstream = request.GetRequestStream();
  67. outstream.Write(data, , data.Length);
  68. outstream.Close();
  69. //发送请求并获取相应回应数据
  70. response = request.GetResponse() as HttpWebResponse;
  71. //直到request.GetResponse()程序才开始向目标网页发送Post请求
  72. instream = response.GetResponseStream();
  73. sr = new StreamReader(instream, encoding);
  74. //返回结果网页(html)代码
  75. string content = sr.ReadToEnd();
  76. string err = string.Empty;
  77.  
  78. return content;
  79. }
  80. catch (Exception ex)
  81. {
  82. string err = ex.Message;
  83. return string.Empty;
  84. }
  85. }
  86. #endregion
  87.  
  88. #region 获取Json字符串某节点的值
  89. /// <summary>
  90. /// 获取Json字符串某节点的值
  91. /// </summary>
  92. public static string GetJsonValue(string jsonStr, string key)
  93. {
  94. string result = string.Empty;
  95. if (!string.IsNullOrEmpty(jsonStr))
  96. {
  97. key = "\"" + key.Trim('"') + "\"";
  98. int index = jsonStr.IndexOf(key) + key.Length + ;
  99. if (index > key.Length + )
  100. {
  101. //先截逗号,若是最后一个,截“}”号,取最小值
  102. int end = jsonStr.IndexOf(',', index);
  103. if (end == -)
  104. {
  105. end = jsonStr.IndexOf('}', index);
  106. }
  107.  
  108. result = jsonStr.Substring(index, end - index);
  109. result = result.Trim(new char[] { '"', ' ', '\'' }); //过滤引号或空格
  110. }
  111. }
  112. return result;
  113. }
  114. #endregion
  115.  
  116. }

详情请参考百度TTS API:网址:http://yuyin.baidu.com/docs/tts/133

C# 百度TTS,文本转语音,RestAPI之Get请求的更多相关文章

  1. tts文本转语音服务

    1. 谷歌tts http://translate.google.cn/translate_tts?ie=UTF-8&tl=zh-CN&q=谷歌 2. 百度tts http://tts ...

  2. 【TTS】文本转语音?如何不调用第三方api来实现,使用pyttsx3

    @ 目录 前言 安装pyttsx3 实现TTS接口 后言 前言 本次的实现需求有点困难,所以也就记录下来,别到时候都忘了. 首先先不说正题,有兴趣的可以看一看: 1.目标是实现一个可以传一个文本就返回 ...

  3. 用TTS实现文本转语音

    最近被toefl单词虐成狗::>_<:: 想做一个可以自动把单词转成语音的软件,这样就可以在路上戴耳机边走边听啦~ 用微软的TTS语音库可以很容易地实现.早期的TTS要想实现中英文混合朗读 ...

  4. iOS 文本转语音(TTS)详解:Swift

    上一篇博客讲解了iOS的speech FrameWork语音识别的功能:http://www.cnblogs.com/qian-gu-ling/p/6599670.html,对应的这篇博客就写一下文本 ...

  5. 文本转语音TTS(文本阅读和视频配音制作)MP3

    DL-TTS 通过AI驱动引擎可将文本转化为逼真的语音,它可以:(1)生成逼真的合成语音实现与人声的语调和情感匹配的流畅.发音自然的文本转语音.(2)细化的文本转语音控制支持多种语言,并可调整语速.语 ...

  6. C# 文本转语音朗读

    1. 利用DONET框架自带的 SpeechSynthesizer ,缺点是没有感情色彩,抑扬顿挫等. using System; using System.Collections.Generic; ...

  7. 15.Python文本转化语音方法

    1.用pywin32模块来将文本转化为语音 通过pip install pywin32安装模块,pywin32是个万金油的模块,太多的场景使用到它,但在文本转语音上,它却是个青铜玩家,简单无脑但效果不 ...

  8. 个人开源作品,即时通讯App支持文本、语音、图片聊天

    开源一个即时通讯类App,支持纯文本.语音.地理位置.图片聊天,同时还加入了好友圈功能,支持分享动态和发送图片,支持搜索附近的人,使用的百度地图定位功能:由Bmob后端云提供服务器支持,欢迎喜欢的伙伴 ...

  9. unity3dWeb版文本转语音

    文本转语音 <script type="text/javascript"> function VioceSpeack(str) { var zhText = str; ...

随机推荐

  1. loadrunner 脚本优化-加密与解密

    脚本优化-加密与解密 by:授客 QQ:1033553122   密码加密 可以给密码加密,意在把结果字符串作为脚本的参数或者参数值.例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的 ...

  2. 跨站请求伪造(CSRF)

    1. 什么是跨站请求伪造(CSRF)  CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者session Riding,通常缩 ...

  3. maven(九),install安装到本地仓库

    下载oracle驱动jar包 在maven中央仓库中,是没有oracle驱动jar包的.因为oracle是商业软件,其jar包不允许用作开源用途.从http://www.mvnrepository.c ...

  4. persist与checkpoint

    1.当反复使用某些RDD时建议使用persist(缓存级别)(采用默认缓存级别时为cache())来对数据进行缓存. 2.如果某个步骤的RDD计算特别耗时或经历很多步骤的计算,当重新计算时代价特别大, ...

  5. 【第三篇】SAP ABAP7.5x新语法之程序结构&SubScreen

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文地址:SAP ABAP7.5x系列之程序结构& ...

  6. scp 实现远程异地备份

    1.先做好脚本 2.再使用crontab 定时执行计划任务 0 1 * * * /usr/bin/expect /root/script/scpautodown.sh  #执行,也可先定义环境变量 0 ...

  7. 第七章 鼠标(CHECKER2)

    CHECKER2程序包含一个键盘接口,内容与CHECKER1完全相同.利用←.→.↑.↓四个方向键可以在25个矩形之间移动鼠标指针.Home键把鼠标指针移动到左上角的矩形:End键使鼠标指针落到右下角 ...

  8. Linux运维之如何查看目录被哪些进程所占用,lsof命令、fuser命令

    之前将一块硬盘挂载到某个目录下,但是现在我想卸载掉这块硬盘,无论如何都umount不了,有些同学可能说需要加上 -f 参数强制卸载,理论上是可以的,但是在我这里依然不起作用,比如: [root@:vg ...

  9. windows 10 安装TortoiseSVN.msi时报2503的错误

    解释: 出现这个错误的原因是权限不足,右击安装程序也没有“以管理员身份运行”按钮. 解决: 输入 msiexec /package  F:\TortoiseSVN-1.9.7.27907-x64.ms ...

  10. Alpha冲刺! Day11 - 砍柴

    Alpha冲刺! Day11 - 砍柴 今日已完成 晨瑶: gitkraken团队协作流程教程基本完工. 昭锡:将主页包含UI界面.逻辑处理等与底部栏整合,学习Retrofit网络库. 永盛:更多 c ...