先去有道智云申请, 我的是 扣扣登录的
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 即可