Salta el contingut

1. Guia Pràctica: Azure AI Translator (Capa Gratuïta)

1.1. Introducció

Azure AI Translator és un servei de traducció automàtica neural que suporta més de 100 idiomes. Permet traduir text, detectar idiomes, transliterar (canviar sistema d'escriptura) i obtenir traduccions alternatives.

1.1.1. Límits de la capa gratuïta (F0)

  • 2.000.000 caràcters/mes gratuïts per a traducció de text
  • 250.000 caràcters/mes per a traducció de documents
  • Sense cost de desplegament

1.2. Prerequisits

  • Compte d'Azure actiu
  • Python 3.8 o superior

1.3. Pas 1: Crear el recurs al portal d'Azure

  1. Ves a portal.azure.com
  2. Cerca "Translator"
  3. Fes clic a "Crear"
  4. Omple els camps:
  5. Grup de recursos: rg-ia-practica
  6. Regió: Global (recomanat) o West Europe
  7. Nom: un nom únic (p.ex. translator-practica-2024)
  8. Nivell de preus: F0 (Gratuït)
  9. Fes clic a "Revisar i crear""Crear"

Copia: - Clau (des de "Claus i punt de connexió") - Regió (p.ex. westeurope o global)

L'endpoint de Translator és sempre: https://api.cognitive.microsofttranslator.com/


1.4. Pas 2: Instal·lar les dependències

Bash
pip install requests

El servei Translator s'usa directament via API REST, sense SDK específic addicional.


1.5. Pas 3: Traducció bàsica de text

Crea un fitxer translator_basic.py:

Python
import requests
import json

TRANSLATOR_KEY = "<la-teva-clau>"
TRANSLATOR_REGION = "westeurope"  # o "global"
ENDPOINT = "https://api.cognitive.microsofttranslator.com"

def traduir(text, idioma_desti, idioma_origen=None):
    """
    Tradueix text a l'idioma de destí indicat.
    Si no s'especifica idioma_origen, es detecta automàticament.
    """
    url = f"{ENDPOINT}/translate"

    params = {
        "api-version": "3.0",
        "to": idioma_desti
    }
    if idioma_origen:
        params["from"] = idioma_origen

    headers = {
        "Ocp-Apim-Subscription-Key": TRANSLATOR_KEY,
        "Ocp-Apim-Subscription-Region": TRANSLATOR_REGION,
        "Content-Type": "application/json"
    }

    body = [{"text": text}]

    response = requests.post(url, params=params, headers=headers, json=body)
    result = response.json()

    return result[0]["translations"][0]["text"]


# Exemples d'ús
textos = [
    ("Bon dia, com esteu?", "ca"),
    ("Hello, how are you?", "en"),
    ("Hola, ¿cómo estás?", "es"),
]

idiomes_desti = ["en", "fr", "de", "ja"]

for text, idioma_orig in textos:
    print(f"\nOriginal ({idioma_orig}): {text}")
    for idioma in idiomes_desti:
        traduccio = traduir(text, idioma, idioma_origen=idioma_orig)
        print(f"  → {idioma}: {traduccio}")

1.6. Pas 4: Detecció d'idioma

Python
import requests

TRANSLATOR_KEY = "<la-teva-clau>"
TRANSLATOR_REGION = "westeurope"
ENDPOINT = "https://api.cognitive.microsofttranslator.com"

def detectar_idioma(text):
    url = f"{ENDPOINT}/detect"

    headers = {
        "Ocp-Apim-Subscription-Key": TRANSLATOR_KEY,
        "Ocp-Apim-Subscription-Region": TRANSLATOR_REGION,
        "Content-Type": "application/json"
    }

    body = [{"text": text}]
    response = requests.post(url, params={"api-version": "3.0"}, headers=headers, json=body)
    result = response.json()

    return {
        "idioma": result[0]["language"],
        "confiança": result[0]["score"]
    }


frases = [
    "This is an English sentence.",
    "Cette phrase est en français.",
    "Diese Satz ist auf Deutsch.",
    "この文は日本語です。",
    "Aquesta frase és en català.",
    "Esta frase es en castellano.",
]

print("=== DETECCIÓ D'IDIOMA ===")
for frase in frases:
    info = detectar_idioma(frase)
    print(f"  '{frase[:40]}...' → {info['idioma']} (confiança: {info['confiança']:.2f})")

1.7. Pas 5: Traducció múltiple i transliteració

1.7.1. Traducció a múltiples idiomes alhora

Python
import requests

TRANSLATOR_KEY = "<la-teva-clau>"
TRANSLATOR_REGION = "westeurope"
ENDPOINT = "https://api.cognitive.microsofttranslator.com"

def traduir_a_multiples(text, idiomes_desti):
    """Tradueix a múltiples idiomes en una sola crida (més eficient)."""
    url = f"{ENDPOINT}/translate"

    params = {
        "api-version": "3.0",
        "to": idiomes_desti  # llista d'idiomes
    }

    headers = {
        "Ocp-Apim-Subscription-Key": TRANSLATOR_KEY,
        "Ocp-Apim-Subscription-Region": TRANSLATOR_REGION,
        "Content-Type": "application/json"
    }

    body = [{"text": text}]
    response = requests.post(url, params=params, headers=headers, json=body)
    result = response.json()

    traduccions = {}
    for t in result[0]["translations"]:
        traduccions[t["to"]] = t["text"]

    return traduccions


text_original = "Benvinguts al curs d'Intel·ligència Artificial amb Azure!"
idiomes = ["en", "es", "fr", "de", "it", "pt", "ja", "zh-Hans"]

traduccions = traduir_a_multiples(text_original, idiomes)

print(f"Original (ca): {text_original}\n")
for idioma, text in traduccions.items():
    print(f"  {idioma}: {text}")

1.7.2. Transliteració (canvi de sistema d'escriptura)

Python
import requests

TRANSLATOR_KEY = "<la-teva-clau>"
TRANSLATOR_REGION = "westeurope"
ENDPOINT = "https://api.cognitive.microsofttranslator.com"

def transliterar(text, idioma, script_origen, script_desti):
    url = f"{ENDPOINT}/transliterate"

    params = {
        "api-version": "3.0",
        "language": idioma,
        "fromScript": script_origen,
        "toScript": script_desti
    }

    headers = {
        "Ocp-Apim-Subscription-Key": TRANSLATOR_KEY,
        "Ocp-Apim-Subscription-Region": TRANSLATOR_REGION,
        "Content-Type": "application/json"
    }

    body = [{"text": text}]
    response = requests.post(url, params=params, headers=headers, json=body)
    result = response.json()

    return result[0]["text"]


# Japonès (hiragana → llatí)
text_japones = "こんにちは"
romanitzat = transliterar(text_japones, "ja", "jpan", "latn")
print(f"Japonès: {text_japones} → Romanitzat: {romanitzat}")

# Xinès simplificat → llatí (pinyin)
text_xines = "你好"
pinyin = transliterar(text_xines, "zh-Hans", "Hans", "latn")
print(f"Xinès: {text_xines} → Pinyin: {pinyin}")

1.8. Pas 6: Exemple complet — traductor de fitxers

Python
import requests
import sys

TRANSLATOR_KEY = "<la-teva-clau>"
TRANSLATOR_REGION = "westeurope"
ENDPOINT = "https://api.cognitive.microsofttranslator.com"

def traduir_fitxer(fitxer_entrada, fitxer_sortida, idioma_desti):
    """Llegeix un fitxer de text i el tradueix línia per línia."""
    headers = {
        "Ocp-Apim-Subscription-Key": TRANSLATOR_KEY,
        "Ocp-Apim-Subscription-Region": TRANSLATOR_REGION,
        "Content-Type": "application/json"
    }

    with open(fitxer_entrada, "r", encoding="utf-8") as f:
        linies = [l.strip() for l in f.readlines() if l.strip()]

    # Enviar totes les línies en una sola petició (més eficient)
    body = [{"text": linia} for linia in linies]

    response = requests.post(
        f"{ENDPOINT}/translate",
        params={"api-version": "3.0", "to": idioma_desti},
        headers=headers,
        json=body
    )

    resultats = response.json()

    with open(fitxer_sortida, "w", encoding="utf-8") as f:
        for i, resultat in enumerate(resultats):
            f.write(resultat["translations"][0]["text"] + "\n")

    print(f"Traducció completada: {fitxer_sortida}")
    print(f"Línies traduïdes: {len(linies)}")


# Exemple d'ús:
# traduir_fitxer("text_original.txt", "text_angles.txt", "en")

1.9. Exercicis proposats

  1. Nivell bàsic: Crea un script que tradueixi una llista de 20 paraules en català a 5 idiomes i les mostri en format de taula.
  2. Nivell mitjà: Implementa un detector d'idioma que, donat un fitxer amb frases en idiomes barrejats, les agrupe per idioma.
  3. Nivell avançat: Construeix una eina de traducció de subtítols (.srt) que mantingui el format de temps i tradueixi el text al idioma desitjat.

1.10. Errors habituals

Error Causa Solució
401 Unauthorized Clau incorrecta Verifica la clau al portal
400 Bad Request Codi d'idioma incorrecte Consulta la llista d'idiomes suportats
403 Forbidden Regió incorrecta a la capçalera Verifica Ocp-Apim-Subscription-Region
429 Too Many Requests Massa peticions Afegeix time.sleep() entre crides

1.11. Idiomes suportats més rellevants

Codi Idioma
ca Català
es Castellà
en Anglès
fr Francès
de Alemany
it Italià
pt Portuguès
ja Japonès
zh-Hans Xinès simplificat
ar Àrab

Per veure la llista completa: GET https://api.cognitive.microsofttranslator.com/languages?api-version=3.0


1.12. Recursos addicionals