一、概述
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/zh-hk/n/232277.html