自动歌词注音处理脚本

First Post:

Last Update:

Word Count:
5.2k

Read Time:
27 min

为了完成自动化标注注音,也就是把括号注音的歌词转换为html注音格式,写了个脚本

具体用到的小技术点回头再写,暂且先把代码留下:

将形如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
営(いとな)みの 街(まち)が暮(く)れたら色(いろ)めき夕阳之时 平常的街道开始活跃起来
風(かぜ)たちは運(はこ)ぶわ カラスと人々(びと)の群(む)れ晚风吹动着密集的乌鸦和纷扰的人群
意味(いみ)なんか ないさ暮(く)らしがあるだけ没有什么特殊的意义 只是普普通通的生活
ただ腹(はら)を空(す)かせて 君(きみ)の元(もと)へ帰(かえ)るんだ只是饿着肚子的时候才会回到你的身边

物心(ものこころ)ついたらふと 見上(みあ)げて思(おも)うことが忽然理解了 这才是生活的美妙
この世(よ)にいる誰(だれ)も 二人(ふたり)から这世界上的每一人 都是从两个人开始

胸(むね)の中(なか)にあるもの いつか見(み)えなくなるもの内心的某种情感 终究会消逝的情感
それは側(そば)にいること いつも思(おも)い出(だ)して这种情感就在身边 无论何时都会想起
君(きみ)の中(なか)にあるもの 距離(きょり)の中(なか)にある鼓動(こどう)你心中的那种情感 距离感中产生的那种悸动
恋(こい)をしたの貴方(あなた)の 指(ゆび)の混(ま)ざり 頬(ほお)の香(かお)り坠入爱河的你 十指相扣 脸庞芳香
夫婦(ふうふ)を超(こ)えてゆけ超越了夫妇之情

みにくいと 秘(ひ)めた想(おも)いは色(いろ)づき丑陋的 秘密的心事开始成熟
白鳥(はくちょう)は運(はこ)ぶわ 当(あ)たり前(まえ)を変(か)えながら天鹅带来的 变化着的理所当然

恋(こい)せずにいられないな 似(に)た顔(かお)も虚構(きょこう)にも忍不住要去恋爱 无论相似的还是幻想的
愛(あい)が生(う)まれるのは 一人(ひとり)から人们会产生爱意 正因为都是孑然一身

胸(むね)の中(なか)にあるもの いつか見(み)えなくなるもの内心的某种情感 终究会消逝的情感
それは側(そば)にいること いつも思(おも)い出(だ)して这种情感就在身边 无论何时都会想起
君(きみ)の中(なか)にあるもの 距離(きょり)の中(なか)にある鼓動(こどう)你心中的那种情感 距离感中产生的那种悸动
恋(こい)をしたの貴方(あなた)の 指(ゆび)の混(ま)ざり 頬(ほお)の香(かお)り坠入爱河的你 十指相扣 脸庞芳香
夫婦(ふうふ)を超(こ)えてゆけ超越了夫妇之情

泣(な)き顔(がお)も 黙(だま)る夜(よる)も 揺(ゆ)れる笑顔(えがお)も即便是哭泣的脸庞 还是沉默的夜晚 还是摆动的笑脸
いつまでも いつまでも无论何时也……无论何时也……

胸(むね)の中(なか)にあるもの いつか見(み)えなくなるもの内心的某种情感 终究会消逝的情感
それは側(そば)にいること いつも思(おも)い出(だ)して这种情感就在身边 无论何时都会想起
君(きみ)の中(なか)にあるもの 距離(きょり)の中(なか)にある鼓動(こどう)你心中的那种情感 距离感中产生的那种悸动
恋(こい)をしたの貴方(あなた)の 指(ゆび)の混(ま)ざり 頬(ほお)の香(かお)り坠入爱河的你 十指相扣 脸庞芳香
夫婦(ふうふ)を超(こ)えてゆけ超越了夫妇之情
二人(ふたり)を超(こ)えてゆけ超越了两人之情
一人(ひとり)を超(こ)えてゆけ超越了一人之情

的歌词转换为html格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<head><style>
.n {color:fuchsia;}
.t {color: aqua;}
</style></head>
<div><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">いとな</rt>みの <ruby><rb></rb><rt style="font-size:0.75em">まち</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>れたら<ruby><rb></rb><rt style="font-size:0.75em">いろ</rt>めき
</p><p class="n">夕阳之时 平常的街道开始活跃起来
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">かぜ</rt>たちは<ruby><rb></rb><rt style="font-size:0.75em">はこ</rt>ぶわ カラスと人々(びと</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>
</p><p class="n">晚风吹动着密集的乌鸦和纷扰的人群
</p><p class="t"><ruby><rb>意味</rb><rt style="font-size:0.75em">いみ</rt>なんか ないさ<ruby><rb></rb><rt style="font-size:0.75em"></rt>らしがあるだけ
</p><p class="n">没有什么特殊的意义 只是普普通通的生活
</p><p class="t">ただ<ruby><rb></rb><rt style="font-size:0.75em">はら</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>かせて <ruby><rb></rb><rt style="font-size:0.75em">きみ</rt><ruby><rb></rb><rt style="font-size:0.75em">もと</rt><ruby><rb></rb><rt style="font-size:0.75em">かえ</rt>るんだ
</p><p class="n">只是饿着肚子的时候才会回到你的身边
</p><hr>
<p class="t"><ruby><rb>物心</rb><rt style="font-size:0.75em">ものこころ</rt>ついたらふと <ruby><rb>見上</rb><rt style="font-size:0.75em">みあ</rt>げて<ruby><rb></rb><rt style="font-size:0.75em">おも</rt>うことが
</p><p class="n">忽然理解了 这才是生活的美妙
</p><p class="t">この<ruby><rb></rb><rt style="font-size:0.75em"></rt>にいる<ruby><rb></rb><rt style="font-size:0.75em">だれ</rt><ruby><rb>二人</rb><rt style="font-size:0.75em">ふたり</rt>から
</p><p class="n">这世界上的每一人 都是从两个人开始
</p><hr>
<p class="t"><ruby><rb></rb><rt style="font-size:0.75em">むね</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの いつか<ruby><rb></rb><rt style="font-size:0.75em"></rt>えなくなるもの
</p><p class="n">内心的某种情感 终究会消逝的情感
</p><p class="t">それは<ruby><rb></rb><rt style="font-size:0.75em">そば</rt>にいること いつも<ruby><rb></rb><rt style="font-size:0.75em">おも</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>して
</p><p class="n">这种情感就在身边 无论何时都会想起
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">きみ</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの <ruby><rb>距離</rb><rt style="font-size:0.75em">きょり</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にある<ruby><rb>鼓動</rb><rt style="font-size:0.75em">こどう</rt>
</p><p class="n">你心中的那种情感 距离感中产生的那种悸动
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">こい</rt>をしたの<ruby><rb>貴方</rb><rt style="font-size:0.75em">あなた</rt><ruby><rb></rb><rt style="font-size:0.75em">ゆび</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>ざり <ruby><rb></rb><rt style="font-size:0.75em">ほお</rt><ruby><rb></rb><rt style="font-size:0.75em">かお</rt>
</p><p class="n">坠入爱河的你 十指相扣 脸庞芳香
</p><p class="t"><ruby><rb>夫婦</rb><rt style="font-size:0.75em">ふうふ</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えてゆけ
</p><p class="n">超越了夫妇之情
</p><hr>
<p class="t">みにくいと <ruby><rb></rb><rt style="font-size:0.75em"></rt>めた<ruby><rb></rb><rt style="font-size:0.75em">おも</rt>いは<ruby><rb></rb><rt style="font-size:0.75em">いろ</rt>づき
</p><p class="n">丑陋的 秘密的心事开始成熟
</p><p class="t"><ruby><rb>白鳥</rb><rt style="font-size:0.75em">はくちょう</rt><ruby><rb></rb><rt style="font-size:0.75em">はこ</rt>ぶわ <ruby><rb></rb><rt style="font-size:0.75em"></rt>たり<ruby><rb></rb><rt style="font-size:0.75em">まえ</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えながら
</p><p class="n">天鹅带来的 变化着的理所当然
</p><hr>
<p class="t"><ruby><rb></rb><rt style="font-size:0.75em">こい</rt>せずにいられないな <ruby><rb></rb><rt style="font-size:0.75em"></rt><ruby><rb></rb><rt style="font-size:0.75em">かお</rt><ruby><rb>虚構</rb><rt style="font-size:0.75em">きょこう</rt>にも
</p><p class="n">忍不住要去恋爱 无论相似的还是幻想的
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">あい</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>まれるのは <ruby><rb>一人</rb><rt style="font-size:0.75em">ひとり</rt>から
</p><p class="n">人们会产生爱意 正因为都是孑然一身
</p><hr>
<p class="t"><ruby><rb></rb><rt style="font-size:0.75em">むね</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの いつか<ruby><rb></rb><rt style="font-size:0.75em"></rt>えなくなるもの
</p><p class="n">内心的某种情感 终究会消逝的情感
</p><p class="t">それは<ruby><rb></rb><rt style="font-size:0.75em">そば</rt>にいること いつも<ruby><rb></rb><rt style="font-size:0.75em">おも</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>して
</p><p class="n">这种情感就在身边 无论何时都会想起
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">きみ</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの <ruby><rb>距離</rb><rt style="font-size:0.75em">きょり</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にある<ruby><rb>鼓動</rb><rt style="font-size:0.75em">こどう</rt>
</p><p class="n">你心中的那种情感 距离感中产生的那种悸动
</p><p class="t"><ruby><rb></rb><rt style="font-size:0.75em">こい</rt>をしたの<ruby><rb>貴方</rb><rt style="font-size:0.75em">あなた</rt><ruby><rb></rb><rt style="font-size:0.75em">ゆび</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>ざり <ruby><rb></rb><rt style="font-size:0.75em">ほお</rt><ruby><rb></rb><rt style="font-size:0.75em">かお</rt>
</p><p class="n">坠入爱河的你 十指相扣 脸庞芳香
</p><p class="t"><ruby><rb>夫婦</rb><rt style="font-size:0.75em">ふうふ</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えてゆけ
</p><p class="n">超越了夫妇之情
</p><hr>
<p class="t"><ruby><rb></rb><rt style="font-size:0.75em"></rt><ruby><rb></rb><rt style="font-size:0.75em">がお</rt><ruby><rb></rb><rt style="font-size:0.75em">だま</rt><ruby><rb></rb><rt style="font-size:0.75em">よる</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>れる<ruby><rb>笑顔</rb><rt style="font-size:0.75em">えがお</rt>
</p><p class="n">即便是哭泣的脸庞 还是沉默的夜晚 还是摆动的笑脸
</p><p class="t">いつまでも いつまでも无论何时也……无论何时也……
</p><hr>
<p class="n"><ruby><rb></rb><rt style="font-size:0.75em">むね</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの いつか<ruby><rb></rb><rt style="font-size:0.75em"></rt>えなくなるもの
</p><p class="t">内心的某种情感 终究会消逝的情感
</p><p class="n">それは<ruby><rb></rb><rt style="font-size:0.75em">そば</rt>にいること いつも<ruby><rb></rb><rt style="font-size:0.75em">おも</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>して
</p><p class="t">这种情感就在身边 无论何时都会想起
</p><p class="n"><ruby><rb></rb><rt style="font-size:0.75em">きみ</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にあるもの <ruby><rb>距離</rb><rt style="font-size:0.75em">きょり</rt><ruby><rb></rb><rt style="font-size:0.75em">なか</rt>にある<ruby><rb>鼓動</rb><rt style="font-size:0.75em">こどう</rt>
</p><p class="t">你心中的那种情感 距离感中产生的那种悸动
</p><p class="n"><ruby><rb></rb><rt style="font-size:0.75em">こい</rt>をしたの<ruby><rb>貴方</rb><rt style="font-size:0.75em">あなた</rt><ruby><rb></rb><rt style="font-size:0.75em">ゆび</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>ざり <ruby><rb></rb><rt style="font-size:0.75em">ほお</rt><ruby><rb></rb><rt style="font-size:0.75em">かお</rt>
</p><p class="t">坠入爱河的你 十指相扣 脸庞芳香
</p><p class="n"><ruby><rb>夫婦</rb><rt style="font-size:0.75em">ふうふ</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えてゆけ
</p><p class="t">超越了夫妇之情
</p><p class="n"><ruby><rb>二人</rb><rt style="font-size:0.75em">ふたり</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えてゆけ
</p><p class="t">超越了两人之情
</p><p class="n"><ruby><rb>一人</rb><rt style="font-size:0.75em">ひとり</rt><ruby><rb></rb><rt style="font-size:0.75em"></rt>えてゆけ
</p><p class="t">超越了一人之情</p></div>

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import re
from tkinter import filedialog, Tk

from tqdm import tqdm

"""
歌词格式:
词间不空行,段落间空行
紧随汉字后的半角小括号标注假名
"""


def 半角括号转换():
global 文本
for i, 行 in tqdm(enumerate(文本), desc="半角括号转换", total=len(文本)):
行 = re.sub(r'(', r'(', 行)
行 = re.sub(r')', r')', 行)
文本[i] = 行


def 汉字加中括号():
global 文本
for i, 行 in tqdm(enumerate(文本), desc="初始化中括号", total=len(文本)):
行 = re.sub(r'([\u4e00-\u9fff々]+)\(', r'[\1](', 行)
文本[i] = 行


def 译文换行():
global 文本
新文本 = []
for i, 行 in tqdm(enumerate(文本), desc="疑问换行", total=len(文本)):
分割对象 = re.search(r'[\u4e00-\u9fff “”]+\n?$', 行)
if 分割对象 is not None:
if 分割对象.span()[0] == 0:
新文本.append(行)
else:
新文本.append(行[:分割对象.span()[0]] + '\n')
新文本.append(行[分割对象.span()[0]:])
else:
新文本.append(行)
# print(新文本)
文本 = 新文本


def 选取文件(tit: str = "请选择歌词"):
root = Tk()
# 隐藏根窗口
root.withdraw()
file_path = filedialog.askopenfilename(title=tit,
filetypes=[("TXT files", "*.txt")])
print("已取得文件路径")
return file_path


def div块添加():
global 文本
文本.insert(0, '<div>')
文本.append('</div>')
print("div块已添加")


def 头样式表添加():
global 文本
文本.insert(0, '<head><style>\n.n {color:fuchsia;}\n.t {color: aqua;}\n</style></head>\n')
print("头样式表已添加")


def p段落整理():
global 文本
是译文歌词: bool = False
for i, 行 in tqdm(enumerate(文本), desc="p段落整理", total=len(文本)):
if 行 != '\n':
if 是译文歌词:
文本[i] = '<p class="n">' + 行 + '</p>'
是译文歌词 = False
else:
文本[i] = '<p class="t">' + 行 + '</p>'
是译文歌词 = True


def 空行修正():
global 文本
for i, 行 in tqdm(enumerate(文本), desc="空行修正", total=len(文本)):
if 行 == '\n':
文本[i] = '<hr>' + 行


def 注音修正():
global 文本
for i, 行 in tqdm(enumerate(文本), desc="注音修正", total=len(文本)):
行 = re.sub(r'\[', r'<ruby><rb>', 行)
行 = re.sub(r']\(', r'</rb><rt style="font-size:0.75em">', 行)
行 = re.sub(r'\)', r'</rt>', 行)
文本[i] = 行


if __name__ == '__main__':
路径 = 选取文件()
with open(路径, encoding='utf-8') as 文件:
文本 = 文件.readlines()

半角括号转换()
译文换行()
汉字加中括号()

# print(文本)

注音修正()
p段落整理()
空行修正()

# print(文本)

div块添加()
头样式表添加()

# print(文本)

print("处理完毕")

路径 = re.sub(r'\.txt', r'_f.html', 路径)
with open(路径, encoding='utf-8', mode='w') as 文件:
文件.writelines(文本)
print("已写入")