找回密码
 立即注册
查看: 6509|回复: 19

有人可以把这个网站的歌词生成ass外挂字幕嘛

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190 发表于 2019-4-24 22:41:35 | 显示全部楼层 |阅读模式
    本帖最后由 ljx3916190 于 2019-4-24 22:43 编辑

    https://www.jpmarumaru.com/tw/JPSongPlay-642.html
    这个网站用来学歌超好用 双语字幕还带假名注音
    但是每次都要重新加载 视频又是外挂youtobe的每次都要翻墙
    重要的是木有办法整出来一个歌单一起放+.+
    于素想下载下来听+.+
    youtobe的视频这边自己能有办法
    但是歌词写ass实在不会 T.T
    检查元素能看到每句歌词的时间...
    理论上知道怎么写ass的话整一个算法能把检查元素提取出来的东西编成ass+.+
    又或者大佬们教窝肿么写ass 程序窝可以自己编
    比如第一句这里 时间 假名 汉字 都有了 写成外挂字幕是啥样子+.+
    1. <li lang="ja" class="li1"><span class="LyricsYomi" pk="25646" sn="0" st="00:00:12.148" style=""><ruby><rb>放</rb><rt>はな</rt></ruby>て! <ruby><rb>心</rb><rt>こころ</rt></ruby>に<ruby><rb>刻</rb><rt>きざ</rt></ruby>んだ<ruby><rb>夢</rb><rt>ゆめ</rt></ruby>を <ruby><rb>未来</rb><rt>みらい</rt></ruby>さえ<ruby><rb>置</rb><rt>お</rt></ruby>き<ruby><rb>去</rb><rt>ざ</rt></ruby>りにして</span><span class="LyricsYomiKana" pk="25646" style="display: none;">はなて! こころにきざんだゆめを みらいさえおきざりにして</span></li>
    2.     <li class="li2"><span class="Translate_zh" pk="25646">放飛 心靈深處的夢想!與未來一起拋棄</span></li>
    复制代码

    又或者dalao们有哪里可以获取大量像这样双语加假名注音的外挂歌词的+.+

    拜谢

    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    18

    回帖

    0

    VC币

    注册会员

    Rank: 2

    积分
    885
    阿木良良荡漾 发表于 2019-4-24 23:34:57 | 显示全部楼层
    写ass的话有三行,感觉一个难点在于 假名注音的对应位置
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190  楼主| 发表于 2019-4-25 03:51:22 | 显示全部楼层
    http://docs.aegisub.org/manual/Furigana_karaoke
    搜了一下
    这里好像有自动注音的
    但是要标每个字的时间...
    琢磨了半天没整出来不要每个字时间怎么注音@.@
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2022-6-29 22:35
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    4

    主题

    8

    回帖

    56

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    73333

    新人登场

    hchdjp 发表于 2019-4-25 10:23:05 | 显示全部楼层
    本帖最后由 hchdjp 于 2019-4-25 10:46 编辑

    以前在tcax论坛找到过一份lua脚本,不过最近上不去tcax,忘了来源了。用法大概是(万事屋,よろずや)这样,选中之后自动化就可以了。不过我记得一年前用的时候可能按照需求魔改过,貌似会有bug,不过最近没时间修

    1. --[[
    2. 檔案名稱:kage_autoRuby.lua
    3. 腳本製作:影kage
    4. 自動上小字特效(非卡拉OK)

    5. *請將文件放到Aegisub\automation\autoload資料夾內方可使用
    6. *每次調完參數請到[自動化腳本管理]去[重新整理]
    7. *套用的字幕樣式

    8. Copyright (c) 2013-2014,Kage Maboroshi/TUcaptions, All rights reserved.

    9. this script is a modifer of kage ruby sciprt

    10. ]]

    11. --以下資料請不要亂動--

    12. require "karaskel"

    13. script_name = "自動上小字特效(非Karaoke)"
    14. script_description = "自動上小字特效,使用方法(文字,小字) for ASS字幕研習社"
    15. script_author = "Kage Maboroshi(影kage)"
    16. script_modifer_author = "KiNen";
    17. script_version = 1.0

    18. --參數設定--
    19. rubypadding = 0 --小字間距
    20. rubyscale = 0.5 --小字縮放比例
    21. fstyle = "TEXT_JP-furigana" --小字style


    22. meta = nil;
    23. styles = nil;

    24. function Ruby(subs, sel)
    25.         meta, styles = karaskel.collect_head(subs);
    26.         -- for z, i in ipairs(sel) do
    27.         --         local l = subs[i]
    28.         --         processline(subs,l,i);
    29.         --         local l2 = subs[i];
    30.         --               l2.comment = true;
    31.         --                   subs[i] = l2;
    32.         -- end
    33.         local n = 0
    34.         local x = 0        
    35.         for z, i in ipairs(sel) do
    36.                 n = n+x
    37.                 local l = subs[i+n]
    38.                 x = processline(subs,l,i+n);
    39.                 if x == 1 then
    40.                         x = 0;
    41.                 else        
    42.                         local l2 = subs[i+n];
    43.                         l2.comment = true;                        
    44.                         subs[i+n] = l2;
    45.                 end
    46.         end
    47.         aegisub.set_undo_point(script_name)
    48. end

    49. function processline(subs,line,li)
    50.     line.comment = false;
    51.         local originline = table.copy(line);
    52.         
    53.         local ktag="{\\k0}";
    54.         local stylefs = styles[ line.style ].fontsize;
    55.         local rubbyfs = stylefs * rubyscale;
    56.         line.text = string.gsub(line.text,"%((.-),(.-)%)",ktag.."%1".."|".."%2"..ktag);
    57.     local vl = table.copy(line);
    58.         karaskel.preproc_line(subs, meta, styles, vl);
    59.         
    60.         originline.text = string.gsub(originline.text,"%((.-),(.-)%)","%1");
    61.         originline.text = string.format("{\\pos(%d,%d)}",vl.x,vl.y)..originline.text;
    62.         subs.insert(li+1,originline);
    63.         
    64.         for i = 1, vl.furi.n do
    65.                 local fl = table.copy(line)
    66.                 local rlx = vl.left + vl.kara[vl.furi[i].i].center;
    67.                 local rly = vl.top - rubbyfs/2 - rubypadding;
    68.                 fl.style = fstyle;
    69.                 fl.text = string.format("{\\an5\\fs%d\\pos(%d,%d)}%s",rubbyfs,rlx,rly,vl.furi[i].text);
    70.                 subs.insert(li+1+i,fl);
    71.         end
    72.         return vl.furi.n + 1;
    73. end


    74. aegisub.register_macro(script_name, script_description, Ruby)
    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190  楼主| 发表于 2019-4-25 11:37:31 | 显示全部楼层
    本帖最后由 ljx3916190 于 2019-4-25 13:31 编辑

    琢磨了一下还是没整明白
    用那个karaoke的自动化脚本的时候
    一开始要输这两行

    1. Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template syl,{\pos(!line.left+syl.center!,!line.middle!)\an5\k!syl.start_time/10!\k$kdur}
    2. Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template furi,{\pos(!line.left+syl.center!,!line.middle-line.height!)\an5\k!syl.start_time/10!\k$kdur}
    复制代码


    然后是{\k××时间}汉字|假名

    这个脚本是怎么调用的...
    搞定啦
    1. Comment: 0,00:00:12.148,0:00:19.148,Default,,0,0,0,,(放,はな)て! (心,こころ)に(刻,きざ)んだ(夢,ゆめ)を(未来,みらい)さえ(置,お)き(去,ざ)りにして
    复制代码
    应该是论坛这个代码复制粘贴的问题
    缩进的tab载入不了一直error
    这下问题就变成从检查元素的txt里找本句时间,下句时间,<ruby>变成(),<rt>变成, 窝去找个东西做文字处理+.+
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190  楼主| 发表于 2019-4-25 21:01:59 | 显示全部楼层
    bat好蠢啊 又是<又是!各种报错
    T.T
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-4 17:54
  • 签到天数: 2 天

    [LV.1]初来乍到

    14

    主题

    80

    回帖

    1949

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    476888
    NoobNeo 发表于 2019-4-26 00:04:14 | 显示全部楼层
    本帖最后由 NoobNeo 于 2019-4-26 00:05 编辑

    大概是这样的吧


    注音脚本用的@hchdjp提供的

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    声明: 本人所有手抄字幕都采用 进行许可(特殊标注除外)
    已获许可的字幕组: DHR動研字幕組, TUcaptions
    以往字幕有问题的, 请与我联系, 论坛不一定有时间上.
    最佳途径: Telegram @noobneo
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190  楼主| 发表于 2019-4-26 04:45:16 | 显示全部楼层
    不知道怎么搞了
    提取文字跟时间自己总算是整出来了
    但是字体头好大
    好不容易在电脑上注音能对齐了 ass文件朝爪机上一发 就歪了
    ls内位仁兄的ass在爪机上也没歪
    应该还是哪里姿势不对
    dalao们教教窝肿么整吧T.T


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-4 17:54
  • 签到天数: 2 天

    [LV.1]初来乍到

    14

    主题

    80

    回帖

    1949

    VC币

    星辰大海

    Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

    积分
    476888
    NoobNeo 发表于 2019-4-26 07:22:52 | 显示全部楼层
    本帖最后由 NoobNeo 于 2019-4-26 07:42 编辑

    附上源码
    python要3.0及以上

    代码简单注释了一下, 楼主想要批量处理的话, 自己再稍微改造下吧
    1. # -*- coding: UTF-8 -*-
    2. import codecs
    3. import json
    4. import requests

    5. # 字幕保存路径, {}用于替换文件名
    6. format_path = 'D:/youtube-dl/{}.ass'


    7. # song_pk: 歌曲PK
    8. def api(song_pk):
    9.     # 样式名修改的话这里也要修改
    10.     format_ass = 'Dialogue: 0,{},{},Jp,,0,0,0,,{}\r\n'
    11.     format_tr_ass = 'Dialogue: 0,{},{},Tr,,0,0,0,,{}\r\n'
    12.     user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'
    13.     referer = 'https://www.jpmarumaru.com/tw/JPSongPlay-' + str(song_pk) + '.html'
    14.     api_url = 'https://www.jpmarumaru.com/tw/api/json_JPSongTrack.asp'
    15.     song_data = 'SongPK=' + str(song_pk)
    16.     # api headers
    17.     headers = {
    18.         'Connection': 'Keep-alive',
    19.         'User-Agent': user_agent,
    20.         'Referer': referer,
    21.         'Origin': 'https://www.jpmarumaru.com',
    22.         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    23.     }
    24.     req = requests.post(api_url, headers=headers, data=song_data)
    25.     js = json.loads(req.text)
    26.     ass_file = codecs.open(format_path.format(js['Name']), 'w', 'utf-8')
    27.     # ass Header
    28.     ass_file.write('[Script Info]\r\n'
    29.                    '; Script generated by Aegisub 3.2.2\r\n'
    30.                    '; http://www.aegisub.org/\r\n'
    31.                    'Title: Default Aegisub file\r\n'
    32.                    'ScriptType: v4.00+\r\n'
    33.                    'WrapStyle: 0\r\n'
    34.                    'ScaledBorderAndShadow: yes\r\n'
    35.                    'YCbCr Matrix: None\r\n'
    36.                    '[V4+ Styles]\r\n'
    37.                    'Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\r\n'
    38.                    # 日文样式
    39.                    'Style: Jp,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,20,1\r\n'
    40.                    # 译文样式
    41.                    'Style: Tr,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,8,10,10,20,1\r\n'
    42.                    # 注音样式
    43.                    'Style: TEXT_JP-furigana,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,8,10,10,20,1\r\n'
    44.                    '[Events]\r\n'
    45.                    'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n')
    46.     start_time = js['StartTime']
    47.     end_time = js['EndTime']
    48.     ass_yomi = []
    49.     ass_tr = js['Translate_zh']

    50.     for i in js['LyricsYomi']:
    51.         ass_yomi.append(i.replace('<ruby><rb>', '(').replace('</rb><rt>', ',').replace('</rt></ruby>', ')'))
    52.     # 先写入日文歌词, 方便后期自动化时选定
    53.     for index in range(0, len(ass_yomi)):
    54.         ass_file.write(format_ass.format(start_time[index], end_time[index], ass_yomi[index]))
    55.     # 再写入译文歌词, 不需要的话注解掉
    56.     for index in range(0, len(ass_tr)):
    57.         ass_file.write(format_tr_ass.format(start_time[index], end_time[index], ass_tr[index]))

    58.     ass_file.close()


    59. # Demo
    60. api(642)
    复制代码




    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    声明: 本人所有手抄字幕都采用 进行许可(特殊标注除外)
    已获许可的字幕组: DHR動研字幕組, TUcaptions
    以往字幕有问题的, 请与我联系, 论坛不一定有时间上.
    最佳途径: Telegram @noobneo
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-3-28 06:13
  • 签到天数: 119 天

    [LV.6]常住居民II

    7

    主题

    89

    回帖

    0

    VC币

    高级会员

    Rank: 4

    积分
    23532
    ljx3916190  楼主| 发表于 2019-4-26 09:06:16 | 显示全部楼层
    NoobNeo 发表于 2019-4-26 07:22
    附上源码
    python要3.0及以上

    虽然我很鸡的跑去用了pascal
    但是感觉应该不是代码的问题啊
    1. Comment: 0,0:00:12.14,0:00:19.07,Jp,,0,0,0,,(放,はな)て! (心,こころ)に(刻,きざ)んだ(夢,ゆめ)を (未来,みらい)さえ(置,お)き(去,ざ)りにして
    复制代码
    同样的一句
    我跟你这里差的只有自己之后调轴调了提前0.5秒还有小写的jp
    但是后面生成的注音位置就不一样了
    一个是311 一个是400



    这个是我的

    这个是ls的


    神奇的是我这里点一下自动化出来的是388

    我得知道自己是哪里姿势不对T.T
    难受...

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复 支持 0 反对 1

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表