
假名与罗马音从哪来Fudoki 的 Kuroshiro 读音转换原理【免费下载链接】fudokiAn interactive Japanese text analysis and speech synthesis web app项目地址: https://gitcode.com/gh_mirrors/fu/fudoki打开 Fudoki你只需输入一句日语下一秒就能看到每个单词头顶自动标出假名、脚下排出一行罗马音点击还能听到发音。这种输入即注音的体验背后是 Kuroshiro 读音转换引擎和 Kuromoji.js 分词器在浏览器里协同工作的结果。Fudoki 是一款基于浏览器的日语文本分析与语音朗读工具本文就用通俗的方式讲清楚假名和罗马音到底从哪来。什么是 Kuroshiro一句话认识的读音转换引擎Kuroshiro 是一个纯前端的日语读音转换库它的职责非常单一把一段日语文本汉字、假名混排转换成平假名、片假名或罗马音。它本身不做分词而是依赖一个分析器Analyzer来告诉它这句话该拆成哪些词、每个词怎么读。在 Fudoki 中这个分析器就是 KuromojiAnalyzer而它背后又是形态素解析库 Kuromoji.js。你可以把这三者的关系想象成流水线Kuromoji.js 负责拆词Kuroshiro 负责注音Fudoki 负责把结果画到屏幕上。整套流程全部在本地浏览器完成不需要任何服务器接口。第一步Kuromoji.js 分词读音转换的地基读音转换前必须先知道谁是谁。比如「日本語」三个字只有拆出「日本」「語」这样的词才能查到它们各自的读音。Fudoki 在 segmenter.js 中封装了 JapaneseSegmenter 模块初始化时会通过kuromoji.builder({ dicPath: /static/libs/dict/ })加载本地词典并构建分词器然后执行tokenizer.tokenize(text)完成形态素解析。分词器返回的每个 token 都带有surface_form原形、basic_form词典形、reading读音和pos词性等字段。注意Kuromoji 本身给出的reading通常是片假名这正是后面要交给 Kuroshiro 继续加工的原因。第二步Kuroshiro 的 convert() 如何把汉字变成假名拆完词之后就该 Kuroshiro 登场了。在 segmenter.js 的getReading()方法里核心代码只有一行await this.kuroshiro.convert(text, { to: hiragana });Kuroshiro 会以 Kuromoji 的分词结果为原料把每个词的读音统一转换成你想要的文字系统to: hiragana输出平假名换成katakana就输出片假名。比如「日本語」会先被 Kuromoji 读出「ニホンゴ」再被 Kuroshiro 转成「にほんご」。这一层保证了无论原文是汉字还是片假名Fudoki 都能给出整齐划一的假名标注。第三步罗马音从哪来——Fudoki 自带的转换规则很多人以为罗马音也是 Kuroshiro 生成的其实 Fudoki 的罗马音由前端自己算出来逻辑集中在 main-js.js 的getRomaji()函数中。它以平假名为输入逐音节查表转换并额外处理了四类日语发音难点促音っ标记双写下一个音节的辅音如「きって」→「kitte」拗音ゃゅょ把「きゃ」合并成「kya」、「しゅ」合并成「shu」这类组合音ん 的同化按后面音节自动选择 m / n / n如「しんぶん」→「shimbun」长音ー给前一个元音加上长音符如「コーヒー」→「kōhī」。如果你对照拼音输入法去理解这四条规则会发现它们就是把五十音图的发音规律翻译成拉丁字母Kuroshiro 负责假名、Fudoki 负责转写各司其职。特殊读法数字、年份、英文缩写怎么处理日语里最折磨人的不是汉字而是数字和外来缩写。Fudoki 在 segmenter.js 里为这些场景准备了专门逻辑四位年份yearReading()按「せん・ひゃく・じゅう」的读法逐位拼接普通数字numberReading()支持到万位还会配合后面是否跟「月」自动切换「しがつ」这类特殊读法英文缩写englishAbbreviationReading()把「AI」逐字母转成「エーアイ」而「web」这类已日语化的词则直接读「ウェブ」。这些规则在分词完成后、展示注音前被逐项套用覆盖了 Kuromoji 词典查不到的场景。假名、罗马音与朗读如何串联读音转换只是 Fudoki 的中间环节最终它会和另外两大模块打通词典查询点击单词卡片通过 dictionary-service.js 按分片加载 JMdict 词条显示中文释义语音朗读用 Web Speech API 的speechSynthesis朗读文本tts.js 负责过滤日语声线ja 开头并按偏好排序绑定到朗读对象上。也就是说屏幕上的一行注音会同时驱动释义和发音而这一切都发生在浏览器本地离线也能用。小结一条从汉字到声音的完整链路回顾整个过程Fudoki 的读音转换可以总结为四步流水线Kuromoji.js 分词拆出词形、词性与片假名读音Kuroshiro 转换把读音统一成平假名或片假名getRomaji() 转写按促音、拗音、ん 同化等规则生成罗马音特殊读法补丁处理数字、年份、英文缩写等边缘情况。假名和罗马音看似简单背后其实是分词、转换、转写三层引擎的默契配合。如果你正在做一个日语学习类工具或者想给自己的项目加上注音能力不妨直接参考 Fudoki 这套纯前端读音转换方案——不需要后端打开网页就能跑。【免费下载链接】fudokiAn interactive Japanese text analysis and speech synthesis web app项目地址: https://gitcode.com/gh_mirrors/fu/fudoki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考