c# 调用有道智云翻译接口+语音组件tts

先去有道智云申请,    我的是 扣扣登录的

 

https://ai.youdao.com/login.s    登录页面

 

https://ai.youdao.com/docs/doc-trans-api.s#p01    接口文档

 

https://ai.youdao.com/docs/doc-trans-api.s#p10     c#代码

 

如果是文本翻译   

 

创建应用。 绑定服务

 

 

如果需要语音读出来,需要创建  语音合成tts  实例

 

 

 

以上两个   实例  和  应用之间相互绑定

 

 

 

C#代码   webform

 

音频控件   <audio id="audio" src="" ></audio>

最终要把有道智云返回的  url  放入src

 

 

前端  放几个控件

 

 

 

/// 服务端

public class TranClass

    {

        public string From { get; set; }

        public string To { get; set; }

        public List<Trans_result> Trans_result { get; set; }

    }

    public class Trans_result

    {

        public string src { get; set; }

        public string dst { get; set; }

    }

 

    string url = "";

 

    private TranClass tranClass = new TranClass();

 

protected string FanYiUrl(string Text)

    {

        string tSpeakUrl = "";

        try

        {

            JavaScriptSerializer Jss = new JavaScriptSerializer();

            Dictionary<string, object> DicText = (Dictionary<string, object>)Jss.DeserializeObject(Text);

            if (!DicText.ContainsKey("tSpeakUrl"))

                return "";

            tSpeakUrl= DicText["tSpeakUrl"].ToString();

        }

        catch (Exception ex)

        {

            BLLLogicHelper.ServerLogLogic.Insert(new ServerLogInfo()

            {

                DateTime = DateTime.Now,

                LogType = 123,

                Message = ex.ToString()

            });

        }

        return tSpeakUrl;

    }

protected static string Truncate(string q)

    {

        if (q == null)

        {

            return null;

        }

        int len = q.Length;

        return len <= 20 ? q : (q.Substring(0, 10) + len + q.Substring(len - 10, 10));

    }

 

    protected static string ComputeHash(string input, HashAlgorithm algorithm)

    {

        Byte[] inputBytes = Encoding.UTF8.GetBytes(input);

        Byte[] hashedBytes = algorithm.ComputeHash(inputBytes);

        return BitConverter.ToString(hashedBytes).Replace("-", "");

}

 

protected string Post(string url, Dictionary<String, String> dic)

    {

        string result = "";

        try

        {

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

            req.Method = "POST";

            req.ContentType = "application/x-www-form-urlencoded";

            StringBuilder builder = new StringBuilder();

            int i = 0;

            foreach (var item in dic)

            {

                if (i > 0)

                    builder.Append("&");

                builder.AppendFormat("{0}={1}", item.Key, item.Value);

                i++;

            }

            byte[] data = Encoding.UTF8.GetBytes(builder.ToString());

            req.ContentLength = data.Length;

            using (Stream reqStream = req.GetRequestStream())

            {

                reqStream.Write(data, 0, data.Length);

                reqStream.Close();

            }

            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

            Stream stream = resp.GetResponseStream();

            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))

            {

                result = reader.ReadToEnd();

            }

        }

        catch (Exception ex)

        {

            BLLLogicHelper.ServerLogLogic.Insert(new ServerLogInfo()

            {

                DateTime = DateTime.Now,

                LogType = 123,

                Message = ex.ToString()

            });

        }

        return result;

    }

 

//翻译的按钮

protected void fanyi_Click(object sender, EventArgs e)

    {

        

try

        {

            Dictionary<String, String> dic = new Dictionary<String, String>();

            string url = "http://openapi.youdao.com/api";

            string q = ContentOne.Text;

            string appKey = "7ae498ab144b76c1";

            string appSecret = "en2hfQBoRWPD6LrNomVmoa75Xp0VJHb1";

            string salt = DateTime.Now.Millisecond.ToString();

            dic.Add("from", "zh-CHS");//源语言  列表参考文档

            dic.Add("to", "ja"); //目标语言   列表参考文档

            dic.Add("signType", "v3");  //签名类型

            TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));

            long millis = (long)ts.TotalMilliseconds;

            string curtime = Convert.ToString(millis / 1000);

            dic.Add("curtime", curtime);  //当前UTC时间戳

            string signStr = appKey + Truncate(q) + salt + curtime + appSecret; ;

            string sign = ComputeHash(signStr, new SHA256CryptoServiceProvider());//签名

            dic.Add("q", System.Web.HttpUtility.UrlEncode(q)); //要翻译的文本

            dic.Add("appKey", appKey);   //申请的appkey

            dic.Add("salt", salt);   //随机的字符串

            dic.Add("sign", sign);  //签名

            dic.Add("ext", "mp3");   //翻译结果音频格式

            string jsonStr = Post(url, dic);  //最终会返回json  串   从串中取数据   或者  url  即可

            audio.Src = FanYiUrl(jsonStr);   //最终要把有道智云返回的  url  放入src

        }

        catch (Exception ex)

        {

            BLLLogicHelper.ServerLogLogic.Insert(new ServerLogInfo()

            {

                DateTime = DateTime.Now,

                LogType = 123,

                Message = ex.ToString()

            });

        }

 

    }

 

 

最终会返回json  串   从串中取数据   或者  url  即可

 

 

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值