• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:星幻丶碎梦/半自动日语歌词注音编写方法

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索

如果日语歌词上有标注假名的话,日语初学者就可以很容易地学唱歌曲。然而,手动编写日语歌词注音却很麻烦。所以,我研发了一种能够使得编写注音这件事变得方便的方法。使用{{Photrans}}模板。

更新

利用furigana这个Python库,将其稍作改造,就可以生成注音歌词。

1.安装日语词汇分析器MeCab,参考这篇文章

2.打开cmd,输入"pip install furigana"安装这个库,并输入"pip install jaconv"安装其依赖。

3.打开furigana的文件夹,其中的"furigana.py"这个文件,对其稍作改造。首先是新增一个return_wiki函数:

def return_wiki(text):
    output = ''
    for pair in split_furigana(text):
        if len(pair)==2:
            kanji,hira = pair
            output += "{{"+ "Photrans|{0}|{1}".format(kanji, hira)+"}}" 
        else:
            output +=  pair[0]
    return output + '\n'

4.由于MeCab使用的字典终究不可能完整包括所有词汇,所以遇到不认识的词就会出错。我们需要修改一下split_furigana函数,让它不要处理不认识的词。注意,这也意味着你要在完成之后手动给这个词注音。

def split_furigana(text):
    """ MeCab has a problem if used inside a generator ( use yield instead of return  )
    The error message is:
    ```
    SystemError: <built-in function delete_Tagger> returned a result with an error set
    ```
    It seems like MeCab has bug in releasing resource
    """
    mecab = MeCab.Tagger("-Ochasen")
    mecab.parse('') # 空でパースする必要がある
    node = mecab.parseToNode(text)
    ret = []

    while node is not None:
        origin = node.surface # もとの単語を代入
        if not origin:
            node = node.next
            continue

        # originが空のとき、漢字以外の時はふりがなを振る必要がないのでそのまま出力する
        if origin != "" and any(is_kanji(_) for _ in origin):
            if len(node.feature.split(',')) <= 7:
                ret += [(origin,)]
            else:
                kana = node.feature.split(",")[7] # 読み仮名を代入
                hiragana = jaconv.kata2hira(kana)
                for pair in split_okurigana(origin, hiragana):
                    ret += [pair]
        else:
            if origin:
                ret += [(origin,)]
        node = node.next
    return ret

5.最后,在你自己的文件夹里写一个主程序:

from furigana.furigana import return_wiki, print_html

original = open('原文.txt', 'r', encoding='utf-8')
photransed = open('注音后.txt', 'w', encoding='utf-8')

for line in original.readlines():
    wikitext = return_wiki(line)
    photransed.write(wikitext)

photransed.close()
original.close()

6.在同一个文件夹里创建“原文.txt”,把歌词放进去,运行程序即可。

旧方法

1.把歌词原文复制下来,保存为“原文.txt”,放进一个文件夹。

2.利用标注日文假名工具,得到同时带有汉字和假名的歌词,保存为“转换前.txt”,放进同一个文件夹。

3.下载我写的Python程序(Photrans.exe),放在这个文件夹里运行,得到“转换后.txt”。

4.把转换后的文字放进条目中,最后加上{{Photrans/button}},完成。

说明

  • {{ruby}}模板内的文字不作修改。
  • 由于多音字等原因,“标注日文假名工具”标注不一定正确,另外特殊符号会导致错误,需要提前删除
  • 程序本身亦不完美,可能需要手动修改。

其他