Danish, Finnish, Norwegian TTS: on MAI's list, Sume tags only Swedish
MAI-Voice-2.1 lists da-DK, fi-FI, nb-NO and sv-SE. Sume's voice library tags only sv. How to test a Nordic ad read for 1 cent and keep Bokmal text consistent.

Microsoft lists four Nordic locales for MAI-Voice-2.1 (Danish, Finnish, Norwegian Bokmal and Swedish). Sume's voice library tags only Swedish. For the other three, audition on Sume with a one-cent line before you commit a campaign.
What Microsoft lists
On Microsoft's model page the four languages sit in the same 23-language list, and the OpenRouter Flash page shows them as da-DK, fi-FI, nb-NO and sv-SE. Norwegian is Bokmal only; Nynorsk is not on the list.
| Locale code | Listed on | Note |
|---|---|---|
| da-DK | MAI-Voice-2.1 and Flash | Danish |
| fi-FI | MAI-Voice-2.1 and Flash | Finnish |
| nb-NO | MAI-Voice-2.1 and Flash | Norwegian (Bokmal) |
| sv-SE | MAI-Voice-2.1 and Flash | Also a Sume voice tag (sv) |
What Sume ships
Sume's voice library has a Swedish tag (sv) and none for Danish, Finnish or Norwegian. A Swedish ad read goes through the guard cleanly with a Swedish-tagged voice. For the others the language field still accepts the code, with the caveat that the guard cannot protect you from a mismatch it cannot see.
Sume's TTS Router (POST /v1/tts-router/generate) takes a required model (sonic-3.6, sonic-3.5, sonic-3, sonic-latest or sonic-preview), one of transcript or transcript_source, a voice selector and a language string of 2 to 16 characters. It is character-metered at $0.0475 per 1,000 characters, rounded up to whole cents per job, with a 20,000-character cap per request.
A one-cent audition
Write one line of about 200 characters that contains your hardest words: a price, a date, a brand name and a number. Save it as line.txt, then submit it and read the job. A line of 210 characters or fewer is the minimum one-cent job. Set language to the code you will use in production; if the chosen voice is tagged for a different language you get the 409 guard rather than a charge.
JOB=$(curl -sS -X POST https://api.sume.com/v1/tts-router/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: audition-da-001" \
-d "$(jq -n --rawfile t line.txt '{model:"sonic-3.6",transcript:$t,avatar_handle:"product_host",language:"da"}')" \
| jq -r '.data.request_id')
curl -sS https://api.sume.com/v1/jobs/$JOB/status -H "Authorization: Bearer $SUME_API_KEY"
curl -sS https://api.sume.com/v1/jobs/$JOB/result -H "Authorization: Bearer $SUME_API_KEY"What to listen for
- Compound words: Danish, Norwegian and Swedish join words freely, and long compounds in product names are where reads go wrong.
- Finnish case endings: a brand name that takes a suffix should be audition-tested with the suffix.
- Numbers: Danish counts in twenties, so read a price such as 75 kroner aloud in the test line.
- Norwegian text: send Bokmal and keep it consistent; a Nynorsk word inside a Bokmal script is a red flag.
- Keep one language per request. A Swedish line inside a Danish script is two jobs, not one.
What it costs
Costs follow the character count, not the language. A 450-character Swedish ad read is 3 cents; a 20,000-character narration is 95 cents.
| Test | Characters per line | Jobs | Sume cost |
|---|---|---|---|
| One line | 210 or fewer | 1 | $0.01 |
| 8 lines (one per hard case) | 210 or fewer | 8 | $0.08 |
| One 1,000-character script | 1,000 | 1 | $0.05 |
Where this stops
Sume's TTS is asynchronous: you submit, poll GET /v1/jobs/:id/status, then read /result. It does not stream audio and it has no SSML field, so pauses and emphasis come from your punctuation and the generation_config controls (speed 0.6 to 1.5, volume 0.5 to 2, a short emotion guide). Microsoft's Flash model is the one built for live conversation; for a rendered ad or a narrated video, a finished file is the thing you need.
Sources
Related posts
More in Models
- Dutch text to speech API for ads: MAI-Voice-2.1 nl-NL vs Sume nl
Dutch is on both lists: MAI-Voice-2.1 (nl-NL) and Sume's voice tags (nl). Test numbers, loanwords and the je/u register for 1 cent, then price a campaign.
- Filipino and Cantonese: fil and yue codes in MAI-Transcribe-2 vs Sume
MAI-Transcribe-2-Streaming lists fil and yue and treats unknown codes as unset. Sume takes a 2-16 character language_code hint; test a sample before relying.
- FLUX 3 Image open weights are 'coming weeks': API now or wait?
Press says FLUX 3 Image open weights arrive in the coming weeks; BFL lists commercial weights by licence. Call an API now if you need results this month.
- FLUX 3 Image combines 10 references: Sume's limits per model
BFL says FLUX 3 Image combines up to ten references. Sume lists FLUX.2, not FLUX 3: the reference ceilings per catalog model, read from the live descriptors.
Written by Sume