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

 

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  即可

 

 

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐