您的位置:首页 > 房产 > 家装 > 沈阳网红打卡旅游景点_南京app开发定制_推广自己的产品_长沙网站关键词推广

沈阳网红打卡旅游景点_南京app开发定制_推广自己的产品_长沙网站关键词推广

2024/12/22 12:43:29 来源:https://blog.csdn.net/ZVAyIVqt0UFji/article/details/144547548  浏览:    关键词:沈阳网红打卡旅游景点_南京app开发定制_推广自己的产品_长沙网站关键词推广
沈阳网红打卡旅游景点_南京app开发定制_推广自己的产品_长沙网站关键词推广

在日常学习生活中,许多有价值的资料都是非中文的,例如 Andrej Karpathy 推出的几个与大模型相关的视频,例如经久不衰的 MIT 6.824 分布式系统课程,这些视频系统地讲解了特定领域的知识,时长较长,往往从一小时起步。如果逐句翻译,将耗费大量时间。然而,随着大型模型技术的快速发展,我们可以利用这些技术来翻译和学习这些视频,使我们的学习之路更加顺畅。本文将介绍如何使用 Whisper、Ollama 和 FFmpeg 组建一套完善的非中文视频翻译流程。

whipser 是由 OpenAI 开源的一个基于大规模弱监督实现的语音识别工具,它支持识别超过一百种语言。

1576ac2405bcbe620a941427f9ffbba6.png

此外,Whisper 还可以翻译识别到的语言,但它仅支持将结果翻译为英文,无法满足我们对中文的需求。因此,我们需要借助 Ollama 对语音识别的结果进行进一步处理。

ollama 可以快速部署并运行大模型服务,支持几乎所有的主流大模型,让开发者可以像管理容器和镜像一样管理大模型,通过使用 ollama 部署智脑,Qwen 等大语言模型,我们可以将 Whisper 识别的字幕翻译为中文。

最后,我们使用 FFmpeg 这一视频处理软件,将字幕与原视频合并,实现流畅的观看体验。

1

bee30ca3bcad64073167704e393afee2.gif

具体步骤

1. 使用 whipser 提取字幕

whisper 的安装和使用都很简单,首先执行下面的命令安装

pip install -U openai-whisper

安装后,运行下面的命令即可从视频中提取 srt 格式的字幕

 
whisper video.mp4 --model turbo --language en --output_format srt

详细解释下每个参数的作用:

video.mp4 即需要处理的视频

--model 参数指定使用什么模型,whisper 目前支持六种模型,分别是 tiny,base,small,medium,large 和 turbo,模型越大识别效果越好,但相应的识别速度也会更慢,但 turbo 模型不同,turbo 模型是 large 模型的优化版,它提供了与 large 模型相同的识别效果,并且识别速度是 large 模型的 8 倍,比 base 模型还要快,所以这里推荐使用 turbo 模型

--language 参数指定了视频的源语言是什么,即使不指定这个参数,whisper 也会智能识别出视频的语言。

--output_format 用来设置输出的文件为什么格式,目前支持 txt,vtt,srt,tsv 和 json,每种文件都有其对应的用途,我们只需要字幕,所以此参数只设置 srt 即可,若不设置这个参数,则输出所有格式的文件。

2. 使用 ollama 将字幕翻译为中文

输出结果如下图所示,有字幕索引,时间轴和字幕的具体内容。

7c349f42f97356217936e3b0b7b7be1f.png

接下来就需要处理这些英语字幕,我们可以选择各种翻译软件,也可以选择通过本地部署的大模型来翻译,在本文中,我们使用 ollama 部署的大模型来翻译这些字幕,这样做的原因如下:首先本地部署大模型保证了安全性、隐私性,其次通过大模型翻译可以有更高的灵活度,我们可以对翻译后的语气、专业词汇等做进一步调整。

我们选择 qwen2.5 32B 模型来进行翻译。国产模型对于中文有更好的处理效果。32B 模型是精确度和推理速度上比较适中的选择。

使用大语言模型翻译字幕时,需要注意以下几个关键点:

  1. 在翻译字幕时,如果将字幕文件整个输入到大模型进行推理,字幕索引和时间轴会对推理产生不利影响,并且如果字幕过大,也有可能超出模型的上下文长度限制,所以需要解析字幕文件,将字幕内容识别出,每句单独输入大模型。

  2. 要特别注意与字幕一同输入大模型的 prompt,大模型在微调时,往往会被要求有更“积极”的表现,所以在做翻译任务时,可能会输出除译文外其他的文本,这些文本可能是纠错的,也可能是解释字幕的。我们需要让大模型只输出译文,不输出其他文本。

基于上面的要求,优化后的代码如下:

 
import requests
import redef parse_srt(content):"""解析SRT文件内容,返回字幕块列表"""pattern = r'(\d+)\n(\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3})\n((?:.*?\n)*?)(?:\n|$)'matches = re.findall(pattern, content, re.MULTILINE)return matchesdef translate_text(text):"""调用Ollama API翻译单个文本"""prompt = """你是一个专业的翻译助手。请将以下英文翻译成中文。
要求:
1. 只输出翻译后的中文文本
2. 不要添加任何解释或额外的文字
3. 翻译要准确、自然、符合中文表达习惯英文文本:
"""data = {"model": "qwen2.5:32b","prompt": prompt + text.strip(),"stream": False}try:response = requests.post('http://{ollamaapi}/api/generate', json=data,timeout=60)response.raise_for_status()result = response.json()return result['response'].strip()except Exception as e:print(f"翻译出错: {str(e)}")return textdef translate_srt(input_file, output_file):# 读取SRT文件with open(input_file, 'r', encoding='utf-8') as f:content = f.read()# 解析字幕文件subtitle_blocks = parse_srt(content)# 准备输出内容output_content = ""# 逐块翻译total_blocks = len(subtitle_blocks)for i, block in enumerate(subtitle_blocks, 1):number = block[0]timestamp = block[1]text = block[2].strip()print(f"正在翻译第 {i}/{total_blocks} 条字幕...")translated_text = translate_text(text)print(translated_text)# 组装字幕块output_content += f"{number}\n{timestamp}\n{translated_text}\n\n"# 保存翻译结果with open(output_file, 'w', encoding='utf-8') as f:f.write(output_content)print(f"翻译完成!结果已保存到 {output_file}")if __name__ == "__main__":dir_path = "[1hr Talk] Intro to Large Language Models"input_file = f"{dir_path}/en.srt"output_file = f"{dir_path}/zh.srt"translate_srt(input_file, output_file)

翻译后的字幕中文字幕如下;

1d7f57d41b95b67414873219b39d853f.png

3. 使用 ffmpeg 将字幕与视频合并

经过了前面的步骤,我们获得了英文和中文的字幕,这些字幕与视频是独立的。在视频播放时,需要手动关联才能看到字幕,增加了操作步骤,这时,我们可以使用 FFmpeg 将两个字幕合并到视频中,将三个文件合成为一个文件,实现流畅的观看体验。FFmpeg 是一个专业处理音视频的软件,几乎所有与视频相关的操作都可以使用它完成。

执行下面的命令合并视频与字幕

 
ffmpeg -i \[1hr\ Talk\]\ Intro\ to\ Large\ Language\ Models.mkv -i zh.srt -i en.srt -c:v copy -c:a copy -c:s srt -map 0 -map 1 -map 2 output.mkv

参数解释:

-i \[1hr\ Talk\]\ Intro\ to\ Large\ Language\ Models.mkv  输入视频

-i zh.srt 输入中文字幕

-i en.srt 输入英文字幕

-c:v copy: 复制视频流,不重新编码,可以提升合并速度

-c:a copy: 复制音频流,不重新编码,可以提升合并速度

-c:s srt: 使用 srt 格式处理字幕

-map 0: 包含第一个输入文件(视频)的所有流

-map 1: 包含第二个输入文件(中文字幕)

-map 2: 包含第三个输入文件(英文字幕)

4. 最终结果

我们可以选择开启英文或中文字幕,也可选择两个字幕同时开启。帮助我们更好理解视频原意。

2de8b9233be81ee61de5439eea85e7ad.png

2

5ba5bd2f0e909b5e85c61b0a0721f6d7.gif

继续优化

在使用 whisper 和 ollama 时,我们都可以使用 GPU 进行加速,速度可以提升几十上百倍。此时天纪TAI 平台就是最佳的选择,TAI 平台提供 P4,T4,L20,A100,H800 等多种计算资源,此外 TAI 平台还支持交互式建模、分布式训练、服务部署,弹性任务等多种任务类型,以实现多种 GPU 资源使用方式。

参考引用:

https://openai.com/index/whisper/

https://github.com/ollama/ollama

https://github.com/openai/whisper


更多技术和产品文章,请关注👆

如果您对哪个产品感兴趣,欢迎留言给我们,我们会定向邀文~

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。
目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。
智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。
官网:https://zyun.360.cn 或搜索“360智汇云”
客服电话:4000052360
欢迎使用我们的产品!😊

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com