C# 百度TTS,文本转语音,RestAPI之Get请求

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

代码如下:

public class BaiduTTSService : IBaiduTTSService
    {
        public string tok = GetBaiduToken();
        private const string lan = "zh";//语言
        private const string per = "4";//发音人选择 0位女  1位男  默认 女0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声
        private const string ctp = "1";//客户端类型选择 web端为1
        private const string spd = "3";//范围0~9  默认 5   语速
        private const string pit = "4";//范围0~9  默认 5   音调
        private const string vol = "5";//范围0~9  默认 5   音量
        private string cuid = Computer.GetMacAddress();//机器Mak地址
        private const string rest = "tex={0}&lan={1}&per={2}&ctp={3}&cuid={4}&tok={5}&spd={6}&pit={7}&vol={8}";

        /// <summary>
        /// tex 即:被转化的文本  可以是中英文结合体,如:hello 陈卧龙
        /// </summary>
        /// <param name="tex"></param>
        /// <returns></returns>
        public string GetBaiduUri(string tex)
        {
            string Uri = "http://tsn.baidu.com/text2audio?" + string.Format(rest, tex, lan, per, ctp, cuid, tok, spd, pit, vol);
            return Uri;
        }

        /// <summary>
        /// 获取百度Token  百度Token有效请为30天
        /// </summary>
        /// <returns></returns>
        public static string GetBaiduToken()
        {
            //string Uri = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=dtjDLFlWaT1lz3CAifBNhAm7&client_secret=97dd50144c85d92cc215d6ff06202666";
            //string page = GetPage(Uri, "");
            //string Token = GetJsonValue(page, "access_token");
            return "24.926b57f9665a644fa7b38c76c021834d.2592000.1496304195.282335-9593280";
        }

        #region 获取网络资源
        /// <summary>
        /// 获取网络资源
        /// </summary>
        /// <param name="posturl">请求的URL</param>
        /// <param name="postData">发送的数据</param>
        /// <returns>json格式的字符串</returns>
        public static string GetPage(string posturl, string postData)
        {
            //WX_SendNews news = new WX_SendNews();
            //posturl: news.Posturl;
            //postData:news.PostData;
            System.IO.Stream outstream = null;
            Stream instream = null;
            StreamReader sr = null;
            HttpWebResponse response = null;
            HttpWebRequest request = null;
            Encoding encoding = Encoding.UTF8;
            byte[] data = encoding.GetBytes(postData);
            // 准备请求...
            try
            {
                // 设置参数
                request = WebRequest.Create(posturl) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                outstream = request.GetRequestStream();
                outstream.Write(data, 0, data.Length);
                outstream.Close();
                //发送请求并获取相应回应数据
                response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                instream = response.GetResponseStream();
                sr = new StreamReader(instream, encoding);
                //返回结果网页(html)代码
                string content = sr.ReadToEnd();
                string err = string.Empty;

                return content;
            }
            catch (Exception ex)
            {
                string err = ex.Message;
                return string.Empty;
            }
        }
        #endregion

        #region 获取Json字符串某节点的值
        /// <summary>
        /// 获取Json字符串某节点的值
        /// </summary>
        public static string GetJsonValue(string jsonStr, string key)
        {
            string result = string.Empty;
            if (!string.IsNullOrEmpty(jsonStr))
            {
                key = "\"" + key.Trim(‘"‘) + "\"";
                int index = jsonStr.IndexOf(key) + key.Length + 1;
                if (index > key.Length + 1)
                {
                    //先截逗号,若是最后一个,截“}”号,取最小值
                    int end = jsonStr.IndexOf(‘,‘, index);
                    if (end == -1)
                    {
                        end = jsonStr.IndexOf(‘}‘, index);
                    }

                    result = jsonStr.Substring(index, end - index);
                    result = result.Trim(new char[] { ‘"‘, ‘ ‘, ‘\‘‘ }); //过滤引号或空格
                }
            }
            return result;
        }
        #endregion

    }

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

时间: 2024-10-11 12:58:45

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

用TTS实现文本转语音

最近被toefl单词虐成狗::>_<:: 想做一个可以自动把单词转成语音的软件,这样就可以在路上戴耳机边走边听啦~ 用微软的TTS语音库可以很容易地实现.早期的TTS要想实现中英文混合朗读还很麻烦,然而Win10里自带的新版SDK已经解决了这个问题.可以自动识别出中文和英文.这点超赞~ 注意:如果用的是英文版系统,需要先安装中文Speech Library 然后在控制面板--语音识别选项里可以看到这个新的语音库: 进入VS,新建一个C#工程,然后在Solution Explorer----Re

C#文本转语音并保存wav和MP3文件

回顾上次写博客至今都有4个多月了,最近工作比较的忙没时间写博文.以后会多坚持写博文,与大家分享下最近遇到的问题.最近因为项目需要,研究了下用C#开发TTS.下面把大体的思路给大家说说,希望对大家有所帮助. 首先需要了解下MS的SAPI,它是微软的语音API.它包括了语音识别SR引擎和语音合成SS引擎两种语音引擎.等下会给大家看下语音合成SS引擎.它由不同的版本,操作系统的不同使用的版本不同,不过我喜欢使用其他的合成语音包,比如:NeoSpeech公司的合成语音包.回过头来,MS 的SAPI的版本

UEditor百度富文本编辑器--让编辑器自适应宽度的解决方案

UEditor百度富文本编辑器的initialFrameWidth属性,默认值是1000. 不能够自适应屏幕宽度.如图1: 刚开始的时候,我是直接设置initialFrameWidth=null的.效果如图2: 这样子UEditor百度富文本编辑器会在第一次加载的时候获取屏幕宽度,然后赋值给initialFrameWidth属性. 这样子确实是可以在第一次加载的时候适应屏幕宽度,但是却似乎宽度稍微过了一点点,超过上面的灰条了.而且这里还有一个问题: 当你改变浏览器大小时,会有个很严重的排版BUG

MVC使用百度开源文本编辑器UEditor实现图文并茂,字数限制,上传图片或涂鸦

原文:MVC使用百度开源文本编辑器UEditor实现图文并茂,字数限制,上传图片或涂鸦 文本编辑器有很多,比如ticymce和CKEditor就比较好用,但涉及到图片.文件上传,需要结合CKFinder实现,而且有些功能是收费的,即使有意付费使用, 支付也不方便.好在百度的开源文本编辑器UEditor现在也发展得不错,本篇就来体验其在MVC中的使用.需要实现如下效果: 1.上传图片2.上传涂鸦3.字数限制 4.另一视图页图文显示 首先到这里下载UEditor的.NET版本,我下载的是[1.4.3

Django集成百度富文本编辑器uEditor

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 首先从ueEditor官网下载最新版本的包,目前官网上提供了ASP..NET.PHP.JSP版本的,django版本只有一个第三方个人开发的,但看上出配置起来稍微复杂一点. 这里不介绍uEditor的使用方法,也不过多解释uEditor的配置方法,官网上都有详细的文档和API介绍,下载的Demo中也有常用的方法的示例代码,这里主要介绍uEdi

百度副文本编辑器自动缩放上传的图片

在使用百度副文本编辑器的时候出现一个很苦恼的bug: 上图: 就是图片太大,超出了评论框,这其中css和html写的不大合理有关外,还有副文本编辑器没有做处理: 处理方法: 1.来到副文本编辑器的themes文件夹内: 2.修改iframe.css文件 3.在该文件里面编辑以下代码: img { max-width: 100%; /*图片自适应宽度*/ } body { overflow-y: scroll !important; } .view { word-break: break-all;

[转]UEditor百度富文本编辑器--让编辑器自适应宽度的解决方案

转自http://www.cnblogs.com/VAllen/p/UEditor-InitialFrameWidth-Auto.html UEditor百度富文本编辑器的initialFrameWidth属性,默认值是1000. 不能够自适应屏幕宽度.如图1: 刚开始的时候,我是直接设置initialFrameWidth=null的.效果如图2: 这样子UEditor百度富文本编辑器会在第一次加载的时候获取屏幕宽度,然后赋值给initialFrameWidth属性. 这样子确实是可以在第一次加

百度富文本编辑器

[下载所需资源]---------------------------------------百度搜索-- 百度富文本编辑器--进入首页(百度编辑器-UEditor-首页) 百度编辑器 - UEditor - 首页-- 上方导航[下载]--选择对应的版本下载(我选的是 1.4.3.3 .Net 版本 utf-8版) [把资源引入自己的项目]--------------------------------------- 这里,模拟需求:新建一个项目  MyTest,要使用  富文本编辑器的功能. 

ueditor百度富文本编辑器使用解决方案

写网站的时候都是用asp.net2.0写的 但是看了百度的富文本编辑器使用说明都是.net framework 4.0 版本的 百度了半天看的各种的解决方案 我把最新版本的百度富文本编辑器下载下来 改了.sln 文件信息 可以用vs2008打开 当然会报一些错误 ..类名不存在等等 百度了半天还是没解决问题后来放弃了.(最终还是用了百度的) 于是就找了kindeditor但是觉得他长得有点丑..还是放弃了 又接着百度ueditor配置方法看到了一篇博文 http://blog.sina.com.