置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

使用者:Stevenlele/注音歌詞獲取轉換指南

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

簡介

這裡簡單記錄一下如何快速方便地獲取帶注音的日文歌詞並轉換成萌百的格式。因為萌百的 Ruby 注音用起來很方便。

這個方法脫胎於我所在的某字幕組研究批量自動化注音的時候,集思廣益搞出來的一套方法,所以本指南第二部分理論上是適用於所有日文文本注音的。

關於字幕批量注音,還沒有完整地實戰過,教程也還沒寫,有感興趣的大佬可以私下裡聯繫討論。咕咕咕(x

獲取帶注音的日文歌詞並轉換

這個是理想情況,可以直接獲取到帶注音的歌詞,比較省力。

1、去 UtaTen 搜索歌詞。如果沒有的話就用第二部分介紹的普通方法吧。

2~6、F12 打開 DevTools,切換到 Console,輸入以下代碼回車。然後複製結果。

$(".hiragana").html().replace(/<span class="ruby"><span class="rb">(.+?)<\/span><span class="rt">(.+?)<\/span><\/span>/g, "{{Photrans|$1|$2}}").replace(/<br>/g, "").trim().replace(/ /g, " ")
舊版

2、使用 Lyric Get舊版)從 UtaTen 獲取帶注音的歌詞。這個工具是在 cv342040 找到的,這篇文章也挺有意思,感興趣的可以看看。

接下來的步驟需要用到支持正則表達式且可以識別 Unicode (\uXXXX) 的文本編輯器。推薦使用 Visual Studio Code。

3、替換半角空格和半角標點:半角 ( ) → 全形 ( ),如果有英文部分,注意不要把英文空格和標點替換了。(這步是可選的,只是為了美觀;另外也可以留到最後做,不過現在字符量少,可以先做了)

4、保護原歌詞中非假名標註的半角括號,方法是替換成別的特殊字符,之後再替換回來;或者刪除掉之後手動加回來。

5、正則表達式替換:([\u4E00-\u9FA5]+)\((\S*?)\){{Photrans|$1|$2}}。解釋:匹配「至少一個漢字字符 + ( + 非空格字符[非貪婪] + )」,然後轉換成萌百的 Photrans 模板格式。一般來說準確度還是很高的。由於在 {{lj}} 模板中或者 {{LyricsKai}} 模板中所以不需要聲明語言,如果需要可以自己改成 {{Photrans|$1|$2|ja}} 這種。(注釋:我有試過把前面的漢字匹配改成非貪婪模式,不過貌似還是貪婪匹配了,不知道是什麼情況)

6、整理查錯。還原之前保護替換的括號,然後對照 BK 或者其他網站的歌詞(比如 Lyrical Nonsense 之類)查錯,以及聽一遍看看振假名有沒有標錯,UtaTen 出錯還是比較常見的。直接用預覽模式看比較方便。

7、加注音按鈕,參考 {{Photrans}}。

完成。

給日文歌詞加上注音並轉換

如果 UtaTen 沒有的話,那就只能用普通的歌詞來添加注音了。也適用於一般的日語文本。

1、找到歌詞,獲得文本。可以用上面提到的 Lyric Get,如果是 Lyrical Nonsense 這種沒支持的話也可以用 Chrome 的檢查功能提取出來。或者對著 BK 手打。

2、替換半角符號,保護半角括號。同上。

3、使用 雅虎的假名標註 API 接口 添加假名標註。這裡 有一個現成的工具。選擇添加振假名(ふりがなに)就可以了。

4、這個方法添加的振假名會包含原文本裡面的一些假名,所以替換方法也不太一樣。正則表達式替換:([\u4E00-\u9FA5]+[\u2E80-\u33FF]*?)\(($1,。解釋:從左半角括號向前匹配「至少一個漢字 + 零個或多個假名」(用不用貪婪模式其實差不多),然後把匹配到的東西一起括進括號裡面,用逗號分隔。

5、正則表達式替換:([\u2E80-\u33FF]+),(\S+)\1\),$2)$1。解釋:匹配漢字部分和假名部分末尾相同的假名部分,移出括號。

6、檢查結果,並整理查錯。這個模式會出錯的地方比較多,比如如果標註假名的部分中間包含假名,例如「漢字 + 假名 + 漢字」,會出現漢字部分沒有括全的現象,需要手動糾正並分拆成兩個或多個括號。另外,自動標註的假名也有機率出錯,需要檢查。

7、把格式替換成萌百的 Photrans 模板格式。你可以不用正則表達式單獨替換(( → {{Photrans| , → | ) → }}),或者正則表達式:\((\S+?),(\S+?)\){{Photrans|$1|$2}}

8、加注音按鈕,參考 {{Photrans}}。

完成。

說明和已知問題

(其實沒什麼好說明的,只是最後不放點什麼感覺不太對)

如果大家有發現什麼錯誤,或者有更好的工具或者方法,歡迎指正~

已知問題:

日々ひび」的「々」無法作為漢字匹配。可以手動修正,或者直接懟進那個匹配漢字的範圍裡面。