吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1766|回复: 37
收起左侧

[原创工具] 中英歌词自动分行小工具

  [复制链接]
wulingtuming 发表于 2024-8-5 15:01
使用音乐标签软件对FLAC格式的英文歌曲添加歌词时,自动匹配的歌词的中文和英文是混在一行的。
例如:“[00:07.50]Some days 很多时候”
想要让播放器在播放时更加美观的双行显示就需要把它改为:
[00:07.50]Some days
[00:07.50]很多时候。
当面对几十首歌曲时一句一句的改动费时费力,于是用Python做了一个小工具,循环自动将一行中英混合歌词分离成英文歌词+中文歌词两行显示,最终结果输出为TXT文档,方便复制,小工具开发的着急,勉强能用,可能还有不少缺陷,附上源码,有需要的可以完善使用。小工具下载地址:https://love-mei.lanzoue.com/iWpSm26lfp4j密码:9bpw


[Python] 纯文本查看 复制代码
import re
from datetime import datetime


def find_chinese_in_english_sentence_include_s(sentence1):
    chinese_pattern = re.compile(r'[\u4e00-\u9fa5]+\s+[\u4e00-\u9fa5]*')
    matches = chinese_pattern.findall(sentence1)
    return ''.join(matches)


def find_chinese_in_english_sentence(sentence2):
    chinese_pattern = re.compile(r'[\u4e00-\u9fa5]+')
    matches = chinese_pattern.findall(sentence2)
    return ''.join(matches)


while 1:
    # 修正
    sentence = []

    while True:
        s = input('粘贴后敲敲回车:')
        sentence.append(s)
        if s == '':
            break

    lrc = []

    for i in sentence:

        # 消除片头信息影响
        if 'by:' not in i:
            if '作词' not in i:
                if '作曲' not in i:

                    # 判断中文是否带有空格并分类执行修正
                    get_time = i[:10]
                    chinese_content = find_chinese_in_english_sentence_include_s(i)
                    if chinese_content == '':
                        chinese_content = find_chinese_in_english_sentence(i)

                        # 消除带有时间码的自然空行
                        if chinese_content == '':
                            lrc.append(get_time)
                        else:
                            lrc.append(i.replace(chinese_content, ''))
                            lrc.append(get_time + chinese_content)
                    else:
                        lrc.append(i.replace(chinese_content, ''))
                        lrc.append(get_time + chinese_content)
                else:
                    lrc.append(i)
            else:
                lrc.append(i)
        else:
            lrc.append(i)

    # 获取当前精准时间
    now = datetime.now()

    # 获取当前时间的时间戳
    timestamp = now.timestamp()

    # 输出
    for lr in lrc:
        print(lr)

        # 打开文件,以追加模式
        with open(str(timestamp) + '_output.txt', 'a') as file:
            # 写入内容
            file.write(lr + '\n')


附图:原歌词、输出文件和结果

免费评分

参与人数 7吾爱币 +11 热心值 +7 收起 理由
yuren008 + 1 + 1 我很赞同!
love008 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
远方呢 + 1 我很赞同!
Chance_zbc + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
HZ62091 + 1 + 1 谢谢@Thanks!
zcg0717 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wulingtuming 发表于 2024-8-6 01:53
Chance_zbc 发表于 2024-8-5 23:05
大佬厉害,能否开发个将 '分轨音频歌词' 合并为 ‘整轨音频歌词’ 的工具。

我个人喜欢将分轨 ...

不算大佬,就是python初学做的小工具,可以详细描述一下吗,我没有接触过分轨和整轨音频歌词

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Chance_zbc + 1 + 1 热心回复!

查看全部评分

Chance_zbc 发表于 2024-8-8 13:15
本帖最后由 Chance_zbc 于 2024-8-8 13:17 编辑
wulingtuming 发表于 2024-8-6 01:53
不算大佬,就是python初学做的小工具,可以详细描述一下吗,我没有接触过分轨和整轨音频歌词

分轨就是指单曲嘛,所以歌词开始时间始终是 00'00''00 ……
但是整轨不同,因为整轨是将整个专辑的所有单曲拼合在一起了,变成了一个FLAC文件,所以歌词文件也得合成为一个。

比如说一个EP专辑有3首歌曲,第1首总时长为 00'03''30 ;第2首总时长为 00'04''20 ;第3首总时长为 00'03''50 ;
歌词合并之后就要考虑这个时长增量的问题。

例如:第2首歌的歌词开始时间是第1首歌的结束时间,即 00'03''30,而第3首歌的歌词开始时间是第2首的结束时间,即 00'07''50 ;
如果专辑曲目更多,也是依此类推,即前面曲子时长之和,即是下一首曲子的歌词的开始时间。

当然也有部分整轨音频文件可能会在分轨音频中(开头或结尾处)加入短时间的空白时长
这个可以暂时不考虑,可以后期再完善。
xbswa 发表于 2024-8-5 21:06
s124348 发表于 2024-8-5 22:31
可以可以
Chance_zbc 发表于 2024-8-5 23:05
本帖最后由 Chance_zbc 于 2024-8-5 23:11 编辑

大佬厉害,能否开发个将 '分轨音频歌词' 合并为 ‘整轨音频歌词’ 的工具。

我个人喜欢将分轨音频合并为整轨,方便进行音乐标签和磁盘管理,这就发现一个问题,整轨的FLAC音频只能内置一个歌词文件!
因此,我们就必须将所有分轨的歌词合并为一个LRC文件,还要去考虑每首歌合并后的时间增量,来保证歌词的同步,最后再内置到FLAC里边。

…无奈自己又不会敲代码,只能在网上找找
可能这个需求可能有点小众,全网都搜罗了一圈,也没见过类似工具。
搜到的所谓的歌词合并,要么是将中文和英文歌词的两个文件,合并为一个文件的功能,要么就是楼主做的这种换行的工具了……
husay 发表于 2024-8-6 00:08
学习了,真不错!
没头脑和温柚 发表于 2024-8-6 00:13
好活 解决了下载在线歌词有时候分行有时候不分行的痛点
ot1686 发表于 2024-8-6 01:10
感谢大佬分享这个好用的工具,这下翻译中英文歌词方便多了!
dk19910806 发表于 2024-8-6 06:14
厉害了,感谢大佬
龍謹 发表于 2024-8-6 07:14
专用工具,实用性强,还是PY源码。很好!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-10 07:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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