Blog Post

AI - Azure AI services Blog
9 MIN READ

Q: How do I use Azure Cognitive Services like Translator?

PaulHarrison's avatar
PaulHarrison
Icon for Microsoft rankMicrosoft
Jan 20, 2023

Q: How do I use Azure Cognitive Services like Translator?

A: There are many ways! I’ll show you some examples to get you started.

 

Cognitive Services refers to a wide variety of PaaS solutions that leverage AI. There are many services including speech to text, text to speech, sentiment analysis, conversational language understanding, translation, computer vision, Face API, anomaly detection, content moderator, and others. That is a lot of stuff and I’m not going to dive into all of it today but want to walk through how I’ve used Azure Translator today. Next week we’ll dive into how folks can deploy their own translator containers, then later we’ll cover how to make translator containers and text-analytics containers work together, then finally cover offline translation containers to cover the last of your edge cases and allowing you to leverage Azure without even connecting to Azure.

 

Before diving into deploying or using Translator in Azure folks might ask is: There are Azure Cognitive Services available in Azure so why would I want to have my own containers running cognitive services in the first place?

There are a few reasons and probably some that I’m haven’t thought of yet:

  • My clients have poor network connectivity compared to the amount of data they need worked on so it would be too difficult to send and receive all my translations over the internet. This can also be the case for other cognitive services like sending large numbers of images for face detection over the internet.
  • I have very latency sensitive workloads that are not near the cloud. For certain use cases like near real-time feedback to clients at remote sites leveraging computer vision they may want to minimize latency as much as possible by bringing processing from the cloud to their site. For workloads like these connected containers provide the best solution.
  • There is no internet access at all on my client’s network. There are some clients like some research labs or government networks that have disconnected networks that don’t connect to the internet at all so they can’t directly query the cloud. For these workloads disconnected containers can leverage the power of Azure without directly connecting to Azure.

Those are all big problems for using the cloud but Microsoft is a cloud company now so it is nice that Azure can be leveraged no matter which unique situation your clients come up with.

Even if you want to use fancy containers for your production environment it makes sense to leverage Azure Translator in the cloud for dev or pre-prod. Testing in Azure is very easy to deploy without the need for resources to host containers and you can use the same code against Azure, connected containers, and disconnected containers. Testing in Azure is also great because there is a free tier so pre-production testing doesn’t cost much if anything extra.

All the documentation you could want for Translation in Azure is available here: https://learn.microsoft.com/en-us/azure/cognitive-services/translator/

 

Finally, now we’re going to deploy and use Azure Translator the way nearly everyone will do it by leveraging Translator in Azure.

 

  1. Log into the Azure portal then search for and click on the “Translators” service.

  1. Select “Create” then fill in a few fields. I’m all about free stuff so it is nice that translation can be performed for free.

  1. Click “Next” a few times then “Create” and now you have your Azure Translator resource.

That was almost too easy. Let’s try using our new resource a bit to make sure it works as expected.

 

We can see in the “Keys and Endpoint” section all the info we’ll need to do translations.

You can get all the information you need to write your own REST calls here: https://learn.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-reference

I’ll provide a few examples here to show you how I like to do it with my favorite PowerShell and a little prettier output. I know a lot of you prefer curl, but there are already more examples covering curl in the official documentation, so I’ll show PowerShell here.

First, I initialize variables based on the “Keys and Endpoint” section my Translator resource. These variables are the only items you will need to change if you’re testing code in Azure, then running it later against connected or disconnected containers.

 

Disclaimer

The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.

 

#Variable section
$baseURI = 'https://api.cognitive.microsofttranslator.com/'
$Key = 'I_AM_NOT_SHARING_MY_KEY_BUT_PUT_YOURS_HERE'
$Region = 'eastus2'
$TextToTranslate = 'I like bananas and accordions.'

 

Next, I do a sample translation. If you know which language you’re translating from then you can specify “from” as documented in the API reference link above however if you do not specify it then it will automatically detect the source language for you.

 

#Test Translation: 
$to = 'es'
$URI = $baseURI + 'translate?api-version=3.0&to=' + $to
$resp = Invoke-WebRequest -Uri $URI -Method Post -Headers $([hashtable]@{"Ocp-Apim-Subscription-Key"=$Key;"Ocp-Apim-Subscription-Region"=$Region}) -Body "[ {'Text':'$TextToTranslate'} ]"  -ContentType "application/json; charset=utf-8" -ErrorAction Inquire 
$trans = ($resp.Content | ConvertFrom-Json).translations.text 
$trans  
Me gustan los plátanos y los acordeones. 

 

Next, I do language detection. Language detection is for I’m not sure what language I was provided and simply want to detect the language.

 

#Test language detection: 
$URI = $baseURI + 'detect?api-version=3.0'
$resp = Invoke-WebRequest -Uri $URI -Method Post -Headers $([hashtable]@{"Ocp-Apim-Subscription-Key"=$Key;"Ocp-Apim-Subscription-Region"="EastUS2"}) -Body "[ {'Text':'$TextToTranslate'} ]"  -ContentType "application/json; charset=utf-8" -ErrorAction Inquire 
$trans = ($resp.Content | ConvertFrom-Json).language 
$trans    
en

 

Next, I list all the languages available. Listing the languages available is also helpful if you don’t recognize the information returned in language detection. If I didn’t know “en” meant English then I would just look it up in the table I output below. There are several languages where the “Native Name” is not output in a human readable format. This is not a concern for me since I don’t need those languages on this computer however if you have the right languages loaded they will display properly.

 

$URI = $baseURI + 'languages?api-version=3.0'
$resp = Invoke-WebRequest -Uri $URI -Method Get -Headers $([hashtable]@{"accept-language"="en"})   -ContentType "application/json; charset=utf-8" -ErrorAction Inquire 
$trans = ($resp.Content | ConvertFrom-Json) 
$Names = $trans.translation | Get-Member -MemberType NoteProperty
$Names.name | Select @{N='Abbreviation';E={$_}},@{N='Name';E={$trans.translation.($_).Name}},@{N='NativeName';E={$trans.translation.($_).NativeName}} 

 

 

------------ ----                    ----------                     
af           Afrikaans               Afrikaans                      
am           Amharic                 አማርኛ                   
ar           Arabic                  العربية                 
as           Assamese                à¦
সমীয়া          
az           Azerbaijani             Azərbaycan                    
ba           Bashkir                 Bashkir                        
bg           Bulgarian               Български             
bn           Bangla                  বাংলা                
bo           Tibetan                 བོད་སྐད་         
bs           Bosnian                 Bosnian                        
ca           Catalan                 Català                        
cs           Czech                   Čeština                      
cy           Welsh                   Cymraeg                        
da           Danish                  Dansk                          
de           German                  Deutsch                        
dv           Divehi                  ދިވެހިބަސް           
el           Greek                   Ελληνικά               
en           English                 English                        
es           Spanish                 Español                       
et           Estonian                Eesti                          
eu           Basque                  Euskara                        
fa           Persian                 فارسی                     
fi           Finnish                 Suomi                          
fil          Filipino                Filipino                       
fj           Fijian                  Na Vosa Vakaviti               
fo           Faroese                 Føroyskt                      
fr           French                  Français                      
fr-CA        French (Canada)         Français (Canada)             
ga           Irish                   Gaeilge                        
gl           Galician                Galego                         
gu           Gujarati                ગુજરાતી          
he           Hebrew                  עברית                     
hi           Hindi                   हिन्दी             
hr           Croatian                Hrvatski                       
hsb          Upper Sorbian           Hornjoserbšćina              
ht           Haitian Creole          Haitian Creole                 
hu           Hungarian               Magyar                         
hy           Armenian                Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶                 
id           Indonesian              Indonesia                      
ikt          Inuinnaqtun             Inuinnaqtun                    
is           Icelandic               Íslenska                      
it           Italian                 Italiano                       
iu           Inuktitut               ᐃᓄᒃᑎᑐᑦ             
iu-Latn      Inuktitut (Latin)       Inuktitut (Latin)              
ja           Japanese                日本語                      
ka           Georgian                ქართული          
kk           Kazakh                  Қазақ Тілі            
km           Khmer                   ខ្មែរ                
kmr          Kurdish (Northern)      Kurdî (Bakur)                 
kn           Kannada                 ಕನ್ನಡ                
ko           Korean                  한국어                      
ku           Kurdish (Central)       Kurdî (Navîn)                
ky           Kyrgyz                  Кыргызча               
lo           Lao                     ລາວ                      
lt           Lithuanian              Lietuvių                      
lv           Latvian                 Latviešu                      
lzh          Chinese (Literary)      中文 (文言文)             
mg           Malagasy                Malagasy                       
mi           Māori                  Te Reo Māori                  
mk           Macedonian              Македонски           
ml           Malayalam               മലയാളം             
mn-Cyrl      Mongolian (Cyrillic)    Mongolian (Cyrillic)           
mn-Mong      Mongolian (Traditional) á ®á £á ©á ­á £á ¯ á ¬á ¡á ¯á ¡
mr           Marathi                 मराठी                
ms           Malay                   Melayu                         
mt           Maltese                 Malti                          
mww          Hmong Daw               Hmong Daw                      
my           Myanmar (Burmese)       မြန်မာ             
nb           Norwegian               Norsk Bokmål                  
ne           Nepali                  नेपाली             
nl           Dutch                   Nederlands                     
or           Odia                    ଓଡ଼ିଆ                
otq          Querétaro Otomi        Hñähñu                      
pa           Punjabi                 ਪੰਜਾਬੀ             
pl           Polish                  Polski                         
prs          Dari                    دری                         
ps           Pashto                  پښتو                       
pt           Portuguese (Brazil)     Português (Brasil)            
pt-PT        Portuguese (Portugal)   Português (Portugal)          
ro           Romanian                Română                       
ru           Russian                 Русский                 
sk           Slovak                  Slovenčina                    
sl           Slovenian               Slovenščina                  
sm           Samoan                  Gagana Sāmoa                  
so           Somali                  Soomaali                       
sq           Albanian                Shqip                          
sr-Cyrl      Serbian (Cyrillic)      Српски (ћирилица)
sr-Latn      Serbian (Latin)         Srpski (latinica)              
sv           Swedish                 Svenska                        
sw           Swahili                 Kiswahili                      
ta           Tamil                   தமிழ்                
te           Telugu                  తెలుగు             
th           Thai                    ไทย                      
ti           Tigrinya                ትግር                      
tk           Turkmen                 Türkmen Dili                  
tlh-Latn     Klingon (Latin)         Klingon (Latin)                
tlh-Piqd     Klingon (pIqaD)         Klingon (pIqaD)                
to           Tongan                  Lea Fakatonga                  
tr           Turkish                 Türkçe                       
tt           Tatar                   Татар                     
ty           Tahitian                Reo Tahiti                     
ug           Uyghur                  ئۇيغۇرچە               
uk           Ukrainian               Українська           
ur           Urdu                    اردو                       
uz           Uzbek (Latin)           Uzbek (Latin)                  
vi           Vietnamese              Tiếng Việt                 
yua          Yucatec Maya            Yucatec Maya                   
yue          Cantonese (Traditional) 粵語 (繁體)                
zh-Hans      Chinese Simplified      中文 (简体)                
zh-Hant      Chinese Traditional     繁體中文 (繁體)          
zu           Zulu                    Isi-Zulu                       

 

As you can see above some of the output doesn’t look right. I’m not fluent in these languages but some of that output doesn’t look correct. Uyghur, Cantonese, Chinese and others have a bunch of rectangles. This happened because the default output encoding for PowerShell 5 doesn’t properly display Unicode characters. Fortunately, if you run this in Windows Terminal or PowerShell 7 which I normally run in VS Code then characters are displayed properly as shown below.

 

Abbreviation Name                    NativeName
------------ ----                    ----------
af           Afrikaans               Afrikaans
am           Amharic                 አማርኛ
ar           Arabic                  العربية
as           Assamese                অসমীয়া
az           Azerbaijani             Azərbaycan
ba           Bashkir                 Bashkir
bg           Bulgarian               Български
bn           Bangla                  বাংলা
bo           Tibetan                 བོད་སྐད་
bs           Bosnian                 Bosnian
ca           Catalan                 Català
cs           Czech                   Čeština
cy           Welsh                   Cymraeg
da           Danish                  Dansk
de           German                  Deutsch
dv           Divehi                  ދިވެހިބަސް
el           Greek                   Ελληνικά
en           English                 English
es           Spanish                 Español
et           Estonian                Eesti
eu           Basque                  Euskara
fa           Persian                 فارسی
fi           Finnish                 Suomi
fil          Filipino                Filipino
fj           Fijian                  Na Vosa Vakaviti
fo           Faroese                 Føroyskt
fr           French                  Français
fr-CA        French (Canada)         Français (Canada)
ga           Irish                   Gaeilge
gl           Galician                Galego
gu           Gujarati                ગુજરાતી
he           Hebrew                  עברית
hi           Hindi                   हिन्दी
hr           Croatian                Hrvatski
hsb          Upper Sorbian           Hornjoserbšćina
ht           Haitian Creole          Haitian Creole
hu           Hungarian               Magyar
hy           Armenian                Հայերեն
id           Indonesian              Indonesia
ikt          Inuinnaqtun             Inuinnaqtun
is           Icelandic               Íslenska
it           Italian                 Italiano
iu           Inuktitut               ᐃᓄᒃᑎᑐᑦ
iu-Latn      Inuktitut (Latin)       Inuktitut (Latin)
ja           Japanese                日本語
ka           Georgian                ქართული
kk           Kazakh                  Қазақ Тілі
km           Khmer                   ខ្មែរ
kmr          Kurdish (Northern)      Kurdî (Bakur)
kn           Kannada                 ಕನ್ನಡ
ko           Korean                  한국어
ku           Kurdish (Central)       Kurdî (Navîn)
ky           Kyrgyz                  Кыргызча
lo           Lao                     ລາວ
lt           Lithuanian              Lietuvių
lv           Latvian                 Latviešu
lzh          Chinese (Literary)      中文 (文言文)
mg           Malagasy                Malagasy
mi           Māori                   Te Reo Māori
mk           Macedonian              Македонски
ml           Malayalam               മലയാളം
mn-Cyrl      Mongolian (Cyrillic)    Mongolian (Cyrillic)
mn-Mong      Mongolian (Traditional) ᠮᠣᠩᠭᠣᠯ ᠬᠡᠯᠡ
mr           Marathi                 मराठी
ms           Malay                   Melayu
mt           Maltese                 Malti
mww          Hmong Daw               Hmong Daw
my           Myanmar (Burmese)       မြန်မာ
nb           Norwegian               Norsk Bokmål
ne           Nepali                  नेपाली
nl           Dutch                   Nederlands
or           Odia                    ଓଡ଼ିଆ
otq          Querétaro Otomi         Hñähñu
pa           Punjabi                 ਪੰਜਾਬੀ
pl           Polish                  Polski
prs          Dari                    دری
ps           Pashto                  پښتو
pt           Portuguese (Brazil)     Português (Brasil)
pt-PT        Portuguese (Portugal)   Português (Portugal)
ro           Romanian                Română
ru           Russian                 Русский
sk           Slovak                  Slovenčina
sl           Slovenian               Slovenščina
sm           Samoan                  Gagana Sāmoa
so           Somali                  Soomaali
sq           Albanian                Shqip
sr-Cyrl      Serbian (Cyrillic)      Српски (ћирилица)
sr-Latn      Serbian (Latin)         Srpski (latinica)
sv           Swedish                 Svenska
sw           Swahili                 Kiswahili
ta           Tamil                   தமிழ்
te           Telugu                  తెలుగు
th           Thai                    ไทย
ti           Tigrinya                ትግር
tk           Turkmen                 Türkmen Dili
tlh-Latn     Klingon (Latin)         Klingon (Latin)
tlh-Piqd     Klingon (pIqaD)         Klingon (pIqaD)
to           Tongan                  Lea Fakatonga
tr           Turkish                 Türkçe
tt           Tatar                   Татар
ty           Tahitian                Reo Tahiti
ug           Uyghur                  ئۇيغۇرچە
uk           Ukrainian               Українська
ur           Urdu                    اردو
uz           Uzbek (Latin)           Uzbek (Latin)
vi           Vietnamese              Tiếng Việt
yua          Yucatec Maya            Yucatec Maya
yue          Cantonese (Traditional) 粵語 (繁體)
zh-Hans      Chinese Simplified      中文 (简体)
zh-Hant      Chinese Traditional     繁體中文 (繁體)
zu           Zulu                    Isi-Zulu

 

These Azure cognitive services are very powerful and easy to use so they can be stitched together with a few REST calls to make some powerful applications. I look forward to seeing how more clients integrate these into their applications.

 

Have fun scripting!

 

References:

Cognitive Services documentation: https://learn.microsoft.com/en-us/azure/cognitive-services/

Translator documentation: https://learn.microsoft.com/en-us/azure/cognitive-services/translator/

Translator v3 API: https://learn.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-reference

Updated Jan 16, 2023
Version 1.0
No CommentsBe the first to comment