Azure KI Übersetzer - Anwendungen mit AI-basierter Übersetzung entwickeln


Thomas Drilling09. Januar 2025

Entdecke, wie du mit Azure KI deinen Übersetzungsprozess automatisierst und effizienter gestaltest.

Einführung in den Azure KI Übersetzer

Ein weiteres Beispiel für die Leistungsfähigkeit der Azure-KI-Dienste ist der Azure KI Translator. Er ist sowohl in der Lage, die Sprache eines Textes zu erkennen, als auch diesen in die Sprache deiner Wahl zu übersetzen. In diesem Beitrag zeige ich dir, wie du aus deinem Anwendungscode mit Hilfe des  .Net-SDKs einen entsprechenden Request an den Azure KI Übersetzer senden kannst.

Der Azure KI Übersetzer ist ein cloudbasierter Service für neuronale maschinelle Übersetzungen und Teil der Azure KI Services. Er ist mit allen Betriebssystemen kompatibel. Die Textübersetzung wird in zahlreichen Microsoft-Produkten und -Diensten genutzt und von Tausenden Unternehmen weltweit für Sprachübersetzungen und andere sprachbezogene Aufgaben eingesetzt. So integrierst du beispielsweise ganz einfach Funktionen für die Textübersetzung in Echtzeit in deine Anwendungswebsites, Tools oder Lösungen, sofern diese  mehrsprachige Unterstützung erfordern, z. B. Websitelokalisierung, E-Commerce, Kundensupport, Messaginganwendungen, interne Kommunikation und vieles mehr.

In diesem Artikel zeige ich dir, wie du mit dem Übersetzer intelligente, mehrsprachige Lösungen für deine Anwendungen in allen unterstützten Sprachen entwickeln kannst. Der Dienst unterstützt die folgenden Funktionen:

  • Textübersetzung: Diese Funktion ermöglicht dir Textübersetzungen zwischen unterstützten Quell- und Zielsprachen in Echtzeit. Du hast mehrere Optionen die Funktion zu nutzen. Neben der https://learn.microsoft.com/en-us/azure/ai-services/translator/reference/rest-api-guide REST-API für Textübersetzungen steht die dir ebenfalls das https://learn.microsoft.com/en-us/azure/ai-services/translator/text-sdk-overview?tabs=csharp SDK für Azure-Textübersetzungen für .Net, Python, Java und JavaScript zur Verfügung. Außerdem gibt es einen vorgefertigten Docker-Container mit fertig enthaltenen Azure-KI-Übersetzer. So kannst du den Übersetzer in deiner eigenen Infrastruktur hosten. Das passende Container-Image findest du in der  https://mcr.microsoft.com/catalog?page=3 Microsoft Artifact Registry. Der Azure KI Übersetzer-Container befindet sich im Repository „azure-cognitive-services/translator“

  • Dokumentübersetzung: Mit Hilfe der Dokumentübersetzung kannst du komplette Dokumente zur Übersetzung an den Dienst übergeben. Hier sind zwei Fälle zu unterscheiden.

  • Die „asynchroneBatch-Übersetzung“ übersetzt Batchdateien und komplexe Dateien mit dem Ziel, die Struktur und des Formats der Originaldokumente beizubehalten. Für den Batch-Übersetzungsprozess brauchst du zusätzlich ein Azure Blob-Speicherkonto mit Containern für deine Quell- und Ziel-Dokumente.

  • Bei der „Synchronen Einzeldatei-Übersetzung“ kannst du entweder eine einzelne Dokument-Datei für sich oder diese unter Zuhilfenahme einer Glossardatei unter Beibehaltung der Struktur und des Formats des Originaldokuments übersetzen. Im Gegensatz zur asynchronen Übersetzung ist hierbei kein Azure Blob Storage notwendig, weil die endgültige Antwort direkt das übersetzte Dokument an den aufrufenden Client übergibt.

  • Benutzerdefinierter Übersetzer: mit Hilfe des benutzerdefinierten Übersetzers kannst du zwecks Übersetzung domänen- und branchenspezifische Sprache, Terminologie und Stile auch selbst angepasste Modelle verwenden.

Lass uns jetzt ein einfaches Beispiel für die Textübersetzung starten. Wie üblich brauchst du dazu zunächst die zugehörige Azure-AI-Services-Ressource, diesmal von Typ „Übersetzer“. Diese kannst du im Azure-Portal bei „Azure AI services“ erstellen. Klicke dort auf „Translator erstellen“ und wähle wie üblich Ressourcengruppe, Region, Name und einen Tarif. Der Free-Tarif F0 ist für kleinere Texte (bis zu 2M Zeichen) kostenlos.

Erstellen eines ÜbersetzersErstellen eines Übersetzers

Für das folgende Beispiel kannst du wahlweise die Azure-Cloud-Shell verwenden oder deine eigene Umgebung. Ich verwende in diesem Beispiel VS Code. Hier legst du im Verzeichnis deiner Wahl wie schon bei den vorangegangene Beispielen eine Anwendungskonfigurationsdatei mit dem Namen „appsettings.json“ an. Diese hat diesmal „nur“ folgenden Inhalt:

{
    "CognitiveServiceKey": "YOUR_COGNITIVE_SERVICES_KEY",
    "CognitiveServiceRegion": "YOUR_COGNITIVE_SERVICES_LOCATION"
}

Du musst hier nur den API-Key deiner Übersetzer-Ressource und deinen Standort eintragen. Der (http)-Endpunkt hingegen für den Übersetzer lautet für Textübersetzungen; https://api.cognitive.microsofttranslator.com. Nur bei Dokumentübersetzungen gibt es einen spezifischen Endpunkt für deine Übersetzer-Ressource https://<name-uebersetzer>.cognitiveservices.azure.com/

Die Wen-AP-Endpunkte für Text- und/oder Dokument-ÜbersetzungDie Wen-AP-Endpunkte für Text- und/oder Dokument-Übersetzung

Ergänze also deine Datei appsettings.json entsprechend:

Anpassen deiner Konfigurationsdatei für C#Anpassen deiner Konfigurationsdatei für C#

Außerdem musst du natürlich noch in VS-Code das passende .Net-SDK installieren. Dies erreichst du mit:

dotnet add package Azure.AI.Translation.Text --version 1.0.0-beta.1

Installieren des .Net-SDKs für Azure-AI-TextübersetzungenInstallieren des .Net-SDKs für Azure-AI-Textübersetzungen

Nun kannst du deine Programm-Datei erstellen. In C# wäre das „Program.cs mit folgenden Rumpf-Inhalt:

using System;  
using System.IO;  
using Newtonsoft.Json;  
using Newtonsoft.Json.Linq;  
using System.Text;  
using System.Net.Http;  
using Microsoft.Extensions.Configuration;  
using System.Threading.Tasks;
// import namespaces
namespace translate_text
{  
    class Program  
    {  
        static async Task Main(string[] args)  
        {  
            try  
            {

// Set console encoding to Unicode  
                Console.InputEncoding = Encoding.Unicode;  
                Console.OutputEncoding = Encoding.Unicode;

              // Get config settings from AppSettings  
                IConfigurationBuilder builder = new  
                   ConfigurationBuilder().AddJsonFile("appsettings.json");  
                IConfigurationRoot configuration = builder.Build();  
                string translatorRegion = configuration["TranslatorRegion"];
                string translatorKey = configuration["TranslatorKey"];
                // Create client using endpoint and key
                // Choose target language
                // Translate text         

  }  
            catch (Exception ex)  
            {

      Console.WriteLine(ex.Message);  
            }  
        }  
    }  
}

Du musst das Beispiel bei Interesse natürlich nicht abtippen. Microsoft stellt diesen Beispielcode im Repository https://github.com/MicrosoftLearning/mslearn-ai-language zur Verfügung. Klone einfach dieses Repo in VS Code, lege dabei deinen lokalen Ziel-Ordner fest, öffne ihn in VS Code und navigiere zum Verzeichnis „…\06b-translator-sdk\C-Sharp\translate-text“. Dort findest du die Programm-Datei:

Der Rumpf unserer C#-Programmdatei ist im Repo bereits enthaltenDer Rumpf unserer C#-Programmdatei ist im Repo bereits enthalten

Nun wollen wir den Programm-Code weiter ergänzen. Zuerst musst du die Unterstützung für Azure und Azure-AI-text-Analytics einbinden, bzw. als „Namespaces“ importieren. Dazu suchst du einfach nach dem Kommentar „//import namespaces“ und ersetzt ihn durch …

// import namespaces  
 using Azure;  
 using Azure.AI.Translation.Text;

Dann musst du in der Main-Function einen Text-Anayltics-Client erstellen und die erforderlichen Variablen zur aus der o. e. Konfigurationsdatei für den API-Schlüssel und deinen Standort an ihn übergeben:

// Create client using endpoint and key  
 AzureKeyCredential credential = new(translatorKey);  
 TextTranslationClient client = new(credential, translatorRegion);

Suche im Code-Gerüst nach dem Kommentar „Choose target language“ und füge folgenden Code hinzu. Dieser verwendet den Textübersetzungsdienst, um die Liste der unterstützten Sprachen zur Übersetzung zurückzugeben, und fordert den Benutzer auf, einen Sprachcode für die Zielsprache auszuwählen.

// Choose target language  
 Response<GetLanguagesResult> languagesResponse = await

client.GetLanguagesAsync(scope:"translation").ConfigureAwait(false);  
 GetLanguagesResult languages = languagesResponse.Value;  
 Console.WriteLine($"{languages.Translation.Count} languages available.\n(See  

https://learn.microsoft.com/azure/ai-services/translator/language-
   support#translation)");

 Console.WriteLine("Enter a target language code for translation (for example, en):");  
 string targetLanguage = "xx";  
 bool languageSupported = false;  
 while (!languageSupported)

{

targetLanguage = Console.ReadLine();  
     if (languages.Translation.ContainsKey(targetLanguage))  
     {  
         languageSupported = true;  
     }  
     else  
     {  
         Console.WriteLine($"{targetLanguage} is not a supported language.");  
     }  
 }

Suche danach im Code-Gerüst nach dem Kommentar „Translate Text“ und füge dort folgenden Code hinzu. Dieser fordert den Benutzer wiederholt zur Übersetzung von Text auf und verwendet den Azure AI Translator-Dienst, um ihn in die Zielsprache zu übersetzen. Die Ausgangssprache wird dabei automatisch erkannt und das Ergebnis angezeigt, bis der Benutzer „quit“ eingibt.

// Translate text  
 string inputText = "";  
 while (inputText.ToLower() != "quit")  
 {
     Console.WriteLine("Enter text to translate (quit to exit)");  
     inputText = Console.ReadLine();  
     if (inputText.ToLower() != "quit")  
     {  
         Response<IReadOnlyList<TranslatedTextItem>> translationResponse = await  
            client.TranslateAsync(targetLanguage, inputText).ConfigureAwait(false);  
         IReadOnlyList<TranslatedTextItem> translations = translationResponse.Value;

   TranslatedTextItem translation = translations[0];  
         string sourceLanguage = translation?.DetectedLanguage?.Language;  
         Console.WriteLine($"{inputText} translated from {sourceLanguage} to  
            {translation?.Translations[0].To} as {translation?.Translations?[0]?.Text}.");  
     }  
 }

Der vollständige Programm-CodeDer vollständige Programm-Code

Nun kannst du den Programmcode speichern und testen.

dotnet run

Da wir hier die oben erwähnte „Synchrone Einzeldate Übersetzung" testen, muss du nach der Aufforderung eine gültige Zielsprache aus der angezeigten Liste eingeben. Danach gibst du die zu übersetzende Phrase ein. Das Programm zeigt dir die Ergebnisse an, also das Erkennen der Ausgangssprache und die Übersetzung. Wenn du aufhören möchtest, gibst du „quit“ ein.

Übersetzung in Echtzeit aus deinem Programm herausÜbersetzung in Echtzeit aus deinem Programm heraus

Schulungen, die dich interessieren könnten