improve: labeling process
This commit is contained in:
parent
b6a5c3dfc4
commit
8c202bdb4f
@ -915,7 +915,8 @@
|
||||
{"aid": 685634071, "title": "【AI歌手】腐草为萤【Cover】", "description": "原唱:银临\n引擎:歌叽歌叽\nPV借用:av2700587\nPV:星の祈\n绘:otakucake阿饼(P站:pixiv.me/otakucake)", "tags": ["AI", "歌叽歌叽"], "author_info": "一支粉笔w: 人生难得一知己,千古知音最难求。 | 网易云:粉笔 微博:http://weibo.com/Chalk10", "label": 2}
|
||||
{"aid": 3372898, "title": "【言和英文】Counting Stars", "description": "自制 终于投了。1.封面仍然灵魂p图。2.这玩意儿9月底就在做了,说好10月投,pv还解决不了。说好11月投,但又因为曲子本身又拖了。上个星期想投,结果,电脑坏掉加发烧。。。。。所以一路拖到今天才投。算是放下心中的一块石头了吧。3.这次画了很多参数,感觉有提升,不知道朱军是怎么看的。5.counting stars是我最最最喜欢的一首歌,已经循环一年。6.1R赶紧出4专!!!", "tags": ["VOCALOID", "COUNTING STARS", "言和", "ONEREPUBLIC"], "author_info": "JackChenZz: 随缘更新", "label": 0}
|
||||
{"aid": 589575, "title": "【洛天依】约定", "description": "绫:天依,不管几年之后你能否记得我,我会一直恋你,爱你,铭心记住你! QAQ 被小汐撺掇调的,咱非常不擅长这拐来拐去的长调式滴说,不过这次应该算不上渣吧?(好吧- -无视这句)。翻的周慧的《约定》,谱子依旧自己来(其实只是自己重做MIDI了,网上的MIDI做觉得不好用,调子太高),3分43秒的字幕是UP无聊的XXX。PV用慢放的《春来发几只》弄的,剪掉了两组燕子镜头~ ~赶脚两个曲子的BPM同步了", "tags": ["乐正绫", "洛天依", "洛天依翻唱曲", "VOCALOID", "良调教", "约定", "周慧"], "author_info": "星璇の天空: Dr.冥月星璇 成就:不会调教的调教师(U/V/SV/C),专业咸鱼,不会科研的副研究员,不会编程的系统架构师,不会AI的无人机设计师...", "label": 2}
|
||||
{"aid": 411693256, "title": "【言和V5】独二无一【VOCALOID Cover】", "description": "人声本家:https://www.bilibili.com/video/BV1oJ411u7Xq?t=222.3\nVC本家:https://www.bilibili.com/video/BV12J411u7Aa?t=2.8", "tags": ["Vsinger创作激励计划", "VOCALOID CHINA", "VOCALOID", "言和", "虚拟歌手", "独二无一", "Vsinger创作激励计划第六期"], "author_info": "远宇V: 言和vsinger\njiafei同人扣扣群:121249682", "label": 0}{"aid": 113244177962166, "title": "【スーサイド(Suicide!)× 头痛欲绝】头痛到自 杀了呢", "description": "-", "tags": ["重音テト", "頭ン痛", "头痛欲绝", "スーサイド!", "Suicide!", "teto"], "author_info": "硕果-累累: 该up主视频可能有长时间断更(不可催更因为要上课(乐))不足之处欢迎提出意见", "label": 0}
|
||||
{"aid": 411693256, "title": "【言和V5】独二无一【VOCALOID Cover】", "description": "人声本家:https://www.bilibili.com/video/BV1oJ411u7Xq?t=222.3\nVC本家:https://www.bilibili.com/video/BV12J411u7Aa?t=2.8", "tags": ["Vsinger创作激励计划", "VOCALOID CHINA", "VOCALOID", "言和", "虚拟歌手", "独二无一", "Vsinger创作激励计划第六期"], "author_info": "远宇V: 言和vsinger\njiafei同人扣扣群:121249682", "label": 0}
|
||||
{"aid": 113244177962166, "title": "【スーサイド(Suicide!)× 头痛欲绝】头痛到自 杀了呢", "description": "-", "tags": ["重音テト", "頭ン痛", "头痛欲绝", "スーサイド!", "Suicide!", "teto"], "author_info": "硕果-累累: 该up主视频可能有长时间断更(不可催更因为要上课(乐))不足之处欢迎提出意见", "label": 0}
|
||||
{"aid": 791366733, "title": "menfnfn", "description": "-", "tags": ["让虚拟歌手为你唱", "虚拟之声创作计划·2023第四期"], "author_info": "bili_70413135045: ", "label": 0}
|
||||
{"aid": 233901881, "title": "《父亲的草原母亲的河》-降D调-钢琴伴奏-正谱伴奏-动态谱", "description": "声乐作品钢琴正谱伴奏视频,音频纯钢琴录制,视频动态走带条手工调校,让声乐教学更高效,练歌更方便。\n学生学歌神器,老师教学助手!\n说明:降调伴奏仅为音频降调,曲谱仍为原调,需要原调伴奏可进入个人空间搜索……", "tags": ["虚拟歌手分享官", "教学", "音乐", "正谱伴奏", "和伴奏", "虚拟之声创作计划·2023第三期", "钢琴伴奏", "培训", "歌曲伴奏", "声乐伴奏", "必剪创作"], "author_info": "音乐视频玩家: 来一首说唱就唱的歌曲吧,音乐、歌词都准备好了! \n\n#…分享各类艺术歌曲及伴奏…#", "label": 0}
|
||||
{"aid": 91991603, "title": "【洛天依】洛天依 - 盛开季节", "description": "作品类型: 原创曲\n调教: 阿宽\n作词: 阿宽\n作曲: 阿宽\n编曲/混音: 阿宽\n简介补充: 创作于10.03.10,新编于20.02.26。。。我现在是多无聊。。。。_(:з」∠)_", "tags": ["VOCALOID", "VOCALOIDCHINA", "原创歌曲", "原创曲", "自制", "洛天依原创曲", "洛天依"], "author_info": "arqalm: 我的网易音乐人主页https://music.163.com/#/artist?id=12126188", "label": 1}
|
||||
@ -931,3 +932,23 @@
|
||||
{"aid": 66426751, "title": "【洛天依V4J】首班车和卡夫卡【COVER】", "description": "Music·Lyrics:ナブナsm27057005/av2840917\nVocal: 洛天依\nManipulation:多元P\nvsqx:ヤ-クザPav38709954\nLast Work:av64325315\n\n小伙伴说了,只要想吃冰,无论何时都是夏天xxxxxx", "tags": ["VOCALOID", "ナブナ", "洛天依日语", "洛天依", "始発とカフカ", "首班车和卡夫卡", "n-buna"], "author_info": "多元P: 日语依不稳定产粮ing", "label": 0}
|
||||
{"aid": 4121667, "title": "【洛天依】出狱新单《哈密瓜》", "description": "自制 视频:乔木 词曲编混唱:舟扒皮\r\n\r\n终于放出来了,哈密瓜好好吃哦。", "tags": ["原创曲", "洛天依", "VOCALOID", "舟扒皮"], "author_info": "舟皮: ", "label": 1}
|
||||
{"aid": 58775982, "title": "【洛天依】祖龙吟", "description": "以下是原曲staff\n总策划:木宁木蒙\n企划运营:塔库\n监制:落落无尘、卿雅、小仙、顾雪柔\n作曲:陈亦洺 | 作词:玄天 | 编曲:Mzf小慕\n演唱:星尘 | 调教:花儿不哭 | 混音:Mr.曾经 | 笛子:囚牛\n视频:小约酱【麻薯映像】| 曲绘:白鄔東\n朕之功过,当世无可评说者,百代之后自有论断。\nvsqx:桂月 & 星葵 & 熊\n原曲:av42348447\n天依生日快乐!!!\n我永远喜欢洛天依!!!", "tags": ["VOCALOIDCHINA", "洛天依", "中国风", "古风", "2019洛天依生日会"], "author_info": "洛水清平: 取次花丛懒回顾,半缘修道半缘君。 ", "label": 2}
|
||||
{"aid": 1106637897, "title": "【UT/初音ミク/音乐/授权代发】懒懒的催眠者MIKU/Vocalotale - OST : Miku (BY: 公太朗(I-LOVE-KIRBY))", "description": "https://youtu.be/ja678stUKzU\n原视频名:Vocalotale - OST : Miku. 【Miku In the stile of Sans.】\n原视频作者:公太朗(I-LOVE-KIRBY)\n\n今回から「Vocalotale」ってタイトルをつけてみた\n不評だったら変える\n\nなんか構想練ってる時点で妙なぐらい合うなって思ってたけどこの2曲ってテンポ同じ(128)でキーも近い(2音)んだね\n…あっ、別にメガロライザーで味しめたとかそういうわけじゃないからね!ただ作りたくなっただけだから!\nいやほんとに…w\n\n原曲\nMiku : \n • Anamanaguchi - Miku ft. Hatsune Miku ... \nSans. : \n • sans. \n\n背景映像\n \n • 【Undertale】ガチ声優とアンダーテールに声当てをしてみた! \n\nスペシャルサンクス\nメインメロディ音源提供 : \n / @ramune_1105 \n\nmp3\nhttps://d.kuku.lu/j87hx64j4\n\nMIDI\nhttps://d.kuku.lu/xbj5hnzt7\n\n#undertale #初音ミク", "tags": ["初音ミク", "初音未来", "VOCALOID", "Miku", "UT", "Undertale", "Sans"], "author_info": "苏维埃冰棺中的伊利亚: 【极白字幕组】招人:UT审核1017120062/MC审核287296896/随机回关中 只问在不在不回复", "url": "https://www.bilibili.com/video/BV1Rw4m167sd", "label": 0}
|
||||
{"aid": 817912279, "title": "【水絮】「中文原创填词&PV」Diamond City Lights|“为你染上彩虹印记!”", "description": "「见苍穹色彩 邀你我 翱翔舞台 ♪ 」\n「Rainbow-colored skies invite us to take a ride ♪ 」\n\n🌈Lazulight forever & Happy 2nd Anniversary to 水絮!🌈\n--------------------------------------------------------------------------\n▶ 翻唱staff ◀\n填词:归羌\n调声:Alkaid0528\n混音:冰山_hyozan\n曲绘:溯鲸 \nPV:泽尔莉丝Zealist\n扒谱:墨梓_Mozes\n伴奏:Daryl Barnes (UTALIVE)\n策划:池泽 \n演唱:水絮\n\n▶ 原曲staff ◀ \nBV14Q4y1o7uN\nVocal: LazuLight\nSong: @Mafumafu_Channel\nMix: 藤浪潤一郎\nMastering: yasu\nLyrics: ネルソン・バビンコイ\nLyrics story: @星川莎拉_Official \n\n--------------------------------------------------------------------------\n水絮相关交流群:698529632\n\n♦LazuLightメンバー\n♢Finana Ryugu - フィナーナ竜宮\nTwitter: @FinanaRyugu\n♢Elira Pendora - エリーラペンドラ\nTwitter: @EliraPendora\n♢Pomu Rainpuff - ぽむれいんぱふ\nTwitter: @PomuRainpuff", "tags": ["虚拟歌手创意填词大赏", "填词", "中文", "UTAU", "翻唱", "虚拟歌姬", "LazuLight", "彩虹社", "NIJISANJI EN", "虚拟歌手创意音乐大赏", "水絮两周年"], "author_info": "-Ikezawa-: 池泽|低浮上|“不要轻易放弃最初的梦想 不要轻易放开手上的吉他”", "url": "https://www.bilibili.com/video/BV14G4y1V7Dv", "label": 2}
|
||||
{"aid": 790497594, "title": "【爱莲娜•芙缇】SHINE OF VOICE【SynthV跨语种/翻唱】", "description": "久违的英跨日\n伴唱的英语没有官方字幕,参考了一些字幕组听译\n\n日语原曲:SHINE OF VOICE - Dream(《草莓百分百》OP)\n软件:Synthesizer V studio basic\n声库:Eleanor Forte (lite)", "tags": ["日文翻唱", "Synthesizer V", "SV", "SYNTHV", "Eleanor Forte", "爱莲娜·芙缇"], "author_info": "大米酱油水: 平移式摸索中 主要玩粤/葡/日翻唱", "url": "https://www.bilibili.com/video/BV12y4y1c7YH", "label": 0}
|
||||
{"aid": 700042528, "title": "【洛天依|翻调|MMD|Hi-res】大 喜", "description": "借物表:\n【模型】iRon0129/夏夜/Tda様/TDA Sour暄/渺纱飘雪/Samsink\n【动作】泠鸢yousa\n【镜头】汐汐利\n【场景】被初音甩的葱/Zoenla\n【渲染】角砂糖/Rui/斯/iKeno/RedialC/そぼろ/针金P/化身バレッタ/暮暮\n【演唱】洛天依\n【编舞】白小白(TranScend全盛舞蹈工作室)\n【BGM】大喜(作词:假寐 作曲:殇小谨 编曲:于瑾)\n制作方:\n作品类型:翻调曲\n原唱:泠鸢\n【MMD制作】一傅笙雨\n【调校】我是坨金块\n【混音】昕声寄语QwQ", "tags": ["虚拟之声创作计划", "洛天依", "VOCALOID CHINA", "翻唱", "VOCALOID", "MMD", "中文VOCALOID", "大喜", "泠鸢yousa", "虚拟之声创作计划·2023第二期"], "author_info": "我是坨金块: 这种鸽子up真的会有人看吗?\nq群868588687!", "url": "https://www.bilibili.com/video/BV1Nm4y1e7H8", "label": 0}
|
||||
{"aid": 881515495, "title": "【洛天依x studio】我期待的不是雪,而是有你的冬天", "description": "-", "tags": ["2024虚拟歌手贺岁纪", "VOCALOIDCHINA", "洛天依", "我期待的不是雪"], "author_info": "禁言-本尊: 新人UP主 QQ3981010746", "url": "https://www.bilibili.com/video/BV1uK4y1B7YS", "label": 2}
|
||||
{"aid": 113730448856187, "title": "[plave]五小帅驾到,统统闪开", "description": "无他", "tags": ["2025跨年季", "自制", "剪辑", "plave", "Bamby", "南艺俊", "韩诺亚", "柳河玟", "都银虎"], "author_info": "韩诺亚的dog: ", "url": "https://www.bilibili.com/video/BV1ApChYrE2v", "label": 0}
|
||||
{"aid": 113117308653487, "title": "【夢ノ結唱 ROSE】nameless story 【Synthesizer V Cover】", "description": "蜀黍我啊,最喜欢比利比利了呢", "tags": ["食蜂操祈", "ROSE", "虚拟歌手", "翻唱", "某科学的超电磁炮", "魔法禁书目录", "Synthesizer V", "夢ノ結唱", "BanG Dream!", "nameless story"], "author_info": "邦多利女主播: 在开门和开工中选择开摆", "url": "https://www.bilibili.com/video/BV1ay4qeQEpb", "label": 0}
|
||||
{"aid": 523139861, "title": "【洛天依AI 乐正绫AI】藏(ACE Studio Cover.)", "description": "【洛天依AI 乐正绫AI】藏(ACE Studio Cover.)\n作词 : 温莨\n作曲 : 徐梦圆\n编曲 : 徐梦圆\n原唱:徐梦圆/双笙\n演唱:洛天依 乐正绫\n调混:雨末\n曲绘:おにねこ(侵删)\n\n——————————————————————————————————————————————————\n今儿个除夕,本来寻思好不容易放个大假可得好好睡个懒觉,结果刚过8点就有人敲门。“哪位......稍等一下哈?”我不敢怠慢,赶忙喊了一嗓子就从床上爬起来穿好衣服,寻思着是不是哪个远房亲戚来串门。“也不打个电话......”\n抻抻衣角,转身一开门:“呦霍,什么风把您二位吹到我这来了。”\n阿洛笑笑:“新年好,借你麦克录首歌。”我奇怪:“前天不是刚录过一首贺年,二位不歇歇嗓子......?”\n阿绫挑了挑眉头:“怎么,不欢迎?”“没没没,我哪敢怠慢您两位姑奶奶,里面儿请里面儿请。”我赶紧让路。\n“今天想录哪首,不会还是贺年曲吧。”洗了水果泡了茶,我坐到电脑前,看着阿洛大快朵颐,阿绫在旁边端着茶杯翻谱子。\n“诺,这首。“接过阿绫递来的乐谱,我瞄了一眼,更疑惑了:”我的姑奶奶,今天是除夕不是七夕,您这......”阿绫一瞪眼,我赶紧把话咽了回去:“成成成,您想录什么就录什么,我可不敢管。”\n一遍完美录完,阿绫拉上阿洛就要走。“这么着急,不再坐会儿?”我试图挽留。\n“我哥那边催的紧,不多坐了。”要不说阿绫这飒楞劲儿,我也不好多说:“那你们快回,路上注意安全。帮我带个好,祝几位新春快乐,兔年大展宏兔。”\n“你也是,新春快乐。”阿洛阿绫双双回头挥手笑别,笑容看的我一愣,随即挥手道别,直到二人牵手的身影消失不见。\n零碎的烟花炸响,我望向天空嘴角微翘:“过年了啊,过年好啊。”", "tags": ["2023虚拟歌手贺岁纪", "乐正绫", "中文翻唱", "南北组", "洛天依", "藏", "ACE Studio"], "author_info": "Rain_End: 晚安", "url": "https://www.bilibili.com/video/BV1xM411t7XP", "label": 2}
|
||||
{"aid": 113782005176569, "title": "【点击即听超A追傩酱】嬢王【SYNTHESIZER V COVER】", "description": "调了自己喜欢的曲目,建议佩戴耳机收听。稍微当了一回标题党.jpg\nTHANKS FOR YOUR WATCHING.\n=======\n本家:八王子P(BV1df421f7WB)\nUST:浅蝕帯\nVocal:追傩酱 AI Lite(Chorus:弦卷マキ AI Lite)【这和声被我混的可能听不出来x】\n调校 / 混音:Kasame", "tags": ["让虚拟歌手为你唱", "COVER", "八王子P", "日语翻唱", "Synthesizer V", "追傩酱", "嬢王", "ついなちゃん", "虚拟之声创作计划·2024第四期"], "author_info": "LosKasameeee_: 随缘存档ING|星乃一歌单推人|翻译/剪辑进行中|不定时评论视频专栏投放", "url": "https://www.bilibili.com/video/BV1pZr5YRE3P", "label": 0}
|
||||
{"aid": 572016825, "title": "【ACE Studio翻调】神的随波逐流-AI依/绫/和", "description": "词:れるりり\n曲:れるりり\n编:れるりり\n调:羊\n唱:洛天依AI/乐正绫AI/言和AI\n本家:sm22831329\npv来自:BV1uJ411879Y\n---------------------------------\n感谢好兄弟@辛酸Caprylic_Acid 提供的midi\n让我有了挑战调日语的勇气\n不过效果意外的不错\n求点赞收藏投币关注(卑微", "tags": ["AI虚拟之声实验室", "VOCALOID", "言和", "AI", "乐正绫", "神的随波逐流", "洛天依", "ACE studio", "虚拟之声创作计划·2023第二期"], "author_info": "陈小sheep: 知道现实残酷却仍然选择自己的梦想 又何尝不是一种浪漫主义呢", "url": "https://www.bilibili.com/video/BV1Wz4y1v7rK", "label": 2}
|
||||
{"aid": 681683324, "title": "【青溯】橙子汽水【Cover.chilichill】", "description": "作品类型:翻调\n原曲:chilichill - 橙子汽水\nMV:网易云音乐录屏\n歌姬:青溯\n调教/混音:莱因哈特Reinhardt", "tags": ["治愈向", "女声", "虚拟歌姬", "Synthesizer V", "chilichill", "青溯"], "author_info": "莱因哈特Reinhardt: 飞友,VATPRC失踪管制员,键盘机长,人文社科历史(伪)爱好者", "url": "https://www.bilibili.com/video/BV1hS4y1F7pJ", "label": 2}
|
||||
{"aid": 723451675, "title": "【心华&墨清弦原创曲】春兰秋菊的交替【AnnyJuly-P|无名社|原创PV付|多声库念白付】", "description": "单元剧舰艇拟人题材科幻向爽文《桃源非梦》主题曲,设定上此曲在剧情中由Molly Iris(声演:心华/琴歌)和Yolanden Mirror(声演:墨清弦)演唱。\n小说地址:https://book.sfacg.com/Novel/273201/ 绝赞拖更中\n这是与《非梦》(BV1gt411x7g1)同一世界观之下的故事,:在“人机战争”以人类文明宣告胜利结束之后,人们经历了一段时间的和平。可是好景不长,新的危机出现了。来自外星的凶恶敌人即将带给旧日的“水面步战队”姑娘们以新的考验。如果说《非梦》是从RN的总旗舰纳尔逊视角对这一整个事件的观测和感受,那么本曲就是在展现USN的大家眼里的这一事件是什么样子。\n小年快乐!!!!!!!!!!!\n约克城老师的舰娘超绝无敌赞!!!!!真的很用心也很好看!!!!!!!\n虽然想做的是交响金属,但是结果是既不交响也不金属(。\n原作:约克格勒造船厂\n人物原设:YorktownCV-5\n策划:AnnyJuly-P\n作编曲:AnnyJuly-P\n作词:AnnyJuly-P\n调音:AnnyJuly-P(心华、全部念白),LastWorkBB63(墨清弦)\n部分声库提供支援:白光\n混音:AnnyJuly-P\n绘图:YorktownCV-5\n演唱:心华(as USS Missouri),墨清弦(as USS Yorktown(5))\n念白:琴歌(as USS Missouri),莲华(as USS Fletcher),言和(as HMS Nelson),幻晓伊(as HMS Warspite),墨清弦(as USS Yorktown(5)),星尘(as USS Enterprise),洛天依·萌(as USS Hornet(8)),嫣汐(as USS Johnston),初音未来(as USS Hammann),洛天依·凝(as HMS Rodney),乐正绫(as USS Saratoga),赤羽(as USS Helena),飞梦(as USS Astoria),海伊(as USS St.Louis)\nPV:琉璃猫映像", "tags": ["2022虚拟歌手贺岁纪", "VOCALOID中文曲", "无名社", "VOCALOID", "心华", "墨清弦", "交响金属", "OC", "原创舰娘", "约克格勒造船厂"], "author_info": "AnnyJuly: 【暂不接】作编曲4|愿创作经费从四面八方来。M站ID是“AnnyJuly_P”,音频都在里面。", "url": "https://www.bilibili.com/video/BV1XS4y1o7wr", "label": 1}
|
||||
{"aid": 292989573, "title": "【洛天依】别被广告误导", "description": "制作~cocok7", "tags": ["窦骁", "VOCALOID中文曲", "洛天依", "广告", "语调教", "牙膏", "王宝强", "烤瓷牙", "搞笑挑战", "打卡挑战"], "author_info": "COCOK7: 合作私信", "url": "https://www.bilibili.com/video/BV1Ef4y1n7G5", "label": 0}
|
||||
{"aid": 249832307, "title": "【星尘Minus】狼狈(Synthesizer V Cover)【五维介质2021调校赛】", "description": "——本家STAFF——\nVocal: 洛天依\nMusic/Lyrics: 公兔\nMovie: Tico\n\n——翻调SRAFF——\nVocal:星尘Minus(减减)\nvsqx作者:鸽子国王\n调校:沉默の法师\n混音:Chasel懿辰\n\n—————————\n各位七夕快乐!(虽然歌跟七夕没什么关系,只是碰巧今天投了)\n还有,1cgg永远的神!", "tags": ["2021虚拟歌手创作赛·调校赛道", "虚拟歌手", "SynthV", "Minus", "星尘Minus", "五维介质2021调校赛"], "author_info": "沉默的法师_: 小伙伴要约稿的话私信我d(^_^o)", "url": "https://www.bilibili.com/video/BV1Uv411P7qq", "label": 2}
|
||||
{"aid": 577445199, "title": "【中文字幕】【鏡音リン·レン】多萝茜小镇【toya】", "description": "sm16020127\n简介:终于投了一首和万圣节有关的歌曲!每年都想着要做曲,可算是做出来了\n虽然是没有副歌的朴素的曲子,但是希望能传达只有在节日期间才有的独特氛围或激情!\n借用了*Maria*桑的作品,感谢!", "tags": ["镜音铃", "鏡音レン", "鏡音リン", "VOCALOID", "镜音连", "toya"], "author_info": "天使莉莉-096: 搬运工,啥都更", "url": "https://www.bilibili.com/video/BV19B4y1o7Pn", "label": 0}
|
||||
{"aid": 728875258, "title": "【粤语调教】南北组--《明天你是否依然爱我》 萌新跨语种调教初体验!!", "description": "看了一些个教程,稍微了解了一些跨语种调教的小技巧,正好用谭校长的歌来练手\n小时候在电视上看到当年意气风发的校长和年轻的关淑怡合唱这首歌,那画面真是美爆了\n感觉恩爱的南北组在一起合唱这首歌,应该会一样的美好吧\n由于是第一次尝试跨语种所以一定又太多拉跨的地方(悲)\n恳请诸位大佬的指教!!!!\n喜欢就点个赞吧!\n曲绘:@ 灰乌鸦", "tags": ["粤语", "自制", "南北组", "乐正绫", "洛天依", "语调教", "中文VOCALOID"], "author_info": "左手边的夏至: 就在你看到我那天,我振翅高飞。", "url": "https://www.bilibili.com/video/BV1jS4y1t7N6", "label": 0}
|
||||
{"aid": 27819974, "title": "洛天依的儿歌:两只老虎", "description": "突然心血来潮做了一个这种类型的视频,做的太赶了不要在意那个错别字。", "tags": ["治愈", "中文", "VOCALOID", "小清新", "新人", "两只老虎", "儿歌", "呜啦啦啦啦"], "author_info": "CLY回忆: 十八线画手 非著名游戏区up主,偶尔做一些教程、vlog.....", "url": "https://www.bilibili.com/video/BV1Zs411w7dD", "label": 2}
|
||||
{"aid": 71890713, "title": "【初音中文翻唱】老街北【原PV】", "description": "扒谱:想吃素的BeaR 调:时末 本家:av57785834\n原本国庆可以做完的,但因学(只)业(想)繁(摸)忙(鱼),拖到了现在才做好,有点惭愧。\n这次试了一下新学的调教方法,感觉还行,不过还是有些地方没弄好,而且混音好像还有点混炸了,不会修,就这样投了吧。", "tags": ["初音", "初音未来", "VOCALOIDCHINA", "中文", "洛天依", "中文翻唱", "初音MIKU", "MIKU", "初音未来V4C"], "author_info": "时末x: 他大体是死了吧", "url": "https://www.bilibili.com/video/BV14E41167xZ", "label": 2}
|
||||
{"aid": 314444776, "title": "【岸晓】再飞行 | Synthesizer V Cover", "description": "原唱:逃跑计划\n视频来自:https://www.bilibili.com/video/BV1ES4y1z7TT/?spm_id_from=333.337.search-card.all.click\n\n很喜欢的动画,歌也真的很喜欢。头一次这么完整的做出来一首歌,听感不好还请见谅,不是太懂qwq", "tags": ["虚拟歌手分享官", "COVER", "童年", "翻唱", "星游记", "SynthV", "国漫", "岸晓", "虚拟之声创作计划·2023第二期"], "author_info": "阿江今天做什么_: 要开心嗷:D 微博@阿江今天做什么_ 生活相关@祁江江江_", "url": "https://www.bilibili.com/video/BV1QP411D7YA", "label": 2}
|
||||
{"aid": 11526170, "title": "【洛天依/乐正绫/言和原创】雾都孤姬【PV付】", "description": "一月份立项开始制作的稿件... 抱歉让各位久等了。希望大家能理解这首歌曲的真正目的吧。\r\nSTAFF:\r\n编/作曲:CUBE^3\r\n作词:Dsama/汐雨/CUBE^3\r\n调教:老碎p\r\n调教协力:墨小墨p\r\n人物绘制:Cataleya Chan/半璇\r\n封面绘制:error1980\r\n曲绘协力:儡\r\n混音:Seedking\r\n背景处理:两千_T\r\nPV:发条\r\n声明:PV中出现的背景素材通过合法途径在昵图网购买,上传作者:sunjinlontongzhi。", "tags": ["言和", "洛天依", "乐正绫", "VOCALOID中文曲", "VOCALOID", "CUBIC PROJECT", "原创曲", "雾都孤姬", "老碎p", "深刻"], "author_info": "CUBE_3: 不知道我还在坚持着什么(笑 774706657", "url": "https://www.bilibili.com/video/BV1mx411h7Fu", "label": 1}
|
||||
|
@ -111,7 +111,33 @@
|
||||
{"aid": 1353871111, "title": "可不也入飞门了 《最佳顺友》【CeVIO AI 粤语cover】", "tags": ["搞笑", "英雄联盟", "飞门", "CeVIO AI", "飞马", "张顺飞", "可不", "原神"], "author_info": "事隠しのfubuki: ", "description": "原作者 :原家门-杰顺克 本家:BV1sq421P7bC\n感谢老哥授权二创,可惜可不把老哥的奥德腮皮肤遮住了\n\n混/调:我\n\n可不图作者推特:https://x.com/noizman_sympho\n\nmocha pro 总是跟踪失败,用剪映摆了,这几天脑子里全是这歌,太顶级了", "model": 2, "human": 2}
|
||||
{"aid": 248109170, "title": "(传说之下游戏)Treo的尘埃的信任一段开头演示官方重置 Dusttrust phase 1 thingie", "tags": ["BGM", "AU", "传说之下", "UT", "UNDERTALEAU"], "author_info": "三尘-深渊: 画渣,无小号,只在B站发视频和动态", "description": "该视频作者 Treo 3340位订阅者\n原视频链接https://m.youtube.com/watch?v=1F3EpHU1vnI", "model": 0, "human": 0}
|
||||
{"aid": 113233474097330, "title": "【永夜Minus】Bleeding Love", "tags": ["让虚拟歌手为你唱", "虚拟歌姬", "虚拟歌手", "音乐", "VOCALOID", "Synthesizer V", "永夜Minus", "虚拟之声创作计划·2024第三期", "翻调", "Leona Lewis", "Bleeding Love"], "author_info": "五等分的monop: 菜菜调校", "description": "原曲:Bleeding Love\n原唱:Leona Lewis\n-----------------------------------------------------\n-----------------------------------------------------\n调校:monop\n混音:monop", "model": 2, "human": 0}
|
||||
{"aid": 115025, "title": "【初音ミク】Re:birth ☆实长: 3:19", "description": "sm15005742 ☆实际长度: 3:19 ஐMusic&Lyrics:キョーヘイ ஐIllust:LiLLa 久し振りに病んだ曲になってますw.こんな曲は作ってて楽しいですねww Re:birth?重生?似乎可以这样理解吧?ˋ ( ° ▽、° )", "tags": ["初音MIKU", "VOCALOID", "キョーヘイ", "VOCALOID新曲リンク"], "author_info": "雪暴公主: Forever Alone", "url": "https://www.bilibili.com/video/BV1Qx411c7GE", "model_label": 0, "user_label": null, "human": 0}
|
||||
{"aid": 112657831036502, "title": "冰火歌会 2", "description": "-", "tags": ["冰火歌会", "必剪创作", "虚拟 UP 主", "虚拟最强音·2024第三期"], "author_info": "LV驴子: ", "url": "https://www.bilibili.com/video/BV1AegbezEC8", "model_label": 0, "user_label": null, "human": 0}
|
||||
{"aid": 732450889, "title": "【洛天依AI】四季予你【ACE Studio COVER】", "description": "四季予你\n作词:烟十八\n作曲:郑冰冰\n编曲:刘圣华(华子)\n原唱:程响\n翻唱:洛天依\n调教:夏龙杰lndulge\n求大佬评论指导", "tags": ["让虚拟歌手为你唱", "VOCALOID CHINA", "COVER", "洛天依", "虚拟歌手创意音乐大赏"], "author_info": "夏龙杰lndulge: 又名怠惰p,高中生,约稿B站私信可约调教和混音(混音最好别约)不求关注,但求三连加评论 (能关注一下也可以)", "url": "https://www.bilibili.com/video/BV1VD4y1x7c1", "model_label": 2, "user_label": null, "human": 2}
|
||||
{"aid": 310042157, "title": "【心华翻唱】祖龙吟【忘川风华录】", "description": "总策划:木宁木蒙\n企划运营:塔库\n监制:落落无尘、卿雅、小仙、顾雪柔\n作曲:陈亦洺 | 作词:玄天 | 编曲:Mzf小慕\n演唱:星尘 | 调教:花儿不哭 | 混音:Mr.曾经 | 笛子:囚牛\n视频:小约酱【麻薯映像】| 曲绘:白鄔東\n朕之功过,当世无可评说者,百代之后自有论断。\n\n原作指路;BV11b411k7ym\n\n感谢忘川的公开二创素材,调了一个半月了,给孩子一个三连吧求求了。。。", "tags": ["虚拟之声创作计划", "COVER", "心华", "翻唱", "VOCALOID", "VOCALOID CHINA", "嬴政", "忘川风华录", "祖龙吟", "虚拟之声创作计划·2023第一期"], "author_info": "幽影丶鎺: 一只鸽子精,约稿事宜请私信哦~咕咕咕", "url": "https://www.bilibili.com/video/BV1UA411172s", "model_label": 2, "user_label": null, "human": 2}
|
||||
{"aid": 3047642, "title": "【APH】亲分的SPICE!【人力VOCALOID】", "description": "sm27349661 作者:upwood さん", "tags": ["人力VOCALOID", "APH", "SPICE!", "亲分"], "author_info": "绮离离: ", "url": "https://www.bilibili.com/video/BV18s411275f", "model": 0, "human": 0}
|
||||
{"aid": 549372558, "title": "【初音ミク】我的愚蠢【Anpo】", "description": "https://youtu.be/ae4y-M9d7a8\nAnpoです。7作目。\n\n歌:初音ミク\n\n音楽:Anpo \n\nツイッター:https://twitter.com/anpo39\n\nニコニコ:https://nico.ms/sm39603632\n\n絵:テイハ\n\n映像:はとはと https://twitter.com/hato_kumakiti\n\n\n・歌詞\n\n散々 今日も残念と散った\n分かりやすく真似てもさ\n惨憺たる結果に還った\nあぁ また「昔は良かった」とか\n\n煩悶する机上の傷は\n凡庸を恨むが故\nそうならまだいいが もしや\n暇つぶしじゃないだろうね\n\n\n扇情、羨望と希望の退路\n諦めの勝手を知るも\n参考書開いて\n分かるような人生なら\n僕も人気者\n\n\n窃盗 戦争 好きにどうぞ\n越冬ですと託け\n僕は眠るよ 人類みな死ぬまで\n\n警報 喧騒 怒号 暴動\n一切合切 崩れよ\nこの愚かさが目立たぬように\n\n\n\nって言うのは たかが妄想\nくだらねぇ と嫌になって\n投げ出した腕の先\n1つ 見覚えのないボタン\n\n為体は棚に上げ\nうまくいかない苛立ち\n偉そうに拵えてさ\n捌け口を探していた\n\n\nそうだこれも 妄想なんだ\n寝て待って降る幸は無し\nそうと決まればこのボタンを\n押さない手は無し\nそして放たれた\n\n\n爆弾 細菌 隔離病棟\n人種差別 パンデミック\n陰謀勘繰って 仕返しの核爆弾\n\n誘発地震 世界恐慌\nまぁ なんと愚かなこと\nあぁ まさに僕が望んだ世界\n\n\nざまぁみろよ これまでよくも\n踏みにじってくれたね 世界様よ\nいい気分だぜ ほんと最高だ\n笑い声の向こうで聞いた\n\n\nノイズ混じりのラジオが告げ出した\nこの惨劇の戦犯となるのは\n「…」耳を疑った 年齢 容姿 経歴\nそして彼の名前を呼ぶ\n\n僕の名前だった 新聞 インターネット\n顔写真も晒されて 槍玉さ\nついには 法廷 死刑宣告\nねぇ どうか許してよ\n誰もが僕の愚かを見てる", "tags": ["初音未来", "VOCALOID", "Anpo"], "author_info": "珠紫MuRaSaKi: 珠江&紫禁城\n\n搬运工丨一般路过术力口听众|wota艺初心者\n国家一级游泳运动员|十五年国安球迷\n\n我们只支持北京国安队!", "url": "https://www.bilibili.com/video/BV1gq4y1g7XU", "model": 0, "human": 0}
|
||||
{"aid": 113044629750051, "title": "爱莉希雅翻唱《败犬女主》ed「LOVE 2000」", "description": "音频下载链接:https://wwzl.lanzoue.com/b00qzc4kd\n密码:dpu2\n牢八胃大,无需多盐~\n\n-----借物表-----\n音源/原唱:遠野ひかる - LOVE 2000\n演唱:AI爱莉希雅\n背景:BV1iz421q7cd\n封面图/模型/混音:自己\n表情包:咸鱼小章鱼\nDataset:爱莉希雅(崩坏3)\n音频使用 Sovits 4.0 项目制作\n歌曲和音色归版权方所有\n歌声使用AI合成,如侵权联系本人删除\n搬运或个人使用无需授权,标注本人b站名字即可,禁止用于商业用途。\n免责声明:本作品仅作为娱乐目的发布,可能造成的后果与使用的音声转换项目的作者、贡献者无关。", "tags": ["崩坏3创作激励计划", "游戏", "手机游戏", "日语翻唱", "崩坏3", "败犬女主", "爱门", "Sovits4.0", "米哈游", "LOVE 2000", "崩坏3「迷途倦梦」创作激励计划"], "author_info": "私の影ちゃん: 事一个成分很杂的乐子人,做视频是业余爱好,更新时间不定,但是会努力让大家喜欢。\n仅在B站发布作品!!!\n\n1w粉cos爱莉()", "url": "https://www.bilibili.com/video/BV1ytHMeGETK", "model": 2, "human": 0}
|
||||
{"aid": 545725734, "title": "烂 活 新 整:夕 影 也 要 谈 恋 爱", "description": "昨天520,没有人跟我表白,投稿评论区也是冷冷清清,我一个人学了一天习,写了一晚上作业,然后今天把这个烂活投了,感觉自己像个520里的250……\n感谢澈然佬对迫害夕影事业的大力支持", "tags": ["UTAU", "我向往自由", "散人跑", "语调教", "夕影", "打卡挑战", "我的音乐你听吗", "520心冻挑战"], "author_info": "上官宛凝Warning: GNGG所属虚拟主播,凝聚力Project负责人,寒假复播,粉丝群713066790", "url": "https://www.bilibili.com/video/BV18q4y1E7Jy", "model": 2, "human": 0}
|
||||
{"aid": 735454, "title": "【Ib】Rolling Girl【GUMI,KAITO,IA】", "description": "http://www.youtube.com/watch?v=Gd66NdnYGsA Vocals: Ib (Megpoid Power), Garry (Kaito Straight), Mary (IA) producer:LordGumoMegpoid", "tags": ["泪腺崩坏", "VOCALOID", "ROLLING GIRL", "GUMI", "KAITO", "IA", "IB", "结尾感人", "虐心"], "author_info": "kyoakeve: 专注IA痴汉30年~~(¯﹃¯)~~BML2016 LIA+QSW IA PAGG+MIKU EXPO SH三应援达成!大满足!", "url": "https://www.bilibili.com/video/BV1Us411f7pN", "model": 0, "human": 0}
|
||||
{"aid": 5503593, "title": "【鏡音リンV4X】单恋 -单 恋-【NO.1P】", "description": "sm29320564 NO.1Pと申します。今度はかわいい曲です!\n\n今回、"立花さつき"さんに絵を描いていただきましたので、\n素敵な絵も楽しんでいたれば幸いです。\n\n☆Vocal : 鏡音リン\n☆曲・動画:NO.1P mylist/20679720\n☆絵:立花さつき https://twitter.com/YUIRINEX", "tags": ["镜音RIN", "镜音リン", "VOCALOID", "镜音リンV4X"], "author_info": "细谷雫: 透明人。视频信息请看视频简介Plz pm me if you want to delete your video.Thx:)", "url": "https://www.bilibili.com/video/BV1ts411173M", "model": 0, "human": 0}
|
||||
{"aid": 846378549, "title": "【原创歌曲】 你绑架了我的全部 / 初音未來【VOCALOID】", "description": "作曲:sabato(さばと)\n声乐:初音未來(初音ミク)\n\nYouTube:https://www.youtube.com/channel/UCIUIex6hsvxf-5Bw2r5oEnQ", "tags": ["新人", "日本", "初音", "日语", "MIKU", "自制", "初音MIKU"], "author_info": "sabatoP: 很高兴见到你。 我是日本音乐家。 我正在学习中文,但我期待与您合作。\n我将制作人声歌曲并介绍日本。", "url": "https://www.bilibili.com/video/BV1w54y1p7hC", "model": 0, "human": 0}
|
||||
{"aid": 100306, "title": "【初音ミク】Λ -心の在処-RegaSound", "description": "sm14660676 曲・詞・動画:RegaSound( mylist/7488683 ) 吉他:三代ギター魂(mylist/3869481 ) 插图:http://piapro.jp/A32367227", "tags": ["初音MIKU", "VOCALOID", "机动歌姫ヴォーカリオン"], "author_info": "otaknight: twitter @otaknight", "url": "https://www.bilibili.com/video/BV1dx411c7Xy", "model": 0, "human": 0}
|
||||
{"aid": 1355205918, "title": "Vsinger创作激励计划:Vsinger 虚拟歌手 洛天依", "description": "-", "tags": ["Vsinger创作激励计划", "洛天依", "打卡.", "必剪创作", "Vsinger创作激励计划2024Vol-2"], "author_info": "忒潼: ", "url": "https://www.bilibili.com/video/BV1yz421a7Gk", "model": 0, "human": 0}
|
||||
{"aid": 1050262901, "title": "巡光【永夜Minus】“只要你目光是瞄准月亮,迷失过又有何妨?”【SV Cover】", "description": "原曲:巡光-就是南方凯\n\nvsqx作者:@羽绫鸽子 (BV1kG411r73U)\n演唱:永夜Minus\n调混:我\n\n云晦是无痕之笔的“笔名”。", "tags": ["2024虚拟歌手贺岁纪", "COVER", "虚拟歌姬", "Synthesizer V", "Minus", "巡光", "翻调", "永夜"], "author_info": "云晦: 偶尔写词冒充调音不懂剪辑//头像by路行小叶子", "url": "https://www.bilibili.com/video/BV13H4y1Y7b4", "model": 2, "human": 2}
|
||||
{"aid": 1856116784, "title": "【洛天依V5/AI】消愁【洛天依十二周年】", "description": "原 / 消愁-毛不易\n扒 / fakepheonix\n调 / 水龙头p\n唱 / 洛天依\n\n24V吧调音赛SC037\n这首歌最后一段的意象和《上山岗》莫名很像(大家都是共轭肩膀关系!\n小洛生日快乐-", "tags": ["Vsinger创作激励计划", "VOCALOID", "虚拟歌手", "VOCALOID CHINA", "虚拟歌姬", "洛天依", "ACE Studio", "Vsinger创作激励计划2024夏日回响"], "author_info": "水龙头p: 极速摆烂,龟速进步", "url": "https://www.bilibili.com/video/BV19W421R7EU", "model": 2, "human": 2}
|
||||
{"aid": 51093483, "title": "【洛天依】远方(V5编辑器不是音源)", "description": "高考前封笔作……\n《远方》(电视剧《古剑奇谭》片尾曲)\n填词:谭旋 \n谱曲:谭旋 \n编曲:白金明\n原唱:郁可唯\n翻唱:洛天依\n扒谱:坚果(MidiShow)\n调校:pstlyj\n声库:洛天依V4凝\n引擎:VOCALOID 5", "tags": ["VOCALOID", "洛天依", "中文", "翻唱", "古剑奇谭", "郁可唯", "VOCALOIDV5"], "author_info": "OmegaByte: 愿我真情性再大也改不了。\nQQ/WX:1652186178", "url": "https://www.bilibili.com/video/BV1R4411t79b", "model": 2, "human": 2}
|
||||
{"aid": 498953949, "title": "有一只僵尸的草坪上。", "description": "哔哩哔哩。", "tags": ["纯音乐", "歌曲"], "author_info": "惊讶的美国球: 吾仍一位德雅高尚之大文学家、大作家、大诗人,外加一位思想深邃、情感丰富细敏之大哲学家、大思想家!(吾之理、梦想!)。", "url": "https://www.bilibili.com/video/BV1tK411J7hp", "model": 0, "human": 0}
|
||||
{"aid": 677396109, "title": "【初音ミク&鏡音レン】圣诞节前夕【ムラタシユウ】", "description": "https://www.nicovideo.jp/watch/sm39776083\n作詞, 作曲, 編曲, 全楽器, 調声, Mix, Mastering, 動画:ムラタシユウ\nhttps://twitter.com/muratashiyuu\n\nイラスト:バイオエビフライ 様\nhttps://twitter.com/yzpiyo039\n\n初めてのキスの後は何も覚えてない\nただ君の表情が\nそれまで見たことのない\n特別なものに思えたんだ\n\n懐かしい気持ちになる夜の冷たい風\n泳ぐ蝶々たちと\n羽を広げられずに\n飛べないまま生を終える僕だ\n\n暗いカラオケボックスに\n漂う二人の温度が\nいつまでも残るような気がした\n\nそして季節は過ぎ街は輝いてく\n僕が覚えてるように君も覚えてるかな\n\n初めて手を繋いで歩いたのは君じゃないのに\nあんなにも\nそれまでしたことのない\n特別なものに思えたんだ\n\n僕は幸せだった\nそれでよかった\n\nきっと Stay with meが遅かった\n僕ら何度出会っても同じ結末に向かう\n離れてしまう心の中で叫んでいても\n聞こえないから\n\n君とメリークリスマスが言えない\n冬が何度過ぎても 同じ夢の中眠る\n会いたいだなんて もう今更\n\nそれまでの悲しみの\nそのすべてが君に繋がる糸だったと\n思わせてくれたこと\nそれだけで僕は嬉しかった\n\nふたりだけが揺られる\n夜の闇を駆ける箱\nキスを躊躇う僕の頬に\n\nそっと口づけした\n君が降りてゆく\n僕が求めてるより君はくれていたのに\n\nきっと Stay with meが遅かった\n僕ら何度出会っても同じ結末に向かう\n離れてしまう心の中で叫んでいても\n聞こえないから\n\n君とメリークリスマスが言えない\n冬が何度過ぎても 同じ夢の中眠る\n会いたいだなんて もう今更\n\nStay with meが遅かった\n僕ら何度出会っても同じ結末に向かう\n離れてしまう心の中で叫んでいても\n聞こえないから\n\n君とメリークリスマスが言えない\n冬が何度過ぎても 同じ夢の中眠る\n会いたいだなんて もう今更 言えない", "tags": ["VOCALOID", "初音ミク", "鏡音レン", "ムラタシユウ"], "author_info": "rotbala: CC字幕请发邮箱rotbala@163.com\n中文字幕随意取用", "url": "https://www.bilibili.com/video/BV1am4y1X7zz", "model": 0, "human": 0}
|
||||
{"aid": 702905924, "title": "【UTAU新歌姬_岚淑婷_CVVClite】「404 Not Found」", "description": "本家:BV1vE411R7iD\n原唱:赤羽\n\n\n翻唱:岚淑婷_lite beta\n\nvsqx:想吃素的BeaR\n录音表:菌子式简化cvvc\noto/录音:沫雪明月\n\n等立绘画完了就配布!淑婷依然是五六年级时期的企划,到现在才做()时隔八年,她终于诞生了,当时她在草稿纸上画下月音的好朋友,用她自己的小名,和她的姓,创作出了“李淑婷”,一开始是袅袅引擎,由我的好朋友来录的,可惜年代太过久远,采样早丢了,而她唯一的联系方式QQ也注销了,所以我来模仿她的声音来录的,当时年纪小,没有条件买好的录音设备,用20块地摊耳麦录的音质并不好,加上那时候我不懂标记随便切的,虽然很烂,但是在当时她发出的声音让我们很惊喜!我们当时还在用剩下的作业本,写出月音和淑婷的小故事.......只不过,都已经埋在时间的缝隙了。\n现在有条件了,入手了数位板和好麦克风,我又学会UTAU的标记,性能提升了很多,不过真正的淑婷....已经走了,或者说,这是她的重生?她终于和月音团聚了!如果是小时候的我,看见此刻一定会很开心吧.....\n-\n等下个暑假有条件了录个完整的cvvc。", "tags": ["让虚拟歌手为你唱", "翻唱", "虚拟歌姬", "UTAU", "COVER", "岚淑婷", "2023虚拟歌手创作赛"], "author_info": "沫雪明月_Official: あわゆきめいげつ,接稿调教/PV/混音/声库制作/平涂板绘/作词,不更新就是在憋大招。网易云:沫雪明月(头像by小鱼丸子", "url": "https://www.bilibili.com/video/BV14m4y1T7Ct", "model": 2, "human": 2}
|
||||
{"aid": 281174017, "title": "【日語中字】210815 [官方MV] 超興奮♡廣告部 - 我喜歡!〜超級ver〜", "description": "歡迎到看 > 收藏 > 分檔案有 >\n🌸Kao Noppakao\n🌸Up Poompat\n🌸紅線(OhmFluke)&麻繩(BounPrem)\n🌸JustUp(Bruce SaintVin)\n🌸逐步愛上你(ManBen)\n🌸牛導工作室Studio Wabi Sabi\n🌸BrightWin,F4Thailand Dew Nani\n🌸GMMTV\n🌸KarnFoei\n🌸【粵語】胡慧冲\n🌸【泰語中字】泰國BL小說評論及劇\n🌸泰國文化\n等等......", "tags": ["虚拟歌手分享官", "MV", "日語音樂", "虚拟之声创作计划·2023第四期", "超興奮♡廣告部", "官方MV", "中字", "日語", "Vlog", "Kpop", "日語中字"], "author_info": "KupaoKao: Hi~ o(* ̄▽ ̄*)ブ", "url": "https://www.bilibili.com/video/BV11c41167BY", "model": 0, "human": 0}
|
||||
{"aid": 57606868, "title": "洛天依生日会预告", "description": "https://m.weibo.cn/5146173015/4391781804451603\n举办时间:2019年7月12日19:12-21:30\n举办地址:上海环球金融中心94层\n直播地址:哔哩哔哩弹幕网 直播间1546736\n直播预告历年成就视角:av58238094\n\n*生日寄语\n从2012年7月12日出道至今,时光是那么漫长却又仿佛弹指一瞬。\n距离天依的生日会还有一段时间,由TID T爹帮我设计的小裙子已经正式加入了我的衣橱,演出曲目也在大家的建议下确定完毕~天依进入了紧张的生日会+BML筹备期,最近请大家多多给天依加油啦!\n\n*空中演出\n今年的生日会在一个特殊的地方—上海环球金融中心94楼的高空(有恐高症的小伙伴谨慎报名,真的,超高哒!)。", "tags": ["VOCALOID", "洛天依", "音乐", "上海", "直播", "预告", "洛天依0712生日快乐", "生日会", "TID"], "author_info": "Saint_louis: Cause you were born this way.", "url": "https://www.bilibili.com/video/BV1ux41197i2", "model": 1, "human": 0}
|
||||
{"aid": 1201832735, "title": "Vsinger创作激励计划:4几十元压泡面的手办要不要这么可爱模型 手办模型 这谁顶得住啊 二次元 洛天依", "description": "-", "tags": ["Vsinger创作激励计划", "洛天依", "打卡", "必剪创作", "Vsinger创作激励计划2024新春季"], "author_info": "咯噔噔看看: ", "url": "https://www.bilibili.com/video/BV12F4m1c7MZ", "model": 0, "human": 0}
|
||||
{"aid": 207757869, "title": "【VOCALOID音乐剧】Alice in Musicland(交响乐版)", "description": "sm15108950\nAlice in Musicland交响乐版替换版MV\n交响乐版来自Miku Symphony 2020オーケストラライブ\n由于交响乐重新编曲,曲速比原版慢了许多,节奏也不太一样,为了对应MV画面,对MV进行了加减速的处理", "tags": ["KAITO", "音乐剧", "MIKU", "镜音双子", "初音MIKU", "V家", "巡音LUKA", "COVER", "合唱", "OSTER"], "author_info": "--クロ--: --kuro-----------------------------------------------", "url": "https://www.bilibili.com/video/BV1Qh411W7Lj", "model": 0, "human": 0}
|
||||
{"aid": 313896100, "title": "女主开局就被吸精气,男主却只能做个亲吻工具人!存在感这么低?", "description": "", "tags": ["虚拟歌手分享官", "美男", "动漫", "开局", "存在感", "虚拟之声创作计划·2023第二期"], "author_info": "科普小执着吖: ", "url": "https://www.bilibili.com/video/BV1sP41197v3", "model": 0, "human": 0}
|
||||
{"aid": 113670621238134, "title": "20241217 听潮阁·礼 19-20点档(T.崔十八)", "description": "-", "tags": ["让虚拟歌手为你唱", "直播录像", "必剪创作", "虚拟之声创作计划·2024第四期"], "author_info": "椛落有柒: CPA备考中 直播录屏停发啦", "url": "https://www.bilibili.com/video/BV1FPrfY6E3o", "model": 0, "human": 0}
|
||||
{"aid": 113536168627871, "title": "【洛天依AI】来不及再见(拳皇命运第22集ED)(X Studio Cover)原唱:王绍珏", "description": "-", "tags": ["Vsinger创作激励计划", "洛天依", "VOCALOID", "拳皇命运", "必剪创作", "Vsinger创作激励计划2024秋日漫游"], "author_info": "66C2F2: ", "url": "https://www.bilibili.com/video/BV1p2BWYVE8v", "model": 2, "human": 2}
|
||||
{"aid": 1475337, "title": "【中文字幕】蜘蛛丝MONOPOLY", "description": "自制 我只是个刚开始做字幕的渣,没人看很正常权当练习了括弧笑(´;ω;`)原曲:av537563", "tags": ["蜘蛛丝MONOPOLY", "VOCALOID"], "author_info": "热海游泳: 秃头一个(战损版)", "url": "https://www.bilibili.com/video/BV1Ex411K78Z", "model": 0, "human": 0}
|
||||
{"aid": 25992169, "title": "【初音ミクAppend】Mr· Wonder【Rearrange】", "description": "【初音ミクAppend】Mr. Wonder【Rearrange】\n补番搬运", "tags": ["初音MIKU", "初音未来", "初音ミク", "ミクオリジナル曲"], "author_info": "MercuryKutsu: 勿忘初心,方得始终°", "url": "https://www.bilibili.com/video/BV1vs411G7RM", "model": 0, "human": 0}
|
||||
{"aid": 113694126115309, "title": "【沨漪】 繁华唱遍 【SV Cover】", "description": "原曲:BV17t411y7ZG\n曲 : papaw泡泡 | 词:Vagary | 原调校:纳兰寻风\n翻调:Na2S2O3", "tags": ["让虚拟歌手为你唱", "虚拟歌姬", "翻唱", "沨漪", "SV", "繁华唱遍", "虚拟之声创作计划·2024第四期"], "author_info": "一Na2S2O3一: 兴趣使然", "url": "https://www.bilibili.com/video/BV12bkYYnE8S", "model": 2, "human": 2}
|
||||
{"aid": 809735633, "title": "【赤羽】团结就是力量", "description": "【赤羽】团结就是力量", "tags": ["平行四界", "翻唱", "Synthesizer V", "团结就是力量", "赤羽", "五维介质", "打卡挑战"], "author_info": "zlinwzx: ", "url": "https://www.bilibili.com/video/BV1C34y187ej", "model": 0, "human": 2}
|
||||
{"aid": 837981513, "title": "【鏡音レン】君のバースデー!【オリジナル】", "description": "sm35526084\nレンくん4人盛り(^ω^ ≡ ^ω^)\nいとこに動画をプレゼント★´∀`★\n自分の誕生日の時も聞こう♪((‹( 'ω' )›))♪\nツンデレンに祝われたい\n\n\n君のバースデー!\n\n\n君の誕生日がまた来る度に\n僕と二人でお祝いしようね\nたまには休んで遊ぼうよ\n年に一度のバースデー\n\n君の誕生日が今年も来たね\nどんな所でお祝いしようか\n外で祝うのもいいけれど\n君のお部屋で祝おうよ\n\n僕がいるだけで幸せそうに\n笑ってくれるそんな君だけど\n今日くらいワガママ言ってよ\nどんな願いも叶えるよ\n\n君の誕生日がまた来る度に\n僕と二人でお祝いしようね\nたまには休んで遊ぼうよ\n年に一度のバースデー\n\n君は歳を取っていく\nそれでも僕の事を\nいつまでもいつまでも\n忘れないでいて\n\n\nPower 80\ncold 70\nSerious 27\nPower 48", "tags": ["镜音LEN"], "author_info": "bili_185456256: 账号已非本人使用", "url": "https://www.bilibili.com/video/BV1cg4y1672q", "model": 0, "human": 0}
|
||||
{"aid": 926929867, "title": "【约战×琴里×十六悲曲】浮夸 · 内心独白", "description": "本作品由冰枫の灵狐工作室团队人员制作——一个用爱发电的非商业团队\n喜欢的话多多支持我们哦!!!\n——约战不倒,陪你到老!\nbgm:浮夸-陈奕迅\n策划:羊羽333\n剪辑:羊羽333\n填词:羊羽333\n调音:羊羽333\n混音:羊羽333\n后期:羊羽333", "tags": ["有人能火,为什么不能是我", "五河琴里", "中文填词", "洛天依", "浮夸", "陈奕迅", "约会大作战", "VOCALOID", "约战", "热血"], "author_info": "羊羽333: 约战不倒陪你到老 群号:591946704", "url": "https://www.bilibili.com/video/BV12T4y1L7BQ", "model": 2, "human": 2}
|
||||
{"aid": 644900147, "title": "【大学理化生填词】ACE虚拟歌姬重置版", "description": "均为此前发布过的作品,本次使用ACE虚拟歌姬重置再次上传", "tags": ["化学", "生物", "填词", "物理"], "author_info": "耶律新吉乐呼: ", "url": "https://www.bilibili.com/video/BV1oY4y1M7ws", "model": 0, "human": 2}
|
||||
{"aid": 1207317, "title": "把切手指2×速度播放,就成了欢快的童谣~", "description": " sm10533832 Divaol 编辑器,Die难度。做这个score好久了,做好后一直在改动。", "tags": ["初音MIKU", "VOCALOID", "指切り"], "author_info": "湘西・林黛玉・Leua: 初音毒唯鼠了】擅长用赶尸系道法摄取网络喷子的魂魄为己用,令其厄运缠身一辈子。", "url": "https://www.bilibili.com/video/BV1xx411T7TG", "model": 0, "human": 0}
|
||||
|
253
filter/labeling_system.py
Normal file
253
filter/labeling_system.py
Normal file
@ -0,0 +1,253 @@
|
||||
import os
|
||||
os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"
|
||||
import os
|
||||
import json
|
||||
import random
|
||||
import sqlite3
|
||||
import torch
|
||||
import sys
|
||||
import tty
|
||||
import termios
|
||||
from sentence_transformers import SentenceTransformer
|
||||
from db_utils import fetch_entry_data, parse_entry_data
|
||||
from modelV3_4 import VideoClassifierV3_4
|
||||
|
||||
class LabelingSystem:
|
||||
def __init__(self, mode='model_testing', database_path="./data/main.db",
|
||||
output_file="./data/filter/labeled_data.jsonl", model_path=None,
|
||||
start_from=None, batch_size=50):
|
||||
# 基础配置
|
||||
self.mode = mode
|
||||
self.database_path = database_path
|
||||
self.output_file = output_file
|
||||
self.batch_size = batch_size
|
||||
self.start_from = start_from
|
||||
|
||||
# 模型相关初始化
|
||||
self.model = None
|
||||
self.sentence_transformer = None
|
||||
if self.mode == 'model_testing':
|
||||
self.model = VideoClassifierV3_4()
|
||||
self.model.load_state_dict(torch.load(model_path))
|
||||
self.model.eval()
|
||||
self.sentence_transformer = SentenceTransformer("Thaweewat/jina-embedding-v3-m2v-1024")
|
||||
|
||||
# 数据存储相关
|
||||
self.candidate_pool = []
|
||||
self.history = []
|
||||
self.current_index = -1 # -1表示未开始
|
||||
self.label_counts = {0: 0, 1: 0, 2: 0}
|
||||
self.existing_entries = self._load_existing_entries()
|
||||
self.existing_aids = set(entry['aid'] for entry in self.existing_entries)
|
||||
|
||||
# 初始化候选池
|
||||
self._load_more_candidates()
|
||||
|
||||
def _load_existing_entries(self):
|
||||
"""加载已有标注数据"""
|
||||
if not os.path.exists(self.output_file):
|
||||
return []
|
||||
|
||||
entries = []
|
||||
with open(self.output_file, "r") as fp:
|
||||
for line in fp:
|
||||
entry = json.loads(line)
|
||||
entries.append(entry)
|
||||
# 统计已有标注
|
||||
if 'label' in entry and self.mode == "labeling":
|
||||
self.label_counts[entry['label']] += 1
|
||||
elif 'human' in entry and self.mode == "model_testing":
|
||||
self.label_counts[entry['human']] += 1
|
||||
return entries
|
||||
|
||||
def _load_more_candidates(self):
|
||||
"""动态加载更多候选数据"""
|
||||
if self.mode == 'model_testing':
|
||||
# 从模型预测文件加载
|
||||
with open('data/filter/model_predicted.jsonl', 'r') as fp:
|
||||
new_candidates = []
|
||||
for line in fp:
|
||||
entry = json.loads(line)
|
||||
if entry['aid'] not in self.existing_aids:
|
||||
new_candidates.append(entry['aid'])
|
||||
else:
|
||||
# 从数据库随机加载
|
||||
conn = sqlite3.connect(self.database_path)
|
||||
cursor = conn.cursor()
|
||||
query = "SELECT aid FROM bili_info_crawl WHERE status = 'success'"
|
||||
params = ()
|
||||
if self.start_from is not None:
|
||||
query += " AND timestamp >= ?"
|
||||
params = (self.start_from,)
|
||||
cursor.execute(query, params)
|
||||
aids = [row[0] for row in cursor.fetchall()]
|
||||
conn.close()
|
||||
|
||||
new_candidates = [aid for aid in aids if aid not in self.existing_aids]
|
||||
|
||||
random.shuffle(new_candidates)
|
||||
self.candidate_pool.extend(new_candidates[:self.batch_size])
|
||||
|
||||
def _get_entry_details(self, aid):
|
||||
"""获取条目详细信息"""
|
||||
# 获取元数据
|
||||
title, description, tags, author_info, url = parse_entry_data(
|
||||
fetch_entry_data(self.database_path, aid)
|
||||
)
|
||||
|
||||
entry = {
|
||||
'aid': aid,
|
||||
'title': title,
|
||||
'description': description,
|
||||
'tags': tags,
|
||||
'author_info': author_info,
|
||||
'url': url
|
||||
}
|
||||
|
||||
# 模型预测
|
||||
if self.mode == 'model_testing':
|
||||
with torch.no_grad():
|
||||
logits = self.model(
|
||||
input_texts={
|
||||
"title": [title],
|
||||
"description": [description],
|
||||
"tags": [" ".join(tags)],
|
||||
"author_info": [author_info]
|
||||
},
|
||||
sentence_transformer=self.sentence_transformer
|
||||
)
|
||||
entry['model'] = torch.argmax(logits, dim=1).item()
|
||||
|
||||
return entry
|
||||
|
||||
def _save_entry(self, entry):
|
||||
"""保存标注结果"""
|
||||
|
||||
# 更新已有数据
|
||||
existing_index = next((i for i, e in enumerate(self.existing_entries)
|
||||
if e['aid'] == entry['aid']), None)
|
||||
if existing_index is not None:
|
||||
self.existing_entries[existing_index] = entry
|
||||
else:
|
||||
self.existing_entries.append(entry)
|
||||
|
||||
# 写入文件
|
||||
with open(self.output_file, "w") as fp:
|
||||
for entry in self.existing_entries:
|
||||
fp.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
||||
|
||||
def _display_entry(self, entry):
|
||||
"""显示条目信息"""
|
||||
os.system("clear")
|
||||
|
||||
# 计算全局统计
|
||||
global_total = sum(self.label_counts.values())
|
||||
global_ratios = {k: v/global_total if global_total > 0 else 0
|
||||
for k, v in self.label_counts.items()}
|
||||
|
||||
# 计算当前会话统计
|
||||
session_counts = self._get_session_counts()
|
||||
session_total = sum(session_counts.values())
|
||||
session_ratios = {k: v/session_total if session_total > 0 else 0
|
||||
for k, v in session_counts.items()}
|
||||
|
||||
# 显示统计信息
|
||||
print("Global Stats:")
|
||||
print(f"Count: {', '.join(str(count) for count in self.label_counts.values())} | "
|
||||
f"Ratios: {', '.join(f'{ratio * 100:.2f}%' for ratio in global_ratios.values())}")
|
||||
|
||||
print("\nSession Stats:")
|
||||
print(f"Count: {', '.join(str(count) for count in session_counts.values())} | "
|
||||
f"Ratios: {', '.join(f'{ratio * 100:.2f}%' for ratio in session_ratios.values())}")
|
||||
|
||||
# 显示条目信息
|
||||
print("\n" + "="*50)
|
||||
print(f"AID: {entry['aid']}")
|
||||
print(f"URL: {entry['url']}")
|
||||
print(f"Title: {entry['title']}")
|
||||
print(f"Tags: {', '.join(entry['tags'])}")
|
||||
print(f"Author Info: {entry['author_info']}")
|
||||
print(f"Description: {entry['description']}")
|
||||
|
||||
# 显示模式相关信息
|
||||
if self.mode == 'model_testing':
|
||||
print(f"\nModel Prediction: {entry.get('model', 'N/A')}")
|
||||
if 'human' in entry and entry['human'] is not None:
|
||||
print(f"Your Label: {entry['human']}")
|
||||
else:
|
||||
if 'label' in entry and entry['label'] is not None:
|
||||
print(f"Your Label: {entry['label']}")
|
||||
|
||||
def _get_session_counts(self):
|
||||
"""获取当前会话的标注统计"""
|
||||
session_counts = {0: 0, 1: 0, 2: 0}
|
||||
|
||||
# 遍历历史记录
|
||||
for entry in self.history:
|
||||
if self.mode == 'model_testing':
|
||||
if 'human' in entry and entry['human'] is not None:
|
||||
session_counts[entry['human']] += 1
|
||||
else:
|
||||
if 'label' in entry and entry['label'] is not None:
|
||||
session_counts[entry['label']] += 1
|
||||
|
||||
return session_counts
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
# 处理当前条目
|
||||
if self.current_index < 0:
|
||||
self.current_index = 0
|
||||
|
||||
if self.current_index >= len(self.history):
|
||||
if not self.candidate_pool:
|
||||
self._load_more_candidates()
|
||||
if not self.candidate_pool:
|
||||
print("\nAll entries processed!")
|
||||
return
|
||||
|
||||
# 处理新条目
|
||||
aid = self.candidate_pool.pop(0)
|
||||
entry = self._get_entry_details(aid)
|
||||
self.history.append(entry)
|
||||
self.current_index = len(self.history) - 1
|
||||
|
||||
current_entry = self.history[self.current_index]
|
||||
self._display_entry(current_entry)
|
||||
|
||||
# 获取用户输入
|
||||
print("\nLabel (0/1/2, s=skip, ←↑/→↓=nav, q=quit): ", end="", flush=True)
|
||||
cmd = self._get_input().lower()
|
||||
|
||||
# 处理命令
|
||||
if cmd in ['left', 'up']:
|
||||
self.current_index = max(0, self.current_index - 1)
|
||||
elif cmd in ['right', 'down']:
|
||||
self.current_index += 1
|
||||
elif cmd in ('0', '1', '2'):
|
||||
label = int(cmd)
|
||||
if self.mode == 'model_testing':
|
||||
current_entry['human'] = label
|
||||
else:
|
||||
current_entry['label'] = label
|
||||
self.label_counts[label] += 1
|
||||
self._save_entry(current_entry)
|
||||
self.current_index += 1
|
||||
elif cmd == 's':
|
||||
self.current_index += 1
|
||||
elif cmd == 'q':
|
||||
return
|
||||
|
||||
def _get_input(self):
|
||||
"""支持方向键检测的输入函数"""
|
||||
fd = sys.stdin.fileno()
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
try:
|
||||
tty.setraw(fd)
|
||||
ch = sys.stdin.read(1)
|
||||
if ch == '\x1b':
|
||||
seq = sys.stdin.read(2)
|
||||
return {'[A': 'up', '[B': 'down', '[C': 'right', '[D': 'left'}.get(seq, 'unknown')
|
||||
return ch
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
134
filter/tag.py
134
filter/tag.py
@ -1,124 +1,18 @@
|
||||
import sqlite3
|
||||
import json
|
||||
import random
|
||||
import os
|
||||
import sys
|
||||
import tty
|
||||
import termios
|
||||
import argparse
|
||||
from db_utils import fetch_entry_data, parse_entry_data
|
||||
from labeling_system import LabelingSystem
|
||||
|
||||
# 数据库路径
|
||||
DATABASE_PATH = "./data/main.db"
|
||||
# 输出文件路径
|
||||
OUTPUT_FILE = "./data/filter/labeled_data.jsonl"
|
||||
def getch():
|
||||
"""
|
||||
获取单个字符输入,无需回车
|
||||
"""
|
||||
fd = sys.stdin.fileno()
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
try:
|
||||
tty.setraw(sys.stdin.fileno())
|
||||
ch = sys.stdin.read(1)
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
||||
return ch
|
||||
|
||||
def fetch_random_aids(db_path, num_entries=10, start_from=None):
|
||||
"""
|
||||
从数据库中随机抽取指定数量的aid
|
||||
"""
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
# 构建查询语句
|
||||
query = "SELECT aid FROM bili_info_crawl WHERE status = 'success'"
|
||||
if start_from is not None:
|
||||
query += " AND timestamp >= ?"
|
||||
cursor.execute(query, (start_from,))
|
||||
else:
|
||||
cursor.execute(query)
|
||||
|
||||
aids = [row[0] for row in cursor.fetchall()]
|
||||
# 随机抽取指定数量的aid
|
||||
if len(aids) > num_entries:
|
||||
aids = random.sample(aids, num_entries)
|
||||
conn.close()
|
||||
return aids
|
||||
|
||||
def label_entries(db_path, aids):
|
||||
"""
|
||||
标注工具:展示条目信息,等待用户输入标签
|
||||
"""
|
||||
labeled_data = []
|
||||
label_counts = {0: 0, 1: 0, 2: 0}
|
||||
for aid in aids:
|
||||
data = fetch_entry_data(db_path, aid)
|
||||
title, description, tags, author_info, url = parse_entry_data(data)
|
||||
if not title: # 如果解析失败,跳过
|
||||
continue
|
||||
# 展示信息
|
||||
os.system("clear")
|
||||
print(f"Count: {label_counts[0]}, {label_counts[1]}, {label_counts[2]}")
|
||||
print(f"AID: {aid}")
|
||||
print(f"URL: {url}")
|
||||
print(f"Title: {title}")
|
||||
print(f"Tags: {', '.join(tags)}")
|
||||
print(f"Author Info: {author_info}")
|
||||
print(f"Description: {description}")
|
||||
# 等待用户输入
|
||||
while True:
|
||||
print("Label (0 or 1 or 2, s to skip, q to quit): ", end="", flush=True)
|
||||
label = getch().lower()
|
||||
if label in ["0", "1", "2", "s", "q"]:
|
||||
break
|
||||
print("\nInvalid input. Please enter 0, 1, 2, s or q.")
|
||||
if label == "s": # 跳过
|
||||
continue
|
||||
if label == "q": # 退出
|
||||
break
|
||||
# 更新计数
|
||||
label_counts[int(label)] += 1
|
||||
# 保存标注结果
|
||||
labeled_data.append({
|
||||
"aid": aid,
|
||||
"title": title,
|
||||
"description": description,
|
||||
"tags": tags,
|
||||
"author_info": author_info,
|
||||
"label": int(label)
|
||||
})
|
||||
return labeled_data
|
||||
|
||||
def save_labeled_data(labeled_data, output_file):
|
||||
"""
|
||||
将标注结果保存到文件
|
||||
"""
|
||||
with open(output_file, "a", encoding="utf-8") as f:
|
||||
for entry in labeled_data:
|
||||
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
||||
|
||||
def main():
|
||||
# 解析命令行参数
|
||||
parser = argparse.ArgumentParser(description="Label entries from the database.")
|
||||
parser.add_argument("--output", type=str, help="Output file path for labeled data.")
|
||||
parser.add_argument("--startFrom", type=float, help="Minimum timestamp for fetching entries.")
|
||||
args = parser.parse_args()
|
||||
|
||||
# 使用提供的输出文件路径或默认值
|
||||
output_file = args.output if args.output else OUTPUT_FILE
|
||||
start_from = args.startFrom
|
||||
|
||||
# 从数据库中随机抽取aid
|
||||
aids = fetch_random_aids(DATABASE_PATH, num_entries=1000, start_from=start_from)
|
||||
# 标注工具
|
||||
labeled_data = label_entries(DATABASE_PATH, aids)
|
||||
# 保存标注结果
|
||||
if labeled_data:
|
||||
save_labeled_data(labeled_data, output_file)
|
||||
print(f"Labeled data saved to {output_file}")
|
||||
else:
|
||||
print("No data labeled.")
|
||||
DEFAULT_OUTPUT = "./data/filter/labeled_data.jsonl"
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--output", type=str, default=DEFAULT_OUTPUT)
|
||||
parser.add_argument("--startFrom", type=float)
|
||||
args = parser.parse_args()
|
||||
|
||||
labeling_system = LabelingSystem(
|
||||
mode='labeling',
|
||||
output_file=args.output,
|
||||
start_from=args.startFrom,
|
||||
batch_size=50
|
||||
)
|
||||
labeling_system.run()
|
179
filter/test.py
179
filter/test.py
@ -1,173 +1,16 @@
|
||||
import os
|
||||
import json
|
||||
import random
|
||||
os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"
|
||||
import torch
|
||||
from modelV3_4 import VideoClassifierV3_4
|
||||
from sentence_transformers import SentenceTransformer
|
||||
import sys
|
||||
import tty
|
||||
import termios
|
||||
from db_utils import fetch_entry_data, parse_entry_data
|
||||
from labeling_system import LabelingSystem
|
||||
|
||||
DATABASE_PATH = "./data/main.db"
|
||||
BATCH_SIZE = 50 # 动态加载批次大小
|
||||
|
||||
class LabelingSystem:
|
||||
def __init__(self):
|
||||
# 初始化模型
|
||||
self.model = VideoClassifierV3_4()
|
||||
self.model.load_state_dict(torch.load('./filter/checkpoints/best_model_V3.8.pt'))
|
||||
self.model.eval()
|
||||
self.sentence_transformer = SentenceTransformer("Thaweewat/jina-embedding-v3-m2v-1024")
|
||||
|
||||
# 数据相关
|
||||
self.existing_entries = self._load_existing_entries()
|
||||
self.existing_aids = set(entry['aid'] for entry in self.existing_entries)
|
||||
self.candidate_pool = []
|
||||
self.history = []
|
||||
self.current_index = -1 # -1表示未开始
|
||||
|
||||
# 初始化第一批数据
|
||||
self._load_more_candidates()
|
||||
|
||||
def _save_entry(self, entry):
|
||||
"""保存或更新条目"""
|
||||
# 查找是否已存在
|
||||
existing_index = next((i for i, e in enumerate(self.existing_entries)
|
||||
if e['aid'] == entry['aid']), None)
|
||||
|
||||
# 更新或添加条目
|
||||
if existing_index is not None:
|
||||
self.existing_entries[existing_index] = entry
|
||||
else:
|
||||
self.existing_entries.append(entry)
|
||||
|
||||
# 重写整个文件
|
||||
with open("./data/filter/real_test.jsonl", "w") as fp:
|
||||
for entry in self.existing_entries:
|
||||
fp.write(json.dumps(entry, ensure_ascii=False) + "\n")
|
||||
|
||||
def _load_existing_entries(self):
|
||||
"""加载已有条目"""
|
||||
if not os.path.exists("./data/filter/real_test.jsonl"):
|
||||
return []
|
||||
|
||||
with open("./data/filter/real_test.jsonl", "r") as fp:
|
||||
return [json.loads(line) for line in fp]
|
||||
|
||||
def _load_more_candidates(self):
|
||||
"""动态加载更多候选数据"""
|
||||
with open('data/filter/model_predicted.jsonl', 'r') as fp:
|
||||
new_candidates = []
|
||||
for line in fp:
|
||||
entry = json.loads(line)
|
||||
if entry['aid'] not in self.existing_aids:
|
||||
new_candidates.append(entry['aid'])
|
||||
|
||||
# 随机打乱后取批次
|
||||
random.shuffle(new_candidates)
|
||||
self.candidate_pool.extend(new_candidates[:BATCH_SIZE])
|
||||
del new_candidates[:BATCH_SIZE] # 释放内存
|
||||
|
||||
def _get_entry_details(self, aid):
|
||||
"""获取条目详细信息并预测模型标签"""
|
||||
# 获取元数据
|
||||
title, description, tags, author_info, url = parse_entry_data(
|
||||
fetch_entry_data(DATABASE_PATH, aid)
|
||||
)
|
||||
|
||||
# 模型预测
|
||||
with torch.no_grad():
|
||||
logits = self.model(
|
||||
input_texts={
|
||||
"title": [title],
|
||||
"description": [description],
|
||||
"tags": [" ".join(tags)],
|
||||
"author_info": [author_info]
|
||||
},
|
||||
sentence_transformer=self.sentence_transformer
|
||||
)
|
||||
model_label = torch.argmax(logits, dim=1).item()
|
||||
|
||||
return {
|
||||
'aid': aid,
|
||||
'title': title,
|
||||
'description': description,
|
||||
'tags': tags,
|
||||
'author_info': author_info,
|
||||
'url': url,
|
||||
'model_label': model_label,
|
||||
'user_label': None
|
||||
}
|
||||
|
||||
def _display_entry(self, entry):
|
||||
"""显示条目信息"""
|
||||
os.system("clear")
|
||||
print(f"AID: {entry['aid']}")
|
||||
print(f"URL: {entry['url']}")
|
||||
print(f"Title: {entry['title']}")
|
||||
print(f"Tags: {', '.join(entry['tags'])}")
|
||||
print(f"Author Info: {entry['author_info']}")
|
||||
print(f"Description: {entry['description']}")
|
||||
print(f"\nModel Prediction: {entry['model_label']}")
|
||||
if entry['user_label'] is not None:
|
||||
print(f"Your Label: {entry['user_label']}")
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
# 处理当前条目
|
||||
if self.current_index < 0:
|
||||
self.current_index = 0
|
||||
|
||||
if self.current_index >= len(self.history):
|
||||
if not self.candidate_pool:
|
||||
self._load_more_candidates()
|
||||
if not self.candidate_pool:
|
||||
print("\nAll entries processed!")
|
||||
return
|
||||
|
||||
# 处理新条目
|
||||
aid = self.candidate_pool.pop(0)
|
||||
entry = self._get_entry_details(aid)
|
||||
self.history.append(entry)
|
||||
self.current_index = len(self.history) - 1
|
||||
|
||||
current_entry = self.history[self.current_index]
|
||||
self._display_entry(current_entry)
|
||||
|
||||
# 获取用户输入
|
||||
print("\nLabel (0/1/2, s=skip, ←↑/→↓=nav, q=quit): ", end="", flush=True)
|
||||
cmd = getch().lower()
|
||||
|
||||
# 处理导航命令
|
||||
if cmd in ['left', 'up']:
|
||||
self.current_index = max(0, self.current_index - 1)
|
||||
elif cmd in ['right', 'down']:
|
||||
self.current_index += 1
|
||||
elif cmd in ('0', '1', '2'):
|
||||
current_entry['human'] = int(cmd)
|
||||
self._save_entry(current_entry)
|
||||
self.current_index += 1 # 自动前进
|
||||
elif cmd == 's':
|
||||
self.current_index += 1 # 跳过
|
||||
elif cmd == 'q':
|
||||
return
|
||||
|
||||
def getch():
|
||||
"""支持方向键检测的输入函数"""
|
||||
fd = sys.stdin.fileno()
|
||||
old_settings = termios.tcgetattr(fd)
|
||||
try:
|
||||
tty.setraw(fd)
|
||||
ch = sys.stdin.read(1)
|
||||
if ch == '\x1b':
|
||||
seq = sys.stdin.read(2)
|
||||
return {'[A': 'up', '[B': 'down', '[C': 'right', '[D': 'left'}.get(seq, 'unknown')
|
||||
return ch
|
||||
finally:
|
||||
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
||||
MODEL_PATH = "./filter/checkpoints/best_model_V3.8.pt"
|
||||
OUTPUT_FILE = "./data/filter/real_test.jsonl"
|
||||
BATCH_SIZE = 50
|
||||
|
||||
if __name__ == "__main__":
|
||||
labeling_system = LabelingSystem()
|
||||
labeling_system = LabelingSystem(
|
||||
mode='model_testing',
|
||||
database_path=DATABASE_PATH,
|
||||
output_file=OUTPUT_FILE,
|
||||
model_path=MODEL_PATH,
|
||||
batch_size=BATCH_SIZE
|
||||
)
|
||||
labeling_system.run()
|
Loading…
Reference in New Issue
Block a user