Ayanaminn / N46Whisper

Whisper based Japanese subtitle generator
MIT License
1.54k stars 127 forks source link

Support for batch translation #50

Open 41889732 opened 1 year ago

41889732 commented 1 year ago

功能:为翻译功能附加了可选的批处理选项,将多句文本合并为一个请求发送。 动机:免费的openai_key速率太低,批处理能够显著增加翻译速度,以1600个字符数为例,速度约能达到不进行批处理的20倍以上。 limitations:由于gpt回复的不确定性,有可能在每一次回复中使用具有差异的格式,导致分割返回结果可能出现问题。 效果如下:

100%|██████████| 24/24 [00:00<00:00, 48210.39it/s] (1) 像那样,成为神话的男孩 (2) 即使青色的风现在敲打着我的心扉 (3) 只是看着我微笑的你 (4) 为了寻求轻轻触摸的对象而沉迷 (5) 连命运也还不知道的痛苦的眼睛 (6) 但有一天你会意识到,你的背后 (7) 有羽翼飞向遥远未来的存在 (8) 残酷天使的论文,从窗边飞跃 (9) 如果你要用热烈激情裹挟回忆 (10) 抱紧这片空气,让自己闪耀成神话的男孩 (11) 我的爱的摇篮一直沉睡着 (12) 只有你被梦境之使召唤的晨曦 (13) 月光映照着我柔弱的颈项 (14) 就算想要将世界所有的时间都固定住 (15) 如果能够见到你,就算只是假设 (16) 我就是那么一本寻觅自由的圣经 (17) 残酷天使的论文,把悲伤带着,就此开始 (18) 紧紧拥抱的生命的形态,当我从梦中清醒 (19) 比任何人都能闪耀的神话的男孩 (20) 在创造历史的同时,人们编织着爱情 (21) 就这样,即便无法成为女神,我依然活着 (22) 残酷天使的论文,从窗边飞跃 (23) 如果你要用热烈激情裹挟回忆 (24) 抱紧这片空气,让自己闪耀成神话的男孩 100%|██████████| 24/24 [00:00<00:00, 170905.43it/s] 双语字幕生成完毕 All done!

zimq commented 11 months ago

这个在codelab上运行到99%会报错 99%|█████████▉| 563/569 [00:00<00:00, 509579.88it/s]

IndexError Traceback (most recent call last) in <cell line: 256>() 256 if batch_translate == 'yes' : 257 t.translate_model.send_prompt() --> 258 translation = t.translate_by_paragraph() 259 else : 260 translation = t.translate_by_line()

in translate_by_paragraph(self) 228 #line.text += (r'\N' + total_trans_s[iter].split(':')[1]) 229 #print(iter) --> 230 line.text += ('\n' + total_trans_s[iter].split(')')[1]) 231 iter += 1 232

IndexError: list index out of range

41889732 commented 11 months ago

这个在codelab上运行到99%会报错

99%|█████████▉| 563/569 [00:00<00:00, 509579.88it/s] IndexError Traceback (most recent call last) in <cell line: 256>() 256 if batch_translate == 'yes' : 257 t.translate_model.send_prompt() --> 258 translation = t.translate_by_paragraph() 259 else : 260 translation = t.translate_by_line()

in translate_by_paragraph(self) 228 #line.text += (r'\N' + total_trans_s[iter].split(':')[1]) 229 #print(iter) --> 230 line.text += ('\n' + total_trans_s[iter].split(')')[1]) 231 iter += 1 232

IndexError: list index out of range

可能是因为prompt写的不够好,句子比较多的情况下gpt返回的格式有时候两行会合成一行,手动添加判空能让它不报错,但是同一批的句子有一些错位,我也没想到很好的解决方法。