日语词条有点特殊,有平假名、片假名、汉字以及各种混合的形式,mdict对这方面也没有兼容性。从字典角度来说,物书堂的产品就是标杆,但这个目标就有点远了。目前比较容易下手的就是发音库了。我期望的发音库有以下目标:
1,固有的平/片/汉字混合词条能正常发音,主要为平假名+汉字,少量片假名+汉字,可能存在部分平假名+片假名
2,全平假名词条,以及对应的全汉字词条
3,全片假名词条
4,其他组合,目前看到有数字+汉字的,还有数字+平假名的,以及字母+假名,字母+汉字等等
5,纯数字、字母。
目前网络上我能找到的日语发音库(欧陆独立发音库)只有一个,大概有6w多词条,大小200M多。这个库应该也是从NHK的库里提取加工的,但由于日语的特性,大部分都是汉字或者假名加汉字的词条,可以说缺失很多。因此萌生了制作改进版的想法。
制作源就是这个日语发音库;另一个源就是NHK发音词典,我这次使用的是2018版,图片等修正的版本,mdd大概是800M多。
感谢原作者们!
说下制作方法和过程。
1,2个源库解包,包括2018版的mdx文件,后续会修改发音文件的路径和文件名,所以必须要修改mdx。后面主要针对2018版的mdd操作。
2,用python脚本扫描2018版的mdx,查找词条以及链接词条对应的发音文件,形成词条清单和发音文件清单。用这两份清单生成一个powershell脚本,以达根据既有词条扩充词库的目的;另一方面,生成对应的txt,链接正确的发音文件。
3,执行powershell脚本跑出所有词条的spx,以及将使用到的原spx复制一份至bak目录,方便后续处理。
4,将输出的txt打包成mdx。
5,使用另一个python脚本将所有含片假名的词条,再生成一份对应平假名的词条。
6,处理一下新的data目录,此时里面应该有原2018mdd解出的所有内容,加上脚本跑出来根目录下20w+的新词条spx,以及一个bak目录。现根据bak目录把spx目录中一样的文件全部删除,这些文件已经没用了,然后把bak目录移出data自己留存或者直接删除也可以;再者,把data根目录下的新词条spx进行处理,将文件名包含半角符号的以及以半角字符开头并包含全角字符的文件保留,其他词条移入原语音库(200M的那个)的解包目录里,有重名的可以选择覆盖旧的或者直接删除新的,总之有份能用的就行。
7,打包两个data目录,形成mdd,2018的mdd可以依旧作为资源文件使用;新的发音库mdd可以作为独立发音库使用,欧路里文件名加上.1即可识别;新mdx需要同时配套这两个mdd文件一起使用。
附python脚本,说明:
mdictrelinkvoice是从readmdict复制修改的,请和原readmdict放在一起使用;另一个脚本可以单独使用,用来把片假名文件转成平假名。
py.zip (7.6 KB)
已知遗留问题:
1,平假名转片假名,长音转换不完美,后续待修正;缺少汉字转假名
2,我的目标中,第1点的所有内容目前都来自原词条,但原词条可能不完善;原词条未完全提取处理
3,在目标第1点满足的情况下,第2、3点是可以满足的
4,目标第4点待补充,需要再深入研究欧路字典的"坑"
5,目标第5这个待定,感觉和英语发音库有冲突哈