python srt字幕转lrc歌词文件

这篇具有很好参考价值的文章主要介绍了python srt字幕转lrc歌词文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当想要把电影或者视频的音频转成mp3在手机或者设备上听的时候,或者是用来练英语听力的时候,那么,就需要把相关的srt字幕文件,转换成lrc的歌词文件。

搜了很多网上的,都没有这个代码,只有lrc转srt的。

没办法,只好自己写一个。

首先看下srt字幕文件的格式,因为我们是要把srt格式的文件,转换成lrc的

1
00:00:02,200 --> 00:00:04,120
Well, I have a question.

2
00:00:04,120 --> 00:00:05,760
I guess I'd like to know

3
00:00:05,760 --> 00:00:06,960
a little bit more about why

4
00:00:06,960 --> 00:00:08,760
you specifically chose

srt大概就是上面这种格式。

再来看下lrc歌词文件的格式

[00:02.20]Well, I have a question.
[00:04.12]I guess I'd like to know
[00:05.76]a little bit more about why
[00:06.96]you specifically chose

lrc就是上面的这种格式。

这里要提前说一下转换成lrc途中遇到的需要注意的事,lrc的时间戳是只在分钟内的,所以小时要转换成分钟数,添加到分钟数里面。

也就是lrc的时间戳只精确到分钟,这里要注意这一点。

最后上具体的转换的python代码

代码使用方式是用文件夹转换的,即srt字幕放在文件夹里,参数是传入文件夹的路径,然后在文件夹的外面新建"字幕转lrc"文件夹,批量输出转换的lrc歌词文件。

这里先给出这个代码文件的接口文章来源地址https://www.toymoban.com/news/detail-713641.html

    #srt字幕所在的文件夹,这里是文件夹转换,方便有多个字幕的时候,都放在这个文件夹,可以批量转换。
    dir_path=""
    zimu_to_lrc_get_file(dir_path)
import os
from natsort import ns, natsorted

import chardet

#获取编码格式,没有chardet库要安装
def get_code(filepath):
    with open(filepath,'rb') as f:
        return chardet.detect(f.read())['encoding']


#列表字符串拼接成字符
def list_to_str2(out_list):
    stryy = ""
    for ll in out_list:
        stryy = stryy + str(ll) + "\n"
    return stryy

#写入文本到文件
def write_file(filename,str1):
    print(f'写入文件')
    fo = open(filename, "w+", encoding='utf-8')
    fo.write(str1)
    fo.close()

#顺序读取
def read_content_order22_blank(filename):
    print(f'开头读取文本,顺序')
    fk3 = open(filename, "r", encoding=get_code(filename))
    grafk = fk3.readlines()
    fk3.close()

    aaby=[]
    #去掉换行符
    print(f'开头的去掉换行符')
    for ssij in grafk:
        ssij = str(ssij).replace("\n", "")
        if len(ssij)>0:
            aaby.append(ssij)

    return aaby

def tran_format(strtime):
    strtime=str(strtime).replace(" ","")

    t1dplace=str(strtime).find(",")
    lasnum=strtime[int(t1dplace)+1:int(t1dplace)+3]
    purenum=strtime[0:t1dplace]
    timelistaa=purenum.split(":")
    if str(timelistaa[0])!="00":
        dshu3=str(int(timelistaa[0])*60+int(timelistaa[1]))
    else:
        dshu3=timelistaa[1]
    dshu2=timelistaa[2]
    outtime=f"[{dshu3}:{dshu2}.{lasnum}]"

    return outtime





def zimu_to_lrc_get_file(dir_path):
    files = os.listdir(dir_path)
    files = natsorted(files, alg=ns.PATH)
    dirname = os.path.dirname(dir_path)
    outdir = dirname + "/字幕转lrc/"
    if not os.path.exists(f"{outdir}"):
        print("输出文件夹不存在,帮你自动创建好了")
        print("==================================")
        os.mkdir(f"{outdir}")

    exte_type = '.srt'
    for tt in files:
        exte_nam = os.path.splitext(tt)[1]
        exte_nam0 = os.path.splitext(tt)[0]
        if exte_nam:
            if str(exte_type) == str(exte_nam) :
                aab = dir_path + '/' + tt
                aab2 = dir_path + '/' + str(exte_nam0)+ ".txt"
                outaab=outdir+str(exte_nam0)+ ".lrc"
                os.rename(aab,aab2)
                filelist=read_content_order22_blank(aab2)

                wb=""
                outlist=[]

                for kk in filelist:
                    if not str(kk).isdigit():
                        if str(kk).find("-->")!=-1:
                            timenam=kk.split("-->")
                            time=tran_format(timenam[0])
                            wb=wb+time

                        else:
                            wb=wb+str(kk)
                    else:
                        if len(str(wb))>0:
                            outlist.append(wb)
                            wb = ""
                if len(str(wb)) > 0:
                    outlist.append(wb)
                    wb = ""

                stryy=list_to_str2(outlist)
                write_file(outaab, stryy)
                os.rename(aab2, aab)


if __name__ == '__main__':
    #srt字幕所在的文件夹,这里是文件夹转换,方便有多个字幕的时候,都放在这个文件夹,可以批量转换。
    dir_path=""
    zimu_to_lrc_get_file(dir_path)
    pass


到了这里,关于python srt字幕转lrc歌词文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 20230505使用amazon来批量翻译SRT格式的日语字幕为简体中文

    20230505使用amazon来批量翻译SRT格式的日语字幕为简体中文 2023/5/5 19:03 百度搜索:使用 amazon 批量翻译 请严重注意:可能会扣费的!       https://aws.amazon.com/cn/blogs/china/translating-documents-with-amazon-translate-aws-lambda-and-the-new-batch-translate-api-commented-by-bobzhang/ 亚马逊AWS官方博客 使用

    2024年02月02日
    浏览(30)
  • 使用剪映提取视频中的字幕并导出(txt或srt格式)

    需要使用 剪映电脑版 ,打开之后 第一步:选择“音频”—“音频提取”—“导入” 在弹出的界面中选择需要的导入的视频,或者直接将视频拖入到“导入”框中 第二步:将导入的视频拖到下方的音频轨道 第三步:识别字幕 依次选择“文本”—“智能字幕”—“开始识别”

    2024年02月06日
    浏览(83)
  • 【C#】Whisper 离线语音识别(微软晓晓语音合成的音频)(带时间戳、srt字幕)...

    语音合成语音识别 用微软语音合成功能生成xiaoxiao的语音。 用Whisper离线识别合成的语音输出srt字幕。 一、语音合成 参考这个网址:https://www.bilibili.com/read/cv19064633 合成的音频:晓晓朗读-温柔 二、Whisper 语音识别 下载模型后放入程序目录下: 请注意,主要示例目前仅使用

    2024年02月06日
    浏览(30)
  • Python的音视频文件处理

    ffmpeg-python 是 ffmpeg 的一个包装,通过 python 调用 ffmpeg 的 API ,实现高效的音视频文件处理 开始之前 安装 ffmpeg 安装 ffmpeg-python 参考 ffmpeg官方网站 ffmpeg-python的代码库与技术文档 技术背景 音视频文件处理流程 输入文件 ⟹ 解封装 已编码的数据包 ⟹ 解码 被编码的帧 ( 可进行

    2024年02月03日
    浏览(33)
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒

    2024年02月01日
    浏览(46)
  • Qt音视频开发34-不同库版本不同位数的库和头文件的引用

    做开发过程中难免遇到需要引入第三方库的时候,而且需要在不同库版本、不同系统、不同位数下都需要。第三方的库版本众多,一般在大版本中的小版本都是兼容的,但是大版本不兼容,比如ffmpeg目前就有1-6六个大版本,除去1几乎没人用那还剩5个大版本,目前主要还是4居

    2024年02月01日
    浏览(29)
  • 使用Python将《青花瓷》歌词生成词云图

    哈喽大家好,因为上次有小伙伴问我,歌曲的歌词和评论怎么生成词云图,想买代码… 当时我就拒绝了,直接免费送给了他。 所以今天来分享给大家 我们以周董的《青花瓷》为例,要对《青花瓷》歌词生成词云图,需要采取以下步骤: 安装所需的库 要完成该任务,需要安

    2024年02月07日
    浏览(26)
  • 使用Python开发一个自动给抖音视频点赞的功能

    目录 1、解释说明: 2、使用示例: 3、注意事项: Python是一种高级编程语言,广泛应用于软件开发、数据分析、人工智能等领域。在抖音这样的短视频平台上,用户可以对喜欢的视频进行点赞。本模块将介绍如何使用Python开发一个自动给抖音视频点赞的功能。 首先,需要安

    2024年02月04日
    浏览(39)
  • 用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

    本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者

    2024年02月03日
    浏览(68)
  • Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等

    用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw,将这个原始的音频流保存到mp4文件是会报错的,在调用avformat_write_header写文件头的时候提示(-22) Invalid argument,

    2024年04月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包