
人 + AI 协作 · JLPT N2
Anki 是个开源的记忆卡片软件,靠间隔重复算法帮你背东西——答得越熟,下次隔得越久才再问你;一套卡片叫一副「牌组」。
我用的是「新完全マスター N2 語彙」Anki 牌组,2273 个词,原版只有四样东西:词形、假名读音、英文释义、几条参考。没有中文,没有声调,没有声音,没有例句。我没写一行代码——全程指挥一个 AI 编程助手(Claude),它写脚本、拉开源数据、跑分析;我出判断、逐张审卡、拍板。几轮下来,一层层把它填满了。这篇记录一下这个人机协作的过程。
原始牌组链接:https://ankiweb.net/shared/info/778116520
00 · 我负责判断,AI 负责力气
这活儿最有意思的地方,是它根本不该由一个人来做:查开源词典、写解析脚本、跑几千次语音合成、逐个比对——琐碎、量大、又需要一点工程手艺。于是我把这些全交给 AI。
但 AI 也不是全自动。它看不到卡面、也不会自己复习。真正的纠错回路是:我在 Anki 里复习,撞见一张读错的卡(お父様 读成怪音、器用 声调是平的),截图丢给它;它诊断、写修复、验证,再回来。我的眼睛 + 它的手,一张张把 2273 个词啃了下来。
整件事分两轮,中间隔了十来天:第一轮补上声调标记、中文翻译和单词发音;第二轮——也就是这篇主要记的——加了词性、例句和例句语音,还顺手把第一轮那批发音推翻重做了一遍。为什么要推翻,第 05 节会讲。
きよう
「器用」是頭高型:き 高起,随即下降(红色为降核)。这个小小的红标,成了整个音频环节的主角。
规模:2273 词条 · 卡片信息栏从 4 项扩到 10 项 · 新增 1484 条例句 · 新增 4004 段语音(累计合成 17,286 段,推翻重做了四轮)。
01 · 假名有了,声调还没有
原版牌组里假名读音是齐的——器用 读 きよう,这点没问题。但怎么念它没说:哪个音高、哪里下降。日语的声调(アクセント)光看假名是看不出来的,而念错了声调,日本人一样听得出来。
于是我用了 Kanjium 这个开源声调词典的 accents.txt,取出每个词的降核位置,渲染成 OJAD 式的标记:高音画横线,降核标红——就是开头「き」那个样子。
覆盖了 1892/2273 个词。查不到的留空回退纯假名,绝不用规则瞎推——试过按后项匹配,结果把 あくび 拆成了 くび,果断否决。宁可少标,不可标错。
02 · 翻译:以原书为准,但不盲从
原则很简单:以原书英译为准,不拿词典擅自扩充义项;但当原书明显有误时,按通行释义来;义项偏窄时,把常用义补齐。
最需要盯的是中日同形异义词——検討≠检讨、遠慮≠远虑、迷惑≠迷惑。这些词形一样、意思两回事,是机械转写最容易翻车的地方。拿不准的单独列清单交底,不混在里面装作都没问题。
03 · 词性:小心「首义」这个陷阱
词性数据来自 JMdict(开源日英词典,每个词条都带 adj-na/adj-i/vs 这类标注)。术语用「大家的日语」的说法——名词、动词、い形容词、な形容词——不整「サ変」这种教材外的黑话。
踩了一个坑:一个词的多个义项,词性标签是汇总的。現金(钱)有个次要义「势利的」是 adj-na,于是被错判成了な形容词。修法是只看首义的第一个词性标签——現金 的首义是名词,就归名词。改完 器用/謙虚 这些真な形容词也归对了。
04 · 从十四万句里,给每个词挑一句
原版一句例句都没有。例句取自 Tanaka / Tatoeba 语料库——147,836 个日英对照句,还按词做了索引。要做的是:拿 2273 个词逐个去这十几万句里检索,挑出真正用到该词的、最短最好懂的那一句,再配上英译。
难点是同音字会串味。牌组里「勘(かん,直觉)」的卡,差点配上「缶(かん,罐子)」的句子,因为一开始是按读音兜底匹配的。解决办法:必须匹配句子里真正含这个词——用语料 B 行里「词 + 读音」的联合索引,而不是光凭读音。多音字(目下 めした/もっか)也靠这个区分。宁可覆盖率从 76% 降到 65%,也要每一条都真的用到这个词。
挑完还没结束:例句里满是汉字,不标假名照样读不动。1484 条例句,每一条都要逐词分词、生成 ruby 注音(用 fugashi)。这一步也栽过跟头——お母様 被分词器拆成「お + 母(はは) + 様」,标成了 ははさま;这类敬语得单独修。
05 · 4004 段语音,和一场关于声调的侦探故事
原版是哑的——一个音都没有。要补的是两批:2273 个单词的朗读,加上1484 条例句的朗读,合计 4004 段。全靠语音合成批量生成,一段段落到卡上。
这是最曲折、也最能看出 AI 价值的一环。第一版用 edge-tts(微软 Nanami 神经语音):声音自然,但声调不对。我一开始只能一张张听、一张张报,它一张张改,眼看要没完。
转折点是它自己提的:与其让我用耳朵听 2273 条,不如提取音频的基频(F0)曲线,用数字客观判断。以 器用 为例,它该是頭高(き 高后降),可 F0 显示 き 是低起上扬。它接着做了个关键对照,看这张表:
| 输入 | F0 曲线(Hz) | 结果 |
|---|---|---|
| edge-tts 喂汉字「器用」 | 204 · 266 · 291 · 200 | 低起拱形,不是頭高 |
| edge-tts 喂假名「きよう」 | 204 · 266 · 291 · 200 | 字节不同,F0 却一模一样 |
| VOICEVOX + 降核覆盖 | 358 · 372 · 338 · 263 | き 高起后降 ✓ |
前两行字节不同、声调却完全相同——这证明神经语音根本不看声调词典,喂汉字喂假名都没用。这是引擎的硬上限。
结论明确后,换成 VOICEVOX(开源本地日语 TTS,能逐词指定重音位置)。做法是:喂假名保证读音正确(长音 おとうさま→オトオサマ、多音字 めした/しらが 都对),再用第 01 步那份 Kanjium 降核数据去覆盖声调。F0 一验,き 终于高起(表格第三行)。
最后再放慢到 0.85 倍语速,听感更清楚;单词和例句共 4004 段音频,统一音色、正确声调。
代价是:这 4004 段,前后推翻重做了四轮——累计合成 17,286 段,四分之三都扔了。
换个人来做,这种「推倒重来」的成本高到根本不会去做,只能将就着用。但对 AI 来说,重跑一轮不过是再等十几分钟。这才是它真正改变的东西:不是替我打字,而是让「不将就」变得负担得起。
06 · 用到的开源工具
全程 Python 脚本驱动,都是免费开源的东西:
- fugashi + unidic —— 日语分词、取读音
- JMdict —— 词性标注
- Kanjium —— 声调(降核)数据
- Tanaka / Tatoeba —— 例句语料
- edge-tts / VOICEVOX —— 语音合成
- ffmpeg、py7zr —— 音频编码、解压
07 · 几条踩出来的经验
权威数据 > 规则瞎推
能查词典就别用启发式硬猜。あくび 拆成 くび 那种错,一次就够了。
没法人工全检时,找客观信号
2273 条音频听不过来,就用 F0 曲线量化判断。机器的问题,用机器的尺子量。
同音 / 多音是日语数据的头号陷阱
勘/缶、目下 めした/もっか、助词 は 读 wa 不读 ha——每一个都单独咬过我一口。
留后路
原始文件从不覆盖,脚本做成幂等可重跑,每次替换前都备份。改错了随时能退回来。
一副牌组,从「够用」到「顺手」,差的就是这些没人替你做的细活——而现在,有 AI 替你做了。我出的是判断和耐心;力气活、代码和分析,是和 Claude 一起完成的。
数据来源:Kanjium · JMdict · Tanaka/Tatoeba,均为开源项目。