On this page
Why Japanese text to speech misreads kanji
Most kanji have at least two kinds of reading. On'yomi descend from the Chinese pronunciation of the character, and kun'yomi are native Japanese words attached to it. Wikipedia's article on kanji notes that "some common kanji have ten or more possible readings", and gives 生 as an example with eight basic ones (Wikipedia: Kanji). Some words go further: 今日 is read きょう as a whole word, not from its characters, a pattern called jukujikun.
A reader picks the right reading from context without noticing. A text-to-speech engine has to commit to one reading before it produces any sound. When the sentence is short, as on a phone call or in a subtitle line, there is less context to go on, and the engine is more likely to guess wrong.
Japanese writing has a tool for this, which shows how real the problem is even for people. Furigana, the small kana printed beside kanji, exist to show readings a reader could not otherwise know. Forms carry a separate field for the reading of a name, labelled フリガナ, because the kanji alone does not settle it. Hebrew and Arabic text to speech face a similar guessing problem with unwritten vowels, as our guide to Hebrew TTS without niqqud describes.
Where misreadings cluster: names, dates and everyday words
Errors are not spread evenly through a script. They cluster in a few kinds of word, and knowing which ones lets you check a long script quickly instead of listening to every line with equal suspicion.
Names
Names are the hardest case. Wikipedia notes that Japanese given names "often have very irregular readings" that follow no fixed rule. Family names can be read several ways too: 上村 is Uemura or Kamimura, 豊島 is Toyoshima or Toshima, and 東海林 is Shōji or Tōkairin. An AWS blog post on optimising Japanese text for its Polly voices makes the same point, noting that the pronunciation of a name cannot always be predicted from its characters (AWS Japan blog, April 2020).
The problem also runs backwards in speech recognition. On the Retell community forum in June 2026, a developer explained that Japanese speech-to-text wrote a caller's spoken name, Toyoshima, as 豊島, which can also be read Toshima (Retell community). Speech-to-text writes ordinary Japanese, and ordinary Japanese writes names in kanji, so the reading the system heard is lost. Their language model then had to guess it, and staff confirmed there was no katakana output option. In a voice agent that reads the name back, a kanji transcript can turn Mr Toyoshima into Mr Toshima in the next sentence.
Dates and counters
Dates and counters change reading with meaning. 1日 is ついたち (the 1st of the month) or いちにち (one day), and 十分 is じゅっぷん (ten minutes) or じゅうぶん (enough). Both readings are common, so the engine cannot fall back on whichever is more frequent, and a delivery or appointment message that gets one wrong tells the listener something different.
Everyday words with two readings
Then there are ordinary words with two readings and two meanings. 生物 is せいぶつ (living things) or なまもの (perishable food), 人気 is にんき (popularity) or ひとけ (signs of people), and 市場 is いちば (a market place) or しじょう (a market in the economic sense).
Developers meet this in public. On the Convai forum in December 2025, a user reported 自己嫌悪 (self-loathing) read as "jiko-ken-aku" instead of jiko-ken-o, and found that a custom pronunciation saved in the settings changed nothing (Convai forum). The reply was that its custom pronunciation "only supports English".
How to force a reading
There are two ways to tell an engine which reading you mean: markup, where the engine supports it, or the text itself, which works everywhere. Which you use depends on the engine, not on preference.
Engines with reading markup
Some engines accept SSML (Speech Synthesis Markup Language), a set of tags that sit around the text. Amazon Polly takes a phoneme tag with a ruby (furigana) or Yomigana reading, so 浩一 can be marked as ひろかず (Amazon Polly). It also has a word tag that controls how a compound is split: the AWS blog shows 東京都 read as ひがしきょうと (Higashi Kyoto) instead of とうきょうと (Tokyo Metropolis) when the split is changed.
Microsoft's Azure speech service defines its own phonetic set for ja-JP in SSML and in custom lexicons, which are lists of words with fixed pronunciations (Microsoft Learn). If you need per-word control over many words, those tools exist, and they are the cleanest option when your engine has them.
Engines without markup: write the word in kana
Pāṇini, Sonex Labs' text-to-speech model, has no such markup and no customer pronunciation dictionary: the speech API takes plain text plus a voice, speed and output format. It chooses readings from context. The way to force a reading is to write it into the text: replace the ambiguous word with its hiragana, or katakana for names and loanwords, and leave everything else as normal Japanese.
Adding furigana in brackets after the kanji is not a reliable alternative. Plain text has no way to tell the voice that a bracketed reading is a note, so it may read both the kanji and the kana aloud. Replace the word instead, and keep the kanji version only in text that people read.
The pairs below show the method with Mei and Kenji, the two native Japanese voices on the Japanese text to speech page, which also has a Japanese-language version. Each first line is written in kanji as usual; listen for which reading the voice picks. Each second line writes the one ambiguous word in kana, so there is nothing left to guess.
上村さん、こんにちは。明日のご予約の確認でお電話しました。
うえむらさん、こんにちは。明日のご予約の確認でお電話しました。
お荷物は1日に届く予定です。
お荷物はついたちに届く予定です。
すみません、生物はお持ち帰りできないんです。
すみません、なまものはお持ち帰りできないんです。
Why converting whole sentences to kana backfires
If one kana word fixes a reading, it is tempting to remove kanji altogether. Bunpro, a grammar-study site, tried exactly that in May 2024 (Bunpro community). Staff said they had programmatically removed the kanji from their example sentences so the correct kana would be read every time. The bulk run went wrong in a way their small test had not shown: in their words, "the audio can't seem to tell where one word ends and another begins". Users reported misread particles and unnatural phrasing, and staff said they were looking at rolling back to the old audio.
The reason is that kanji carry information beyond the reading. Japanese has no spaces, so the switch between kanji and kana is one of the main signals of where a word starts. Kanji also separate words that sound alike: はし is 箸 (chopsticks), 橋 (bridge) or 端 (edge), and in Tokyo Japanese each has a different pitch pattern. Write はし in kana and you have removed the clue a voice needs to choose the pitch.
So keep kana replacements rare and local. Replace the word, not the phrase, and prefer the form a Japanese writer would accept, such as katakana for a name read back to its owner. If many words in a script need kana, rewrite the sentence with a less ambiguous word instead.
Pitch accent, intonation and subtitles
Correct readings are not the whole job. Tokyo Japanese distinguishes some words only by pitch accent, the pattern of high and low pitch across a word: 端 is flat, 箸 is high on the first syllable and 橋 on the last (Wikipedia: Japanese pitch accent). Ordinary writing never marks it. Commercial narration producers treat it as a separate problem from readings. When Dai Nippon Printing announced an AI narration system in June 2021, it named both misread kanji and the different intonation of 橋, 箸 and 端 as targets. It claimed about 50 to 70 percent fewer misreadings than its earlier synthesis work (Impress Watch).
Markup helps on some engines. Polly's pronunciation-kana alphabet can encode the pitch drop in a word with an apostrophe. Pāṇini has no pitch or intonation control; the settings it exposes are the voice, the speed (0.5 to 2.0) and the output format. What you can control is the text: shorter sentences, a 、 where a native speaker would breathe, and one subtitle cue per sentence so each clip starts and ends cleanly.
For subtitles, intonation across the whole phrase matters as much as any single reading, because a viewer hears each line on its own, timed against the picture. Render each line separately, play it against the cue, and have a native speaker mark any line whose stress sounds wrong. Rewording a line almost always fixes it faster than fighting the engine.
Dialect voices
Mei and Kenji speak standard Japanese, and there is no Kansai-dialect platform voice. Accent comes from the voice's reference speaker, so a voice cloned from a 10-second sample of a consenting Kansai speaker carries that accent, as our guide to accent in cross-language voice cloning explains. Kansai words and sentence endings still need to be written into the text.
Checking readings before you publish or go live
Most reading errors can be caught before a listener hears them, because they come from a predictable set of words. Start by exporting every name, date, time, amount and product term your script or agent will say. Then have a native speaker flag each one that could be read two ways in context, with the intended reading beside it.
Replace only the flagged words with kana, in your own code, before the text reaches the voice. For AI voice agents that read back customer names, store each name with its reading, the same フリガナ field a Japanese form collects, and send the kana to the voice. Never let the agent read a name straight from a kanji transcript; ask the caller to confirm it, or match it to a record that holds the reading.
Finally, render every flagged sentence and have the native speaker listen, on a phone line for calls or against the cue for subtitles. Repeat the check after any change to the script or the voice, since a new model version can resolve the same word differently. Our guide to testing a multilingual voice agent covers the wider process.
Sources
- Convai forum: Japanese kanji mispronounced even after adding custom pronunciation (December 2025)Secondary
- Retell community: Japanese STT outputs kanji for spoken names (June 2026)Secondary
- Bunpro community: What happened to audio? (May 2024)Secondary
- Wikipedia: Kanji (readings, jukujikun, names, furigana)Secondary
- Wikipedia: Japanese pitch accentSecondary
- Amazon Polly: Japanese phonemes, Pronunciation Kana and YomiganaOfficial
- AWS Japan blog: optimising Japanese text for Amazon Polly (8 April 2020)Official
- Microsoft Learn: Pronunciation with SSML (phonemes and custom lexicon)Official
- Impress Watch: DNP AI speech synthesis cuts misreadings by about 50 to 70 percent (15 June 2021)Secondary
Change log: 24 Oct 2026, Rewritten as one continuous guide: added Polly's word-boundary example and the AWS note on names, DNP's 2021 narration system, and the meanings of 人気 and 市場; steps, checklist, FAQs, the example list and the decision chart folded into the body



