Azure AI Engineer · AI-103
Domain 4 · 10–15%Implement text analysis solutions

Text analysis

Structured outputs, Azure Language, Translator and Speech. The traps are retirement dates and look-alike names (custom speech vs custom voice).

PracticeD4 practice bank →

15 items, all formats, practice or timed exam mode.

AAnalyse text

4.1

Structured outputs for text analysis

For new work, sentiment, topics, entities and summaries come from an LLM that must return JSON matching your schema.

From CCA-F: The CCA-F pattern of forcing a tool call with a strict input_schema to get reliable JSON. Azure's version: response_format with a JSON schema and strict: true.

How it works

  1. Write the schema (or a Pydantic model)
  2. responses.parse(..., text_format=Model) or response_format={json_schema, strict: true}
  3. Read typed fields; handle refusals

Must know

  • Strict mode: every property listed in required, additionalProperties: false.
  • JSON mode guarantees valid JSON, not your schema.
  • Optional fields: make the type nullable rather than leaving them out of required.

Traps

  • "JSON mode with an example" is the runner-up when the stem says code must rely on the shape.
  • Language sentiment or summarisation for a new service = legacy feature.

Check yourself: d4-q23 · d4-c1 · Microsoft Learn

4.2

Azure Language: what's still core

PII detection, named entities, language detection and health text stay with Azure Language.

From CCA-F: New for you. CCA-F had no managed NLP service; think of these as deterministic, pre-built tools you'd call instead of prompting.

How it works

  1. Create a TextAnalyticsClient with Entra ID
  2. recognize_pii_entities(docs, language=...)
  3. Use redacted_text downstream

Must know

  • PII detection returns entities and redacted_text.
  • You can limit PII categories with categories_filter.
  • Text Analytics for health extracts medical entities and relations.
  • Custom NER is trained on your labelled examples.

Traps

  • PII redaction doesn't need an LLM: Language returns the redacted text.
  • Detecting language first is often the step before translation.

Check yourself: d4-n1 · d4-y1 · Microsoft Learn

4.3

Language retirements

Several Language features still work but are legacy: don't build new on them.

From CCA-F: New for you. Retirement dates are a favourite distractor: the working-but-retiring service is the runner-up.

How it works

  1. Retired → never pick
  2. Legacy → don't pick for new work
  3. Core → fine

Must know

  • Retired: LUIS (31 Mar 2026).
  • Legacy, retire 31 Mar 2029: sentiment and opinion mining, key phrases, summarisation, CLU, custom question answering, custom text classification.
  • Entity linking: retires 1 Sep 2028.
  • Language Studio moves into Foundry (studio retires 20 Mar 2027).

Traps

  • Entity linking retires a year before the other legacy features.
  • "Use CLU" for a new intent model: legacy; an LLM with structured outputs or an agent is the forward path.

Check yourself: d4-y1 · Microsoft Learn

BTranslate

4.4

Translate text: NMT or an LLM

Translator picks the engine per target: classic neural MT by default, or your LLM deployment with tone and gender.

From CCA-F: Like choosing a model per request in CCA-F, but inside one Translator call: each target language can name its own deployment.

How it works

  1. TranslationTarget(language="hi") → NMT
  2. Add deployment_name=... → LLM translation
  3. Add tone="formal" (LLM only)

Must know

  • Text API 2026-06-06 (GA).
  • NMT default category: general.
  • Adaptive custom translation uses reference sentence pairs, no full training.
  • Language auto-detects if you omit the source.

Traps

  • Tone needs the LLM option; NMT ignores it.
  • Custom training isn't needed for tone.

Check yourself: d4-q24 · d4-n2 · Microsoft Learn

4.5

Translate documents

One file now → synchronous. Many files → batch from Blob Storage.

From CCA-F: Same split as single request vs Message Batches in CCA-F: immediate and small, or asynchronous and bulk.

How it works

  1. Single file: send it in the request, get the translated file back
  2. Batch: source and target Blob containers
  3. Batch identity: managed identity or SAS to the containers

Must know

  • Document translation 2026-03-01 (GA).
  • Keeps the document's formatting (Word, PDF, PowerPoint and more).
  • Glossaries enforce your terms.
  • Batch is asynchronous: poll the job.

Traps

  • Batch for one file needed in the same request: wrong mode.
  • Translating extracted text loses formatting.

Check yourself: d4-o1 · Microsoft Learn

CSpeech

4.6

Speech to text: pick the mode

One utterance, a live stream, a single file now, or many files later: each has its own mode.

From CCA-F: New for you. The pattern matches CCA-F's sync vs batch choice; the names are the Speech SDK's.

How it works

  1. One short phrase → recognize_once
  2. Live, long audio → continuous recognition
  3. One file, quick → fast transcription; many stored files → batch transcription

Must know

  • recognize_once stops at the first pause (about 15 s max).
  • Batch transcription reads files from storage URLs and runs asynchronously.
  • Phrase lists boost recognition of names without training.
  • Custom speech trains on your audio and text for domain terms and accents.

Traps

  • recognize_once on a long file returns one sentence.
  • Custom speech ≠ custom voice.

Check yourself: d4-q25 · d4-q26 · d4-n3 · Microsoft Learn

4.7

Text to speech and SSML

Neural voices speak text; SSML controls voice, speed, pauses and pronunciation.

From CCA-F: New for you. SSML is to speech what a system prompt is to tone, but deterministic markup.

How it works

  1. Pick a neural voice (speech_synthesis_voice_name)
  2. Plain text → speak_text_async; markup → speak_ssml_async
  3. Set the output format for your channel

Must know

  • <prosody rate pitch>, <break time>, <phoneme>, <say-as>.
  • Custom voice = your own brand voice (limited access).
  • Speech translation: TranslationRecognizer with add_target_language.

Traps

  • SSML sent with speak_text_async is read out as text.
  • Custom voice changes output, not recognition.

Check yourself: d4-c2 · d4-y2 · Microsoft Learn

4.8

Voice agents: Voice Live

Voice Live runs the whole speech-to-speech loop for an agent: listening, turn-taking and speaking.

From CCA-F: A CCA-F agent loop with a voice front end. Instead of wiring STT → model → TTS yourself, one managed service does it.

How it works

  1. Open a Voice Live session (WebSocket)
  2. Choose the model and voice
  3. Stream audio both ways; it handles interruptions

Must know

  • Noise suppression, echo cancellation, semantic turn detection.
  • Avatars and telephony integrations.
  • gpt-realtime is GA.
  • Content filters don't apply to audio models.

Traps

  • Chaining three services is the runner-up when the stem says low latency and fewest parts.

Check yourself: d4-s1 · Microsoft Learn