人工智能最佳实践 -利用腾讯云录音文件识别,为没有字幕的视频自动生成字幕

发布于:2024-10-24 编辑:匿名 来源:网络

试想一下,当我们在观看视频时,如果字幕缺失,观看体验会不会大打折扣?近年来,短视频、直播等在线娱乐方式快速发展,直接刺激了旅游、电商、影视创作等行业新趋势。要呈现出好的视频效果,不仅考验良好的拍摄技术,后期处理也是重中之重。

以视频字幕为例。有字幕的视频总能流畅观看,而没有字幕的视频总感觉缺少了某种韵味。

事实上,纯手工添加字幕既费时又费力。面对长时间、批量的字幕处理,多少有些苦不堪言。

那么有没有更智能的方法呢?接下来,本文将分享如何使用录音文件识别服务为无字幕的视频自动生成字幕。 1.分析研究对无字幕的视频自动生成字幕。

其实就是先对视频文件导出的音频文件进行识别,得到识别出的文本,然后根据识别出的文本和短句的时间信息对视频srt字幕文件进行处理。在视频中将srt字幕文件导入到文件中即可得到效果。

实现思路如下: 1、使用ffmpeg从视频中提取音频 2、调用录音文件识别服务识别音频文件 3、对识别出的文本和短句的时间信息进行处理,得到视频srt字幕文件4、将同一个视频文件和srt文件命名在同一目录下,用暴风影音或者其他播放器打开即可得到带字幕的视频。二、代码开发 1、用ffmpeg从视频中提取音频的项目使用了ffmpeg依赖,需要先下载并安装,并设置环境变量。

之后就可以引入subprocess库,执行ffmpeg命令,启动一个新进程,完成音频提取。代码语言: javascript copy import subprocessdef extract_audio(video, tmpAudio):ret = subprocess.run('ffmpeg -version', shell=True)if ret.returncode != 0:print("请先安装 ffmpeg 依赖项并设置环境变量")returnret = subprocess.check_call(['ffmpeg', '-i', video, '-vn', '-ar', "0", tmpAudio], shell=False)if ret.returncode != 0 :打印(“错误:”,ret)2。

识别音频文件。我这里选择的录音文件识别服务是腾讯云ASR的录音文件识别。

通过研究,腾讯云的录音文件识别可以直接根据通话时的语句进行识别。智能断句、停顿时添加标点符号,无需调用其他接口进行分句。

同时,返回的结果数据也可以根据不同的需求进行选择,比如是否过滤脏词、是否过滤情态粒子等,具体的服务细节这里不再赘述。具体请参考官方文档和腾讯云ASR。

(1)访问腾讯云服务,需要SecertId和SecretKey。 API key可以在API key管理页面创建和查询,并可以稍后在config文件中进行配置。

作者的项目配置在tencent/config.py。代码语言:javascript copy class Config(object):OUTPUT_PATH = '/XXX/video-srt/audio/' #输出文件目录 APP_ID = '******' # 对应上面的 APPIDSECRET_ID = '***** *' # 对应上面的 SecretIdSECRET_KEY = '******' # 对应上面的 SecretKey (2) 使用官网提供的 sdk 找到腾讯云语音识别服务下录音文件识别的 API 文档,滑动到底部并找到开发者资源。

这里我选择调用Python SDK。可以看到录音文件识别是一个异步服务。

您可以通过CreateRecTask接口发送录音文件识别请求,然后通过DescribeTaskStatus接口查询识别结果。在笔者的项目中,函数create_rec和函数query_rec_task分别封装了CreateRecTask接口和DescribeTaskStatus接口。

详细介绍如下: CreateRecTask:除了需要的EngineModelType(引擎模型类型)、ChannelNum(识别通道数)、ResTextFormat(识别结果返回形式)、SourceType(语音数据源)等参数外,请求时,可以根据需要传入FilterDirty(是否过滤脏词)、FilterModal(是否过滤模态粒子)等参数。请求成功后,会返回RequestId、TaskId等信息。

代码语言:javascript copy def create_rec(engine_type, file_url):client = create_client(Config.SECRET_ID, Config.SECRET_KEY)req = models.CreateRecTaskRequest()params = {"ChannelNum": 1, "ResTextFormat": 2, "SourceType" : 0, "ConvertNumMode": 1}req._deserialize(params)req.EngineModelType = engine_typereq.Url = file_urltry:resp = client.CreateRecTask(req)logger.info(resp)requesid = resp.RequestIdtaskid = resp.Data.TaskIdreturn requesid, taskid except Exception as err:logger.info(traceback.format_exc())return None, None 这里有两个参数需要注意:一个是ResTextFormat。识别结果的返回形式有3种。

这里,作者后续生成srt文件时,也根据单句识别结果的标点符号进行了一层分离,所以我选择了“词级粒度的详细识别结果(包括标点符号、语速值)”如果不需要额外进行一层分割,直接使用“识别结果文本(含分段时间戳)”格式即可。第二个是 SourceType。

语音数据有两个来源,即语音URL和语音数据(帖子正文)。笔者这里选择的是语音URL。

具体实现是将本地音频上传到腾讯云的cos存储桶中,语音URL是固定的。地址+音频文件名即可调用。

还可以通过其他方式获取音频URL。代码语言: javascript copy import subprocessdef upload_file(tmpAudio): objectName = tmpAudio.split('/')[-1]ret = subprocess.run(['coscmd', '-s', 'upload', tmpAudio, objectName] , shell=False)if ret.returncode != 0:print("error:", ret)描述TaskStatus:请求时需要传入TaskId。

请求成功后,将返回RequestId和识别结果。代码语言: javascript copy def query_rec_task(taskid):client = create_client(Config.SECRET_ID, Config.SECRET_KEY)req = models.DescribeTaskStatusRequest()params = '{"TaskId":' + str(taskid) + '}'req. from_json_string(params)result = ""while True:try:resp = client.DescribeTaskStatus(req)resp_json = resp.to_json_string()logger.info(resp_json)resp_obj = json.loads(resp_json)if resp_obj["Data"][ "StatusStr"] == "成功":result = resp_obj["Data"]["ResultDetail"]breakif resp_obj["Data"]["Status"] == 3:return False, ""time.sleep(1) except TencentCloudSDKException as err:logger.info(err)return False, ""return True, result这里作者会根据ResultDetail信息生成srt文件,所以函数query_rec_task的返回值就是query_rec_task返回的数据中的ResultDetail描述任务状态接口。

3.对识别结果进行处理,生成srt字幕文件。除了根据调用接口已经自动分词的句子来标记时间之外,笔者这里生成的srt文件,当自动分词的句子长度较长时,还会结合当前句子的标点符号。

ResultDetail中的OffsetEndMs、StartMs、EndMs等信息将句子重新划分,避免一行显示过多字幕。代码语言:javascript copy def to_srt(src_txt):flag_word = [".", "?", "!", ","]basic_line = 15srt_txt = ""count = 1 for i in range(len(src_txt)): current_sentence = src_txt[i]["FinalSentence"] last_time = ms_to_hours(src_txt [i]["StartMs"]) len_rec = len(current_sentence) if len_rec > basic_line: start_rec = 0 last_time = ms_to_hours(src_txt[i]["StartMs"]) while(len_rec > basic_line): flag = True for j in flag_word: if j in current_sentence[start_rec:start_rec+basic_line]: loc_rec = current_sentence.index(j, start_rec, start_rec+basic_line) + 1 flag = False 中断 if flag: loc_rec = start_rec + basic_line current_txt = current_sentence[start_rec:loc_rec] + "\n" 开始时间= last_time end_time = ms_to_hours(src_txt[i]["Words"][loc_rec]["OffsetEndMs"]+src_txt[i]["StartMs"]) if current_sentence[start_rec:] != "" and current_sentence[start_rec:] != 无: srt_txt = srt_txt + str(count) + "\n" + start_time + "-->" + end_time + "\n" + current_txt + "\n" count += 1 start_rec = loc_rec last_time = end_time len_rec = len(current_sentence[loc_rec:]) current_txt = current_sentence[start_rec:] + "\n" start_time = last_time end_time = ms_to_hours(src_txt[i]["EndMs"]) 如果 current_sentence[start_rec:] != "" 且 current_sentence [start_rec:] != 无: srt_txt = srt_txt + str(count) + "\n" + start_time + "-->" + end_time + "\n&” + current_txt + "\n" 计数 += 1 否则: start_time = last_time end_time = ms_to_hours(src_txt[i]["EndMs"]) srt_txt = srt_txt + str(count) + "\n" + start_time + "- -> " + end_time + "\n" + current_sentence + "\n"+"\n" count += 1return srt_txt 这里srt文件最终生成的位置与Config文件中的OUTPUT_PATH有关 4.获取带字幕的视频。

(1)原始视频文件的名称必须与srt文件相同(2)选择打开方式(3)带字幕的视频至此,为不带字幕的视频生成字幕就已经实现了。完整的项目代码放在附录中,除了修改了一些配置。

人工智能最佳实践 -利用腾讯云录音文件识别,为没有字幕的视频自动生成字幕

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 内向基金完成首轮募资

    内向基金完成首轮募资

    据投资界8月27日消息,内向基金(洞察基金)正式完成首期基金首轮超亿元募资,目标规模2亿元,将重点关注消费升级领域的股权投资。 据了解,引进基金是与新经济精品投行“穆棉资本”联合设立的私募股权投资基金。 它是由孙婷婷和Stefanie应金峰共同创立的。 两人在风险投资行

    06-17

  • 东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! -元景家族

    东方航天完成近6亿元B轮融资,重力2号中大型可回收液体火箭加速! |远景家族 远景资本 远景资本 远景资本 微信 IDvisionpluscapital 关于专题 远景资本公众平台汇聚创新趋势,以分享启发 01-25 17:12发布于浙江 近日,东方空间完成近6亿元B轮融资,本轮投资被梁溪科技创新产业

    06-18

  • 晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    晶合集成电路股份有限公司今日在科创板挂牌,总市值近400亿元

    合肥市人民政府 据合肥市人民政府消息,5月5日,合肥市晶和集成电路股份有限公司在上海证券交易所上市。 成功登陆科创板,成为安徽省首家成功登陆资本市场的纯晶圆代工企业。 本次发行价格为19.86元。 超额配售选择权全额行使后,募集资金5500万元,在科创板上市公司融资规模

    06-06

  • 专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    专注绿色制氢技术,“动量守恒”完成数千万元天使轮融资

    投资界(ID:pedaily)5月29日消息,国内质子交换膜电解槽核心材料及器件提供商合肥动量守恒绿色动力节能股份有限公司(以下简称“动力节能”)近日正式完成领投方数千万元天使轮融资。 本次完成交割的天使轮领投方为当看同创资本,元和资本担任天使轮融资独家投资方。 本轮融

    06-18

  • 工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    工业互联网公司德云科技完成5亿元B轮融资,中金传化基金等联合领投

    投资界4月26日消息,近日,“新基建”全栈工业互联网产品提供商“退风科技完成5亿元B轮融资。 本轮融资由中金传输基金、深创投、交银国际、越秀金控联合领投,招商致远、青控招商、云启资本、亿唐宏图集成电路及互联网投资基金跟投老股东继续投资。 据悉,德丰科技在10个月内

    06-18

  • 2021年以来新设立基金规模已达5332.79亿元

    2021年以来新设立基金规模已达5332.79亿元

    Wind数据显示,截至2月3日,年初以来累计设立基金,发行规模7900万元。 其中,仅1月份就成立了一只基金,发行规模达4000万元,是继今年7月之后历史上第二高的单月发行规模。

    06-18

  • 登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    登特菲完成数千万Pre-A轮融资,持续加大研发投入和生态拓展

    投资界(ID:pedaily)4月24日消息,合肥登特菲医疗器械有限公司近日公告完成数千万元Pre-A轮融资。 本轮融资由海恒资本、宏博资本、创谷资本、合肥天使投资基金共同投资。 本轮融资完成后,登特菲将继续加大智能高端口腔医疗设备的创新研发,加大量产线建设,加速产品迭代和

    06-17

  • 安好时代:APP上线100天内用户数达数十万

    安好时代:APP上线100天内用户数达数十万

    2019年6月6日,北京安好时代科技发展有限公司发布了公司首款移动产品——安好APP,目前活跃用户量已达45万。 据悉,安好时代整合了大量医疗资源,打造了一支由数十名专职医生组成的团队。 不少医生入驻安好医生平台,开设个人诊所。 2019年6月28日,安好联合中国老年保健协会

    06-17

  • AI工具库详细介绍——Midjourney

    AI工具库详细介绍——Midjourney

    Midjourney是一款基于AI的图像生成工具,专注于通过文字描述创建高质量的视觉内容。 主要功能: 1.图像生成:Midjourney接受用户通过文字输入的描述,并将这些描述转换为详细的图片。 用户可以指定样式、主题、颜色和其他元素。 2.风格模仿:该工具能够模仿艺术家已知作品的各

    06-17

  • 长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    长期投资是一个可持续的问题,宜信财富宣布《资产配置策略指引》2018年将重点关注这些行业……

    2018年,全球宏观经济和各类资产的表现大幅超出市场年初的悲观预期。 它已经悄然到来。 新的一年,投资者可能面临全球经济、政策和政治环境的哪些变化?如何调整投资策略应对风险并实现资产增值?    据投资界1月10日消息,宜信财富正式发布《年资产配置策略指引》(以下简

    06-18

  • 罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    罗永浩评论坚果手机被废弃,王思聪被迫再次执行

    “罗哥,坚果没了”。 “嗯,是好事。 ”近日,字节跳动宣布暂停手机业务,原锤子科技团队成立的新石实验室,并入教育硬件团队。 业务方面,合并后的硬件团队将专注于教育领域,不再开发坚果手机、TNT显示器等其他无关产品。 坚果手机补充称,售后和系统维护将继续进行,手机

    06-17

  • 东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    东车日报|理想失败后车主被要求签署保密协议-特斯拉扩大Model S召回范围-丰田计划在日本停售凯美瑞

    阿维塔11单电机版纯电动SUV介绍华为官宣M5高端智能手机驱动版氪倡议:联合抵制网络水军。 比亚迪即将推出“云柴系统”,疑似与底盘有关。 比亚迪新专利:可通过静脉识别解锁车辆理想ONE突然断电,售后服务需要保密协议。 阿维塔11单电机纯电动SUV今日发布。 在晚间的新品发布

    06-21