Spanish IPA Transcription - Help
← Back to Spanish transcription ↑ All Languages
Table of Contents
- Getting Started
- Quick Reference (Glossary)
- How to Read IPA Symbols
- Respelling Input
- Spanish Pronunciation Guide
- Comprehensive Spelling-to-IPA Mapping
- For Developers
About This Tool
This Spanish transcription app uses the Wiktionary Spanish Pronunciation Module to generate phonetic/phonemic transcriptions for Spanish text.
The system processes Spanish text through a rule-based approach that handles the relatively straightforward Spanish orthography and its consistent pronunciation patterns. Unlike most other languages in this tool, Spanish is purely rule-based — no lexicon or stress dictionary is used.
The engine is built on the concept of isoglosses (specific pronunciation features) which are combined to form distinct dialect profiles, allowing it to model the full range of Spanish pronunciation variation across the Spanish-speaking world.
Phonemic vs Phonetic
You can choose between two levels of detail for the IPA transcription.
- Phonetic: A detailed, narrow transcription that shows subtle, non-distinctive variations in
pronunciation (allophones). It aims to represent how a word is actually said. For example, it will
show the softening of "d" between vowels in lado as
[ˈla.ð̞o]. - Phonemic: A simplified, broad transcription that shows only the sounds that are essential
for distinguishing meaning (phonemes). It represents the abstract sound system of the language. For example,
lado would be shown as
/ˈla.do/.
Dialects & Limitations
This tool provides two primary dialect options that cover the most common pronunciation standards in the Spanish-speaking world.
- Castilian: Represents the standard pronunciation of central and northern Spain. This option
maps to the technical dialect profile
distincion-yeismo. - Latin American: Represents the most widespread pronunciation standard across Latin America.
This option maps to the technical dialect profile
seseo-yeismo.
Key Phonological Features (Isoglosses)
The engine models four main points of variation:
distinciónvs.seseo:distinción: Distinguishes the sound/θ/(like "th" in think) for letters 'z' and 'c' (before e, i) from the sound/s/for the letter 's'. This is standard in most of Spain.seseo: Merges these sounds, pronouncing 'z', 'c' (before e, i), and 's' all as/s/. This is standard in Latin America, the Canary Islands, and Andalusia.
lleísmovs.yeísmo:lleísmo: Distinguishes the sound/ʎ/(similar to "lli" in million) for the digraph 'll' from the sound/ʝ/for the letter 'y'. This is a traditional feature, now recessive.yeísmo: Merges these sounds, pronouncing both 'll' and 'y' as/ʝ/. This is the dominant pronunciation in most of the Spanish-speaking world.
- Rioplatense (
sheísmo/zheísmo): A distinct form ofyeísmofound in the Río de la Plata region (Argentina, Uruguay), where the merged 'll'/'y' sound is pronounced as a sibilant.sheísmo: Pronounces 'll' and 'y' as/ʃ/(like "sh" in shoe). Characteristic of Buenos Aires.zheísmo: Pronounces 'll' and 'y' as/ʒ/(like the "s" in measure). Found in other parts of the region.
Available Dialect Profiles
By combining these features, the engine defines the following six dialects:
distincion-yeismo: (Castilian option) The standard pronunciation of Spain. Features/θ/and merges 'll'/'y'.seseo-yeismo: (Latin American option) The most common pronunciation in Latin America. Features/s/for all sibilants and merges 'll'/'y'.distincion-lleismo: A traditional, conservative dialect of rural Spain. Features/θ/and distinguishes 'll'/ʎ/from 'y'/ʝ/.seseo-lleismo: A dialect found in some Andean regions. Features/s/for all sibilants but distinguishes 'll'/ʎ/from 'y'/ʝ/.rioplatense-sheismo: The characteristic dialect of Buenos Aires. Featuresseseoand pronounces 'll'/'y' as/ʃ/.rioplatense-zheismo: The Rioplatense dialect found outside the Buenos Aires area. Featuresseseoand pronounces 'll'/'y' as/ʒ/.
General Limitations
- Purely rule-based: No lexicon or stress dictionary. All output is deterministic from spelling.
- Standard dialects only: The two main options (Castilian, Latin American) cover the most common standards. Regional variation within Latin America is not modeled.
- Respelling input: The module is designed for respelling input (standard Spanish spelling). Non-standard spellings, slang, or code-switching may produce unexpected results.
Respelling Input
The module accepts standard Spanish spelling as input and produces IPA transcription automatically. However, for words with unusual pronunciation or when you need to override the default behavior, you can use respelling conventions.
Written Accents
Use standard Spanish written accents to mark stress:
- Acute accent (á, é, í, ó, ú): Marks primary stress on the accented syllable. E.g., café → stress on second syllable.
- Diaeresis (ü): Indicates that u is pronounced in güe/güi. E.g., pingüino → /pin.ˈɡwi.no/.
Special Letter Combinations
The module recognizes these standard Spanish digraphs and letter rules:
| Input | Result | Example |
|---|---|---|
| ch | /t͡ʃ/ | mucho |
| ll | /ʝ/ (yeismo) / /ʎ/ (lleismo) | calle |
| qu | /k/ (silent u) | que, qui |
| gu | /ɡ/ (silent u before e/i) | guerra, guia |
| gü | /ɡw/ (u pronounced) | pingüino |
| ñ | /ɲ/ | año |
| rr | /r/ (trill) | perro |
Default Stress Rules
When no written accent is present, stress is assigned automatically:
- Words ending in vowel, n, or s: Stress on the penultimate syllable. casa → /ˈka.sa/, cantán → /kan.ˈtan/
- Words ending in other consonants: Stress on the final syllable. correr → /ko.ˈreɾ/, ciudad → /θjuˈdad/ (Castilian) / /sjuˈdad/ (Latin American)
Special Cases
- -mente suffix: Adverbs get dual stress — secondary on stem, primary on -mente. rápidamente → /ˌra.pi.da.ˈmen.te/
- Unstressed function words: Common monosyllables (el, la, que, de, a, por, en, con, etc.) are typically unstressed.
- Word-initial ps-/pt-: The p is dropped: psicología → /si.ko.lo.ˈxi.a/
- Word-initial x-: Pronounced as /s/: xenofobia → /se.noˈfo.bja/
Loanword Handling
The module handles several types of loanwords:
- English loanwords with sh: Pronounced as /ʃ/: show → /ˈʃow/
- German/Dutch names with w: Pronounced as /w/ (consonantal): Wagner → /waɡ.ˈneɾ/
- Words with k: Pronounced as /k/: kilo → /ˈki.lo/
- Words with w: Pronounced as /w/ (consonantal): whisky → /ˈwis.ki/
Quick Reference (Glossary)
- Phoneme
- The smallest unit of sound that distinguishes meaning. E.g., /b/ vs /p/ distinguish barco from parco.
- Allophone
- A predictable variant of a phoneme. E.g., [β] (fricative) is an allophone of /b/ between vowels.
- Diphthong
- A gliding vowel sound within a single syllable. Spanish has rising diphthongs (ia, ie, ua, etc.) and falling diphthongs (ai, ei, ou, etc.).
- Hiatus
- Two adjacent vowels pronounced in separate syllables. E.g., po-ema, ra-íz.
- Isogloss
- A boundary line on a map separating areas with different linguistic features. In this tool, isoglosses define pronunciation differences (distinción/seseo, yeísmo/lleísmo, etc.).
- Distinción
- The pronunciation feature that distinguishes /θ/ (for c/z) from /s/ (for s). Standard in most of Spain.
- Seseo
- The pronunciation feature that merges c/z and s all as /s/. Standard in Latin America.
- Yeísmo
- The merger of ll and y into a single sound (/ʝ/). Dominant in most of the Spanish-speaking world.
- Lleísmo
- The preservation of ll as /ʎ/, distinct from y as /ʝ/. Traditional, now recessive.
- Sheísmo / Zheísmo
- Rioplatense pronunciations of merged ll/y: /ʃ/ (Buenos Aires) or /ʒ/ (elsewhere in Argentina/Uruguay).
- Approximant
- A consonant produced with the vocal tract narrowed but not enough to create friction. In Spanish phonetic transcription, /b, d, g/ become approximants [β̞, ð̞, ɣ̞] between vowels.
- Nasal Assimilation
- When /n/ changes its place of articulation to match the following consonant. E.g., invierno → [ĩmˈbjeɾno].
- Geminate
- A doubled consonant, pronounced longer than a single consonant. E.g., ennoblecer has geminate nn.
- Syllable Boundary
- A marker (.) showing where syllables divide. E.g., ca-sa, co-rrer. Affects stress assignment and consonant cluster behavior.
- Onset
- The consonant(s) at the beginning of a syllable, before the vowel. E.g., in planta, pl is the onset of the first syllable.
- Coda
- The consonant(s) at the end of a syllable, after the vowel. E.g., in stante, nt is the coda of the first syllable.
- Voiced Fricative / Approximant
- A consonant produced with voiced airflow through a narrow channel. In Spanish phonetic transcription, /b, d, g/ become fricatives [β, ð, ɣ] between vowels, further realized as approximants [β̞, ð̞, ɣ̞].
- Place of Articulation
- Where in the vocal tract a consonant is produced. Spanish nasals assimilate in place: bilabial (m), dental (n̪), palatal (ɲ), velar (ŋ).
- Affricate
- A consonant that begins as a stop and releases as a fricative. E.g., ch in mucho is /t͡ʃ/ — a stop /t/ releasing into fricative /ʃ/.
- Lateral
- A consonant in which airflow passes around the sides of the tongue. /l/ is the only lateral in Spanish. In phonetic transcription, /l/ assimilates in place before coronal consonants.
- Tap vs Trill
- Two types of r sounds in Spanish. The tap /ɾ/ (single r between vowels) is a single brief contact. The trill /r/ (rr or word-initial r) involves multiple contacts.
- Sonorant
- A voiced sound produced without significant obstruction. In Spanish: nasals (m, n, ɲ), lateral (l), and taps/trills (ɾ, r). Sonorants do not trigger voicing assimilation of preceding stops.
- Obstruent
- A sound produced with significant obstruction. In Spanish: stops (p, t, k, b, d, g), fricatives (f, s, θ, x), and affricate (t͡ʃ). Voiceless stops are voiced before obstruents.
How to Read IPA Symbols
Vowel Symbols
Spanish has 5 vowel phonemes. In phonetic transcription, vowels may be nasalized before nasals.
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| /a/ | casa | "father" | Open central vowel |
| /e/ | mesa | "bed" (tenser) | Close-mid front vowel |
| /i/ | vida | "see" | Close front vowel |
| /o/ | todo | "go" (without glide) | Close-mid back rounded vowel |
| /u/ | luna | "flute" | Close back rounded vowel |
Consonant Symbols
| IPA | Example | English Approximation | Notes |
|---|---|---|---|
| /p/ | peso | "pen" | Voiceless bilabial stop |
| /b/ | barco | "bad" | Voiced bilabial stop (→ [β] between vowels) |
| /t/ | todo | "top" | Voiceless dental stop [t̪] |
| /d/ | dedo | "day" | Voiced dental stop (→ [ð̞] between vowels) |
| /k/ | casa | "cat" | Voiceless velar stop |
| /ɡ/ | gato | "go" | Voiced velar stop (→ [ɣ̞] between vowels) |
| /f/ | foto | "far" | Voiceless labiodental fricative |
| /s/ | casa | "see" | Voiceless alveolar fricative (→ [z] before voiced consonants) |
| /θ/ | caza | "think" | Voiceless dental fricative (Castilian only, for c/z) |
| /x/ | gente | Scottish "loch" | Voiceless velar fricative (from g before e/i, and j) |
| /t͡ʃ/ | mucho | "church" | Voiceless postalveolar affricate (written ch) |
| /ʝ/ | yo | "yes" (with friction) | Voiced palatal fricative (yeísmo: ll/y) |
| /ʎ/ | calle | "million" (lli) | Palatal lateral (lleísmo only) |
| /ʃ/ | show | "shoe" | Voiceless postalveolar fricative (from sh, Rioplatense ll/y) |
| /m/ | mesa | "man" | Bilabial nasal |
| /n/ | noche | "no" | Alveolar nasal (assimilates to following consonant) |
| /ɲ/ | año | "canyon" (ny) | Palatal nasal (written ñ) |
| /l/ | luna | "let" | Lateral approximant |
| /ɾ/ | pero | "better" (tt) | Alveolar tap (single r between vowels) |
| /r/ | perro | Spanish "rr" (rolled) | Alveolar trill (written rr, or r word-initially) |
| /w/ | hueso | "wet" | Labial-velar approximant (from u in diphthong) |
| /j/ | hierba | "yes" | Palatal approximant (from i in diphthong) |
| /w̝/ | hueso | "wet" (with raising) | Raised labiovelar approximant (from hu- before vowel) |
Diacritical Marks
| Symbol | Name | Meaning | Example |
|---|---|---|---|
| ˈ | Primary stress | Main emphasis in word | /ˈka.sa/ |
| ˌ | Secondary stress | Lesser emphasis (in compound words like -mente) | /ˌfe.ɾo.ˈmen.te/ |
| õ | Nasalized | Vowel with nasal airflow (before m/n/ñ) | [ˈkõ.n̪o] |
| β̞ | Lowered | Approximant realization of voiced fricatives | [β̞, ð̞, ɣ̞] |
| ai̯ | Non-syllabic | Glide (part of diphthong) | [ˈai̯], [ˈau̯] |
| t̪ | Dental | Consonant is dental (not alveolar) | [t̪, d̪] |
Interactive Features
- Click words to cycle variants: Some words have multiple valid pronunciations (e.g., regional variants). Click any transcribed word to see alternative IPA forms if available.
- Audio playback: Click the speaker icon next to any word or line to hear text-to-speech pronunciation using the Spanish (es-ES) voice (requires browser TTS support).
- Export results: Use PDF or CSV buttons to save transcriptions in your preferred format.
Multiple Pronunciation Variants
For some Spanish words, the system produces multiple valid transcriptions:
- Dialect variants: Words with c/z or ll/y will show different pronunciations depending on the dialect selected. For example, cerveza has /seɾˈbe.sa/ (Latin American) and /θeɾˈbe.θa/ (Castilian).
- Stress ambiguity: Some words may have ambiguous stress patterns that produce multiple valid results.
When multiple variants exist, click the word to cycle through them. The currently selected variant will be used for PDF/CSV export.
Spanish Pronunciation Guide
Vowels & Diphthongs
Spanish has exactly 5 vowel phonemes: /a, e, i, o, u/. Unlike English, Spanish vowels are very consistent — each letter always represents the same sound.
Vowel Quality
- a /a/ — open central, like "father": casa /ˈka.sa/
- e /e/ — close-mid front, like "café": mesa /ˈme.sa/
- i /i/ — close front, like "see": vida /ˈbi.da/
- o /o/ — close-mid back, like "go" (without glide): todo /ˈto.do/
- u /u/ — close back, like "flute": luna /ˈlu.na/
Diphthongs
Spanish diphthongs occur when an unstressed i or u combines with another vowel in the same syllable:
| Type | Spelling | IPA | Example |
|---|---|---|---|
| Rising (i-) | ia, ie, io, iu | /ja, je, jo, ju/ | hierba /ˈʝeɾ.ba/, siete /ˈsje.te/ |
| Rising (u-) | ua, ue, ui, uo | /wa, we, wi, wo/ | cuatro /ˈkwa.tɾo/, bueno /ˈbwe.no/ |
| Falling | ai, ei, oi, au, eu, ou | /ai, ei, oi, au, eu, ou/ | aire /ˈai.ɾe/, causa /ˈkau.sa/ |
Hiatus (Separate Syllables)
When two vowels appear together but belong to different syllables, it is a hiatus:
- a, e, o + a, e, o: always hiatus — poema /po.ˈe.ma/
- Any vowel + stressed vowel: hiatus — raíz /ra.ˈis/
- ii, uu: always hiatus — antiincendios
- Unstressed i/u + same type: hiatus — chiita
Consonant Rules
B and V (Identical in Spanish)
Spanish does not distinguish b and v at the phonemic level — both represent /b/. In phonetic transcription, /b/ becomes the approximant [β̞] between vowels.
- barco /ˈbaɾ.ko/ → phonetic: [ˈbaɾ.ko]
- vaca /ˈba.ka/ → phonetic: [ˈba.ka]
C, Z, and S (Distinción vs Seseo)
| Spelling | Castilian (distinción) | Latin American (seseo) | Example |
|---|---|---|---|
| c before e, i | /θ/ | /s/ | cerveza |
| z | /θ/ | /s/ | zapato |
| s | /s/ | /s/ | casa |
| c before a, o, u | /k/ | /k/ | casa, comer |
LL and Y (Yeísmo vs Lleísmo)
| Spelling | Yeísmo (most speakers) | Lleísmo (traditional) | Rioplatense |
|---|---|---|---|
| ll | /ʝ/ | /ʎ/ | /ʃ/ or /ʒ/ |
| y (consonantal) | /ʝ/ | /ʝ/ | /ʃ/ or /ʒ/ |
In phonetic transcription, /ʝ/ is realized as [ɟ͡ʝ] (voiced palatal affricate).
G before E/I
- g before e, i → /x/ (like j): gente /ˈxen.te/
- gu before e, i → /ɡ/ (silent u): guerra /ˈɡe.ra/
- gü before e, i → /ɡw/ (u pronounced): pingüino /pin.ˈɡwi.no/
QU
qu before e/i → /k/ (silent u): que /ke/, quien /ˈkjen/
R and RR
- rr → alveolar trill /r/: perro /ˈpe.ro/
- r word-initially, after l/n/s/z/θ → trill /r/: rojo, honra, Israel
- r elsewhere → alveolar tap /ɾ/: pero /ˈpe.ɾo/
H (Silent)
h is always silent in standard Spanish: hacer /a.ˈθeɾ/ (Castilian), hola /ˈo.la/.
CH
ch → /t͡ʃ/: mucho /ˈmu.t͡ʃo/
Ñ
ñ → /ɲ/: año /ˈa.ɲo/
X
- Word-initial x → /s/: xenofobia /se.noˈfo.bja/
- Elsewhere x → /ks/: exacto /eɡ.ˈsaɡ.to/
Stress Patterns
Spanish stress follows predictable rules based on the final letter:
Default Stress Rules
- Words ending in vowel, n, or s: Stress on the penultimate (second-to-last) syllable. ca-sa /ˈka.sa/, can-tan /kan.ˈtan/, á-rbo-les /ˈaɾ.bo.les/
- Words ending in consonant (other than n or s): Stress on the last syllable. co-rrer /ko.ˈɾeɾ/, ciu-dad /θjuˈdad/
Written Accents
When a word breaks the default stress rules, a written accent (acute accent) marks the stressed syllable: café /ka.ˈfe/, teléfono /te.ˈle.fo.no/, rápido /ˈra.pi.do/.
-mente Suffix
Adverbs ending in -mente have two stresses: secondary on the stem, primary on -mente: rápidamente /ˌra.pi.da.ˈmen.te/.
Unstressed Function Words
Common monosyllabic function words are typically unstressed: el, la, los, las, un, me, te, se, lo, le, que, de, a, por, en, con.
Dialectal Differences
Here is a summary of the differences between the two main options provided:
- Castilian (Standard Peninsular Spanish)
- Distinction (
distinción): Pronounces 'c' (before e,i) and 'z' as/θ/.- caza (hunt) →
[ˈka.θa] - casa (house) →
[ˈka.sa]
- caza (hunt) →
Yeísmo: Pronounces 'll' and 'y' the same, as/ʝ/.- calló (he fell silent) and cayó (he fell) are pronounced identically.
- Distinction (
- Latin American (Standard American Spanish)
Seseo: Pronounces 'c' (before e,i), 'z', and 's' all as/s/.- caza (hunt) →
[ˈka.sa] - casa (house) →
[ˈka.sa]
- caza (hunt) →
Yeísmo: Pronounces 'll' and 'y' the same, as/ʝ/.- calló and cayó are pronounced identically.
Comprehensive Spelling-to-IPA Mapping
Vowels & Diphthongs
| Spelling | IPA | Context | Example |
|---|---|---|---|
| a | /a/ | Always | casa /ˈka.sa/ |
| e | /e/ | Always | mesa /ˈme.sa/ |
| i | /i/ | Always | vida /ˈbi.da/ |
| o | /o/ | Always | todo /ˈto.do/ |
| u | /u/ | Always (except after g/q) | luna /ˈlu.na/ |
| ia, ie, io, iu | /ja, je, jo, ju/ | Rising diphthong | hierba /ˈʝeɾ.ba/ |
| ua, ue, ui, uo | /wa, we, wi, wo/ | Rising diphthong | hueso /ˈw̝e.so/ |
| ai, ei, oi | /ai, ei, oi/ | Falling diphthong | aire /ˈai.ɾe/ |
| au, eu, ou | /au, eu, ou/ | Falling diphthong | causa /ˈkau.sa/ |
Consonants
| Spelling | IPA | Context | Example |
|---|---|---|---|
| b, v | /b/ | Always (no distinction) | barco, vaca |
| c | /k/ | Before a, o, u | casa, comer |
| c | /θ/ (Cast.) / /s/ (LatAm) | Before e, i | cerveza |
| ch | /t͡ʃ/ | Always | mucho |
| d | /d/ | Always (→ [ð̞] between vowels) | dedo |
| f | /f/ | Always | foto |
| g | /ɡ/ | Before a, o, u | gato, gota |
| g | /x/ | Before e, i | gente, gigante |
| gu | /ɡ/ | Before e, i (silent u) | guerra /ˈɡe.ra/ |
| gü | /ɡw/ | Before e, i (u pronounced) | pingüino /pin.ˈɡwi.no/ |
| h | (silent) | Always | hacer /a.ˈseɾ/ (LatAm) / /a.ˈθeɾ/ (Cast.) |
| j | /x/ | Always | jugar /xuˈɡaɾ/ |
| k | /k/ | Always (loanwords) | kilo |
| l | /l/ | Always | luna |
| ll | /ʝ/ (yeísmo) / /ʎ/ (lleísmo) | Always | calle |
| m | /m/ | Always | mesa |
| n | /n/ | Always (assimilates to following consonant) | noche |
| ñ | /ɲ/ | Always | año |
| p | /p/ | Always | peso |
| qu | /k/ | Before e, i (silent u) | que /ke/ |
| r | /ɾ/ | Between vowels | pero /ˈpe.ɾo/ |
| r | /r/ | Word-initial, after l/n/s/z | rojo, honra |
| rr | /r/ | Always (trill) | perro /ˈpe.ro/ |
| s | /s/ | Always | casa |
| t | /t/ | Always | todo |
| w | /w/ or /b/ | Loanwords | windows |
| x | /ks/ | Usually | exacto /eɡ.ˈsaɡ.to/ |
| x | /s/ | Word-initial | xenofobia |
| y | /ʝ/ / /ʃ/ / /ʒ/ | Consonantal (before vowel) | yo, playa |
| y | /i/ | Word-final (after vowel) | muy /ˈmui/, hay /ˈai/ |
| z | /θ/ (Cast.) / /s/ (LatAm) | Always | zapato |
Context-Dependent Rules
| Rule | Input | Output | Example |
|---|---|---|---|
| Word-initial ps-, pt- | psicologia | /si.ko.lo.ˈxi.a/ | p is dropped |
| n before b/p/m | inmigración | /im.mi.ˈɡɾa.sjon/ (phonemic) | n → m (labial assimilation); nasalization is phonetic only |
| Voiced fricatives between vowels | lado | [ˈla.ð̞o] | d → ð̞ (approximant) |
| Nasal assimilation | conferencia | [kõɱ.fe.ˈɾẽn.sja] (LatAm phonetic) | n → ɱ before f |
| Nasal assimilation (velar) | congreso | /kon.ˈɡɾe.so/ → phonetic: [kõŋ.ˈɡɾe.so] | n → ŋ before k/g (velar) |
| Nasal assimilation (palatal) | ancho | /ˈan.t͡ʃo/ → phonetic: [ˈãnʲ.t͡ʃo] | n → nʲ before t͡ʃ |
| Lateral assimilation | alto | /ˈal.to/ → phonetic: [ˈal̪.t̪o] | l → l̪ before dental t/d |
| S voicing before voiced consonants | desde | /ˈdes.de/ → phonetic: [ˈdez.ð̞e] | s → z before voiced consonant |
| Voiceless stop voicing | absoluto | /ab.so.ˈlu.to/ (voicing applies in both phonemic and phonetic) | p → b before s (obstruent, in main pipeline) |
| Word-initial x | xilófono | /si.ˈlo.fo.no/ | x → s (before any vowel) |
| Word-initial hi- | hierba | /ˈʝeɾ.ba/ (yeismo) / /ˈjeɾ.ba/ (Rioplatense) | hi → ʝ (yeismo) or j (Rioplatense, NOT affected by sheismo) |
| Word-initial hu- | hueso | /ˈw̝e.so/ | hu → w̝ (raised labiovelar approximant) |
| Geminate preservation | ennoblecer | /en.no.bleˈθeɾ/ | nn preserved as geminate (not reduced) |
| cc → k | broccoli | /bɾo.ˈko.li/ | cc reduced to single k |
Implementation Details (for Developers)
The Spanish transcription engine is implemented as a Lua module (es-pron_wasm.lua), based on the
Wiktionary Spanish Pronunciation Module. It runs in the browser via
Wasmoon (Lua 5.4 WebAssembly).
Processing Pipeline
Text goes through the following stages:
1. Canonicalization
- Text is lowercased.
- Unicode decomposed (NFD) except ñ and ü.
- Punctuation converted to IPA foot boundaries.
- Spaces normalized; word boundaries
#added. - Common function words (el, la, que, de, etc.) marked as unstressed.
2. Letter Combination Handling
| Step | Rule | Example |
|---|---|---|
| ch → ĉ | Digraph for affricate | mucho → muĉo |
| sh → ʃ | Postalveolar fricative | show → ʃow |
| Word-initial ps/pt | p is dropped | psicologia → sicologia |
| Word-initial x | → s | xenofobia → senofobia |
| c before e/i | → θ (distinción) or z (seseo) | cerveza → θerveza or zerveza |
| g before e/i | → x | gente → xente |
| qu/gu before e/i | u is silent | que → ke, guerra → gerra |
| z → θ or z | Dialect-dependent | zapato → θapato or zapato |
3. Consonant Mapping
| Input | IPA |
|---|---|
| c | k |
| j | x |
| ñ | ɲ |
| r | ɾ |
| v | b |
4. Special Consonant Rules
- ll → ʎ (lleísmo) or ɟ (yeísmo, internal symbol)
- rr → r (trill)
- r word-initially, after l/n/s/z → trill
- Double consonants reduced to single (except nn, bb)
- Voiceless stops voiced before obstruents/nasals (p→b, t→d, k→g)
- n before b/p/m → m (labial assimilation)
- h deleted (silent)
5. Internal Notation
The module uses several internal symbols during processing, converted to final IPA at the end:
| Symbol | Name | Purpose | Final IPA |
|---|---|---|---|
ĉ |
C-circumflex | Internal placeholder for ch affricate | t͡ʃ |
ɟ |
Dotless j with stroke | Internal placeholder for ll/y (yeismo) | ʝ (phonemic) / ɟ͡ʝ (phonetic) |
TEMP_W |
Temporary W | Placeholder for hu- diphthong | w̝ |
N |
Uppercase N | Preserves geminate nn during consonant reduction | n.n |
B |
Uppercase B | Preserves geminate bb during consonant reduction | b.b |
6. Glide Formation & Syllabification
- Intervocalic i → j, u → w (including across h: marihuana → marixwana)
- i + vowel → j + vowel (rising diphthong)
- u + vowel → w + vowel (rising diphthong)
- Syllabified using onset/coda validity rules
7. Syllabification Rules
Consonant clusters between vowels are split according to these rules:
- Stop + liquid clusters (pl, pr, bl, br, fl, fr, kl, kr, gl, gr, tl, tr): kept together as onset
- Digraphs (ch, sh, ph, th, dh, fh, kh, gh): kept together (but bh is split)
- ll, rr, tz: kept together
- Word-final tl: divided from previous vowel (nahuatl → na.hua.tl)
- All other clusters: divided before the last consonant
8. Hiatus Rules
Two vowels in the same syllable are split into separate syllables (hiatus) when:
- Both are a, e, or o: poema → po.e.ma
- Either is a stressed vowel: raíz → ra.íz
- Both are i or both are u: antiincendios → an.ti.in.cen.di.os
- Unstressed i/u followed by another i/u of the same type
9. Stress Assignment
- Explicit accent marks (á, é, í, ó, ú) take priority
- Default: penultimate if word ends in vowel/n/s; otherwise final
- -mente words get dual stress (primary + secondary)
10. Post-Processing
| Step | Condition | Effect |
|---|---|---|
| Rioplatense | rioplatense dialect | ɟ → ʃ (sheismo) or ʒ (zheismo) |
| Vowel nasalization | Phonetic mode | Vowels nasalized before m/n/ñ in same syllable |
| Fricative voicing | Phonetic mode | s → z, θ → θ̬ before voiced consonants and ɾ/r; f → v before voiced consonants (NOT before ɾ/r) |
| Stop vs fricative | Phonetic mode | b/d/ʝ/g → β/ð/ʝ/ɣ between vowels; restored after nasals |
| Nasal assimilation | Phonetic mode | n assimilates to place of following consonant |
| Lateral assimilation | Phonetic mode | l assimilates before coronal consonants |
| Dental articulation | Phonetic mode | t, d → t̪, d̪ (always dental) |
| Approximant marking | Phonetic mode | β, ð, ɣ → β̞, ð̞, ɣ̞ (lowered) |
11. Example Transformations
Here are complete examples showing how the module processes words from input to final IPA:
| Input | Key Steps | Final IPA |
|---|---|---|
| cerveza (LatAm) | c → θ → z (seseo); e → e; v → b; z → θ → z → s (seseo); stress on penult | /seɾ.ˈbe.sa/ |
| cerveza (Cast.) | c before e → θ (distinción); e → e; v → b; z → θ; stress on penult | /θeɾ.ˈbe.θa/ |
| calle (yeismo) | c → k; ll → ɟ (yeismo internal); stress on penult | /ˈka.ʝe/ |
| calle (sheismo) | c → k; ll → ɟ → ʃ (Rioplatense); stress on penult | /ˈka.ʃe/ |
| exacto | x → ks; e → e; c → k; t → t; o → o; k → ɡ before s (voicing); stress on final | /eɡ.ˈsaɡ.to/ |
| psicologia | Word-initial p dropped; s → s; i → i; c → k; stress on penult | /si.ko.lo.ˈxi.a/ |
| gente | g before e → x; e → e; n → n; t → t; e → e; stress on penult | /ˈxen.te/ |
| hueso | h deleted; u + e → we (diphthong); s → s; o → o; stress on penult | /ˈw̝e.so/ |
| perro | p → p; rr → r (trill); e → e; o → o; stress on penult | /ˈpe.ro/ |
| lado (phonetic) | l → l; a → a; d → ð̞ (approximant between vowels); o → o; stress on penult | [ˈla.ð̞o] |
Detailed Phonetic Rules
When Phonetic mode is selected, the following allophonic rules are applied in order:
Fricative Voicing Before Voiced Consonants
| Phoneme | Before voiced consonant | Example |
|---|---|---|
| /θ/ | [θ̬] | juzgar → [xuθ̬ˈɣ̞aɾ] |
| /s/ | [z] | desde → [ˈd̪ez.ð̞e] |
| /f/ | [v] | afganés → [avˈɣ̞a.nes] |
Note: Voiced consonants that trigger θ and s voicing: m, n, ɲ, b, d, ʝ, g, ʎ, w, ɾ, r. For f, voicing only applies before m, n, ɲ, b, d, ʝ, g, ʎ, w (NOT before ɾ, r).
Stop vs Fricative Allophones of /b, d, g/
| Phoneme | Default (between vowels) | After nasal/lateral | Word-initial | Example |
|---|---|---|---|---|
| /b/ | [β̞] | [b] after m, n, ɲ | [b] | vaca → [ˈba.ka] |
| /d/ | [ð̞] | [d] after l, ʎ, m, n, ɲ | [d] | lado → [ˈla.ð̞o] |
| /ʝ/ | [ʝ] | [ɟ] after l, ʎ, m, n, ɲ | [ɟ] | yo → [ˈɟ͡ʝo] |
| /ɡ/ | [ɣ̞] | [ɡ] after m, n, ɲ | [ɡ] | agua → [ˈa.ɣ̞wa] |
Nasal Place Assimilation
| Following consonant | Nasal realization | Example |
|---|---|---|
| f, v | [ɱ] (labiodental) | invierno → [ĩmˈbjeɾ.no] |
| t, d | [n̪] (dentialveolar) | entender → [ẽn̪.t̪ẽn̪.ˈd̪eɾ] |
| θ | [n̟] (dental) | concierto → [kõn̟.ˈθjeɾ.t̪o] (Castilian) |
| t͡ʃ, ʃ, ʒ | [nʲ] (alveolopalatal) | ancho → [ˈãnʲ.t͡ʃo] |
| ʝ, ʎ | [ɲ] (palatal) | conllevar → [kõɲ.ʎeˈβ̞aɾ] |
| k, x, ɡ | [ŋ] (velar) | congreso → /kon.ˈɡɾe.so/ (phonemic) → [kõŋ.ˈɡɾe.so] (phonetic) |
Lateral Place Assimilation
| Following consonant | Lateral realization | Example |
|---|---|---|
| t, d | [l̪] (dental) | alto → [ˈal̪.t̪o] |
| θ | [l̟] (dental) | colza → [ˈkol̟.θa] (Castilian phonetic) |
| t͡ʃ, ʃ | [lʲ] (alveolopalatal) | melchor → [ˈmelʲ.t͡ʃoɾ] |
Vowel Nasalization
In phonetic mode, vowels are nasalized when followed by a nasal (m, n, ɲ) in the same syllable:
- canto → [ˈkãn̪.t̪o]
- conmigo → [kõm.ˈmi.ɣ̞o]
- enseñar → [ẽn.se.ˈɲaɾ]
Non-syllabic Diacritic on Offglides
In diphthongs and triphthongs, the non-head vowel receives the non-syllabic mark ̯:
- Rising: hierba → [ˈɟ͡ʝeɾ.β̞a]
- Falling: causa → [ˈkau̯.sa]
- Triphthong: Paraguay → [pa.ɾaˈɣ̞wai̯]
Dental Articulation
In phonetic mode, /t/ and /d/ are always dental [t̪] and [d̪], not alveolar as in English.
Approximant Realization
In phonetic mode, [β, ð, ɣ] are further marked as lowered approximants [β̞, ð̞, ɣ̞]. These are produced with the vocal tract narrowed but not enough to create friction — closer to a glide than a true fricative.
Respelling Conventions
The module accepts respelling input with special conventions for overriding default pronunciation:
Explicit Stress Marks
- Acute accent (á, é, í, ó, ú): Marks primary stress on the accented vowel. Takes priority over default stress rules. E.g., café → stress on final syllable.
- Grave accent (à, è, ì, ò, ù): Marks secondary stress. E.g., in compound words or with -mente suffix.
- Circumflex (â, ê, î, ô, û): Marks explicitly unstressed words/prefixes. Used internally for function words (el, la, que, de, etc.).
Y as Consonant or Vowel
- Y before a vowel: Treated as consonant /ʝ/ (or /ʃ/, /ʒ/ in Rioplatense). E.g., yo, playa.
- Y at word end after vowel: Treated as /i/. E.g., muy → /ˈmui/, hay → /ˈai/.
- -ay, -ey, -oy, -uy at word end: The y is stressed (not a diphthong). E.g., muy has stress on u, not y.
Silent H Handling
The letter h is always silent in Spanish and is deleted during processing. However, h plays a role in syllabification: VhV sequences are NOT broken into separate syllables. E.g., prohibir → prohi.bir (not pro.hi.bir).
Dialect-Specific Output
The module produces different output depending on the selected dialect. Key differences:
| Feature | Castilian | Latin American | Rioplatense |
|---|---|---|---|
| c before e/i | /θ/ | /s/ | /s/ |
| z | /θ/ | /s/ | /s/ |
| ll | /ʝ/ (yeísmo) or /ʎ/ (lleísmo) | /ʝ/ | /ʃ/ or /ʒ/ |
| y (consonantal) | /ʝ/ | /ʝ/ | /ʃ/ or /ʒ/ |
| hi- (word-initial) | /ʝ/ | /ʝ/ | /j/ (NOT /ʃ/ or /ʝ/) |
Raw Phonemic/Phonetic Input
Users can bypass the respelling system using the raw: prefix:
raw:/phonemic/— provides a raw phonemic pronunciationraw:[phonetic]— provides a raw phonetic pronunciationraw:/phonemic/ [phonetic]— provides both
Common Issues & Limitations
Known Transcription Problems
| Input | Issue | Cause | What to Do |
|---|---|---|---|
| Foreign proper names | Approximate pronunciation | Spanish phonotactics applied to non-Spanish words | Use respelling if needed |
| Ambiguous stress | Wrong stress placement | Default stress rules may not match the word's actual stress | Add written accent to input: café |
| Loanwords with unusual spellings | Unexpected output | Rule engine optimized for standard Spanish spelling | Use respelling |
| German/Dutch names with w | w pronounced as /b/ | Module converts w → v → /b/ | Use respelling: washington → güashington |
| Words with cc | cc reduced to single /k/ | Module reduces doubled consonants | Expected behavior; broccoli → /ˈbɾo.ko.li/ |
| Words with silent h | h always silent | Module deletes all h | Expected behavior; hola → /ˈo.la/ |
| Dialect-specific ll/y | Different output for different dialects | Module produces /ʝ/, /ʎ/, /ʃ/, or /ʒ/ depending on dialect | Select the dialect that matches your target pronunciation |
| Dialect-specific c/z | Different output for different dialects | Module produces /θ/ (Castilian) or /s/ (Latin American) | Select the dialect that matches your target pronunciation |
| Rioplatense hi- vs ll-/y- | Initial hi- not affected by sheismo/zheismo | Module distinguishes word-initial hi- from ll/y | Expected behavior; hierba → /ˈʝeɾ.ba/ (not /ˈʃeɾ.ba/) |
For technical issues or suggestions, please visit our GitHub repository.