Guides

    A Portuguese voice page measured 0.836 against Spanish

    MiniMax re-voices one persona set across languages, so unique media (voice names) does not save a thin language URL; only English, Spanish, Korean and French shipped.

    Versely Team5 min read

    MiniMax re-voices one persona set across languages, so unique media (voice names) does not save a thin language URL; only English, Spanish, Korean and French shipped.

    There is no /voice-over/portuguese. That is not because the app cannot speak Portuguese. The snapshot lists 12 named MiniMax voices for Portuguese and enough engines to clear the roster floor. The page was built, rendered, and measured. Word-set Jaccard over the <header>..<main> (site nav stripped) against Spanish came back 0.836. The ship bar is 0.73 — the same threshold scripts/check-pseo-similarity.mjs uses. A twin is a twin. Portuguese was dropped into MEASURED_TWINS rather than published as a fifth language URL.

    One persona set, re-voiced

    MiniMax does not write a roster per language. It re-voices one persona set. All 20 Spanish names exist in the English roster. 10 of Portuguese’s 12 exist in the Spanish one. The “unique media” of a language page — the voice names in the table — is largely the same words in a different bucket.

    That is the slideshow lesson applied to speech: unique media does not save a thin page when the media is not even unique. A language page is a ~430-word body of which the roster table is the only part that is this language’s own. English contributes 80 rows of unique strings. Spanish 20. Korean 15. Portuguese would have contributed 12 names, ten of them already on the Spanish page. There is not enough page left to be distinct.

    The app lists 38 distinct languages across seven speech engines. A roster gate — at least three distinctly named MiniMax voices and at least three engines — selects eleven candidates: English 80, Spanish 20, Korean 15, Japanese 14, Portuguese 12, Italian 7, French 6, Indonesian 6, Russian 4, German 3, Hindi 3. Eleven pages were built and measured. Twenty of the 55 pairs sat above 0.73. Trimming shared blocks was not enough.

    Portuguese’s number is the one in the title: 0.836 versus Spanish. Japanese measured 0.749 against Korean. Those two were the first twins on the rendered HTML of the eleven-page build.

    The floor was not the binding constraint

    The named-voice floor started at 10 and was lowered to 3. Lowering it admitted five more languages that cleared named voices and engines and were not already twins: Italian 7, French 6, Indonesian 6, Russian 4, German 3. Hindi’s three slots are unnamed, so the generic-roster rule still refuses it.

    Projected into the four-page set they would actually have shipped in, only French cleared (0.710 versus Korean) and shipped. German is French’s twin at 0.890. Russian, Indonesian, and Italian all sit over the bar against Korean. No two of the five can ship together.

    Portuguese is not “too few voices.” Twelve names beat French’s six. Portuguese loses because those names are Spanish’s names. The voice-over index is the map of the four that survived: English, Spanish, Korean, French. Worst pair among them is 0.710. Universal and Character MiniMax buckets are style presets, not languages, and are excluded from every language count.

    Do not mint a Portuguese URL from this blog

    This post is not a fifth language page. It does not reprint the engine table or the twelve names. It answers why the URL is missing.

    If you need Portuguese speech, you still have the engines. MiniMax Speech is the named-roster row. Seven engines cover many languages the hub does not give a page. Support is not a page. A page is a roster deep enough, and different enough, to be its own document.

    For an existing picture, dubbing a video is the later job. Dubbing is not a reason to publish a twin of Spanish. Korean is the page that is not a re-voice of the Spanish/English persona set — not one Korean name exists in the others.

    Chinese is deliberately absent: engines list it and it is a dubbing target, but the app ships zero Chinese-labelled voices. Portuguese at least has twelve names. They are still Spanish’s names.

    What “shipped four” is for

    Use Spanish when the cast is that persona set in Spanish. Use English when the eighty-name roster is the point. Use Korean when the names are actually Korean. Use French when six named voices and seven engines are enough for that language and the twin test passed.

    Do not treat twelve names as permission to clone the Spanish page with a heading change. URLs exist where measurement passed, not as a ranking of how well the app speaks. Asking a video model for “a Portuguese presenter” because the hub omitted Portuguese is a generate plus a likeness, not a roster.

    The hub copy is the same honesty: of 38 languages the catalog touches, most carry two generic entries called Male Voice and Female Voice. Portuguese had real names and still measured as Spanish. That is the deeper refusal.

    FAQ

    Why does Portuguese have 12 voices and no page when French has 6 and a page?

    Roster depth is not the only gate. Portuguese measured 0.836 against Spanish — MiniMax re-uses the same persona names. French measured 0.710 against Korean and shipped. The URL is not a ranking of Portuguese TTS quality.

    Can I still generate Portuguese speech in Versely?

    Yes. Language coverage on the engines is broader than the four hub pages. Pick a speech model and a Portuguese-capable voice. The missing URL is a similarity refusal, not a codec refusal.

    Is Spanish a substitute page for Portuguese?

    No. Spanish is Spanish: 20 named voices, its own URL. Ten Portuguese names overlapping that list is why a Portuguese page would have been a twin. It is not why you should label a Spanish read as Portuguese.

    Will Japanese or Italian get pages later?

    Only if the body changes enough to come in under 0.73 against the pages that already ship. Japanese measured 0.749 against Korean. Italian 0.755. Re-measure after copy changes; do not publish a heading swap.