一、概述
Microsoft Translator是由微软推出的在线多语种翻译服务平台,可以实现多种语言之间的互译,同时还支持语音翻译和自定义术语库,是一款全面、专业的翻译工具。
Microsoft Translator提供多种API,可以实现文本翻译、语音翻译等多种功能。其中,使用REST API进行文本翻译是最常见的应用方式。
二、文本翻译
1、基本使用方式
using System.Net.Http;
using System.Xml.Linq;
public static async Task Translate(string text, string fromLanguage, string toLanguage)
{
using (var client = new HttpClient())
{
var uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?" +
$"text={HttpUtility.UrlEncode(text)}&from={fromLanguage}&to={toLanguage}";
var response = await client.GetAsync(uri);
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
return xml.Value;
}
}
2、异常处理
...
try
{
var response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
return xml.Value;
}
catch (HttpRequestException ex)
{
Debug.WriteLine(ex.Message);
throw;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
throw;
}
...
3、使用身份认证
using System.Security.Cryptography;
using System.Text;
public static string GenerateToken(string text, string key)
{
var bytes = Encoding.UTF8.GetBytes(text);
using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key)))
{
return Convert.ToBase64String(hmac.ComputeHash(bytes));
}
}
public static async Task Translate(string text, string fromLanguage, string toLanguage)
{
var clientId = "Your Client ID";
var clientSecret = "Your Client Secret";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", clientId);
var query = $"text={HttpUtility.UrlEncode(text)}&from={fromLanguage}&to={toLanguage}";
var uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?" + query;
var bytes = Encoding.UTF8.GetBytes(query);
var token = GenerateToken(Encoding.UTF8.GetString(bytes), clientSecret);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
return xml.Value;
}
}
三、自定义术语库
1、创建术语库
using System.Net.Http;
using System.Xml.Linq;
public static async Task CreateGlossary()
{
var clientId = "Your Client ID";
var clientSecret = "Your Client Secret";
var requestBody = "" +
"" +
"" +
"Your Glossary URI" +
"" +
$"{GlossaryType}" +
"" +
"" + GlossaryTitle + " " +
"";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", clientId);
var url = "https://api.cognitive.microsofttranslator.com/create-glossary";
var content = new StringContent(requestBody, Encoding.UTF8, "application/xml");
var bytes = Encoding.UTF8.GetBytes(requestBody);
var token = GenerateToken(Encoding.UTF8.GetString(bytes), clientSecret);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
Console.WriteLine(xml);
}
}
2、上传术语
public static async Task UploadGlossaryTerm(string id, string sourceTerm, string targetTerm)
{
var requestBody = "" +
$"{sourceTerm}" +
$"{targetTerm}" +
"";
var uri = $"https://api.cognitive.microsofttranslator.com/add-dictionary-term?id={id}";
var response = await CallApi(uri, requestBody, HttpMethod.Post);
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
Console.WriteLine(xml);
}
四、语音翻译
1、基本使用方式
using System.Net.Http;
using System.IO;
using System.Threading.Tasks;
public static async Task TextToSpeech(string text)
{
var clientId = "Your Client ID";
var clientSecret = "Your Client Secret";
var requestBody = "" +
"" +
text +
"" +
"";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", clientId);
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML");
var content = new StringContent(requestBody, Encoding.UTF8, "application/ssml+xml");
var bytes = Encoding.UTF8.GetBytes(requestBody);
var token = GenerateToken(Encoding.UTF8.GetString(bytes), clientSecret);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await client.PostAsync("https://api.cognitive.microsoft.com/sts/v1.0/issuetoken", null);
response.EnsureSuccessStatusCode();
var tokenText = await response.Content.ReadAsStringAsync();
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + tokenText);
var byteData = await (await client.PostAsync("https://speech.platform.bing.com/synthesize", content)).Content.ReadAsByteArrayAsync();
return byteData;
}
}
2、语音播放
public static async Task PlayAudio(byte[] bytes)
{
using (var responseMS = new MemoryStream(bytes))
using (var waveStream = new WaveFileReader(responseMS))
using (var outputDevice = new WaveOutEvent())
{
outputDevice.Init(waveStream);
outputDevice.Play();
while (outputDevice.PlaybackState == PlaybackState.Playing)
{
await Task.Delay(1000);
}
}
}
五、语言检测
1、基本使用方式
using System.Net.Http;
using System.Xml.Linq;
public static async Task DetectLanguage(string text)
{
var clientId = "Your Client ID";
var clientSecret = "Your Client Secret";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", clientId);
var url = $"http://api.microsofttranslator.com/v2/Http.svc/Detect?text={HttpUtility.UrlEncode(text)}";
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
return xml.Value;
}
}
2、异常处理
...
try
{
var response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
var xml = XElement.Parse(result);
return xml.Value;
}
catch (HttpRequestException ex)
{
Debug.WriteLine(ex.Message);
throw;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
throw;
}
...
六、扩展
1、授权方式
Microsoft Translator支持多种授权方式,包括Azure AD、Azure AD Bearer Token、Microsoft Translator API等。
2、多种应用场景
Microsoft Translator可以应用到多种场景中,如机器翻译、语音翻译、语言检测等,可满足不同场景的需求。
总结
本文详细介绍了Microsoft Translator的多种功能和应用方式。无论是文本翻译、语音翻译还是语言检测,都可以使用Microsoft Translator进行实现。同时,Microsoft Translator还支持自定义术语库,并提供多种授权方式,可以满足不同场景的需要。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/232277.html