离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope

简介: 制作双语字幕的方案网上有很多,林林总总,不一而足。制作双语字幕的原理也极其简单,无非就是人声背景音分离、语音转文字、文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如翻译字幕,那么有没有一种彻底离线的解决方案?让普通人也能一键制作双语字幕,成就一个人的字幕组?

zimu.jpg

制作双语字幕的方案网上有很多,林林总总,不一而足。制作双语字幕的原理也极其简单,无非就是人声背景音分离、语音转文字、文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如翻译字幕,那么有没有一种彻底离线的解决方案?让普通人也能一键制作双语字幕,成就一个人的字幕组?

人声背景音分离

如果视频不存在嘈杂的背景音,那么大多数情况下是不需要做人声和背景音分离的,但考虑到背景音可能会影响语音转文字的准确率,那么人声和背景音分离还是非常必要的,关于人声抽离,我们首先想到的解决方案当然是spleeter,但其实,阿里通义实验室开源的大模型完全不逊色于spleeter,它就是FRCRN语音降噪-单麦-16k,模型官方地址:

https://modelscope.cn/models/iic/speech_frcrn_ans_cirm_16k/summary

FRCRN语音降噪模型是基于频率循环 CRN (FRCRN) 新框架开发出来的。该框架是在卷积编-解码(Convolutional Encoder-Decoder)架构的基础上,通过进一步增加循环层获得的卷积循环编-解码(Convolutional Recurrent Encoder-Decoder)新型架构,可以明显改善卷积核的视野局限性,提升降噪模型对频率维度的特征表达,尤其是在频率长距离相关性表达上获得提升,可以在消除噪声的同时,对语音进行更针对性的辨识和保护。

需要注意的是该模型再Pytorch1.12上有bug,所以最好指定版本运行:

pip install pytorch==1.11 torchaudio torchvision -c pytorch

运行方式也很简单,通过pipeline调用即可:

from modelscope.pipelines import pipeline  
from modelscope.utils.constant import Tasks  


ans = pipeline(  
    Tasks.acoustic_noise_suppression,  
    model='damo/speech_frcrn_ans_cirm_16k')  
result = ans(  
    'test.wav',  
    output_path='output.wav')

语音转文字 faster-whisper

成功分离出人声,接着要做的就是语音转文字,这里选择faster-whisper,faster-whisper 是 OpenAI Whisper 模型的重新实现,使用了 CTranslate2,这是一个用于 Transformer 模型的快速推理引擎。相比于 openai/whisper,faster-whisper 的实现速度提高了 4 倍,同时内存占用更少。此外,faster-whisper 还支持在 CPU 和 GPU 上进行 8 位量化,进一步提高了效率。

pip install faster-whisper

随后编写转写代码:

def convert_seconds_to_hms(seconds):  
    hours, remainder = divmod(seconds, 3600)  
    minutes, seconds = divmod(remainder, 60)  
    milliseconds = math.floor((seconds % 1) * 1000)  
    output = f"{int(hours):02}:{int(minutes):02}:{int(seconds):02},{milliseconds:03}"  
    return output  

# 制作字幕文件  
def make_srt(file_path,model_name="small"):  


    device = "cuda" if torch.cuda.is_available() else "cpu"  

    if device == "cuda":  
        model = WhisperModel(model_name, device="cuda", compute_type="float16",download_root="./model_from_whisper",local_files_only=False)  
    else:  
        model = WhisperModel(model_name, device="cpu", compute_type="int8",download_root="./model_from_whisper",local_files_only=False)  
    # or run on GPU with INT8  
    # model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")  

    segments, info = model.transcribe(file_path, beam_size=5)  

    print("Detected language '%s' with probability %f" % (info.language, info.language_probability))  
    count = 0  
    with open('./video.srt', 'w') as f:  # Open file for writing  
        for segment in segments:  
            count +=1  
            duration = f"{convert_seconds_to_hms(segment.start)} --> {convert_seconds_to_hms(segment.end)}\n"  
            text = f"{segment.text.lstrip()}\n\n"  

            f.write(f"{count}\n{duration}{text}")  # Write formatted string to the file  
            print(f"{duration}{text}",end='')  

    with open("./video.srt", 'r',encoding="utf-8") as file:  
        srt_data = file.read()  

    return "转写完毕"

这里通过convert_seconds_to_hms方法来把时间戳格式化为标准字幕时间轴。

大模型翻译字幕

这里字幕翻译我们依然使用大模型,依然是阿里通义实验室的CSANMT连续语义增强机器翻译-英中-通用领域-large,模型官方地址:

https://modelscope.cn/models/iic/nlp_csanmt_translation_en2zh/summary

该模型基于连续语义增强的神经机器翻译模型,由编码器、解码器以及语义编码器三者构成。其中,语义编码器以大规模多语言预训练模型为基底,结合自适应对比学习,构建跨语言连续语义表征空间。此外,设计混合高斯循环采样策略,融合拒绝采样机制和马尔可夫链,提升采样效率的同时兼顾自然语言句子在离散空间中固有的分布特性。最后,结合邻域风险最小化策略优化翻译模型,能够有效提升数据的利用效率,显著改善模型的泛化能力和鲁棒性。

依然是通过pipeline进行调用:

# 翻译字幕  
def make_tran():  

    pipeline_ins = pipeline(task=Tasks.translation, model=model_dir_ins)  

    with open("./video.srt", 'r',encoding="utf-8") as file:  
        gweight_data = file.read()  

    result = gweight_data.split("\n\n")  

    if os.path.exists("./two.srt"):  
        os.remove("./two.srt")  

    for res in result:  

        line_srt = res.split("\n")  
        try:  
            outputs = pipeline_ins(input=line_srt[2])  
        except Exception as e:  
            print(str(e))  
            break  
        print(outputs['translation'])  

        with open("./two.srt","a",encoding="utf-8")as f:f.write(f"{line_srt[0]}\n{line_srt[1]}\n{line_srt[2]}\n{outputs['translation']}\n\n")  

    return "翻译完毕"

合并字幕

虽然字幕已经完全可以导入剪辑软件进行使用了,但是依然可以通过技术手段来自动化合并字幕,这里使用ffmpeg:

# 合并字幕  
def merge_sub(video_path,srt_path):  

    if os.path.exists("./test_srt.mp4"):  
        os.remove("./test_srt.mp4")  

    ffmpeg.input(video_path).output("./test_srt.mp4", vf="subtitles=" + srt_path).run()  

    return "./test_srt.mp4"

结语

笔者已经将上面提到的技术集成到了一个完整的项目之中,项目地址:

https://github.com/v3ucn/Modelscope_Faster_Whisper_Multi_Subtitle

操作简单,无须思考:

生成的双语字幕效果:

这也许是首个让普通人也能无脑操作的完全离线双语字幕制作方案。最后奉上整合包,以与众乡亲同飨:

https://pan.quark.cn/s/55248dcadfb6
相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
23天前
|
人工智能
AI大模型初体验
为了实现真正的A,需不断学习以提升能力。
57 3
AI大模型初体验
|
20天前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
13天前
|
机器学习/深度学习 人工智能 UED
OpenAI o1模型:AI通用复杂推理的新篇章
OpenAI发布了其最新的AI模型——o1,这款模型以其独特的复杂推理能力和全新的训练方式,引起了业界的广泛关注。今天,我们就来深入剖析o1模型的特点、背后的原理,以及一些有趣的八卦信息。
196 73
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
【9月更文挑战第4天】赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
|
3天前
|
人工智能 安全 算法
5年数据观巨变,这家公司如何在AI和大模型数据赛道遥遥领先?
5年数据观巨变,这家公司如何在AI和大模型数据赛道遥遥领先?
|
8天前
|
存储 人工智能 算法
阿里云AI基础设施升级亮相,模型算力利用率提升超20%
阿里云AI基础设施升级亮相,模型算力利用率提升超20%
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
AI人工智能大模型的架构演进
随着深度学习的发展,AI大模型(Large Language Models, LLMs)在自然语言处理、计算机视觉等领域取得了革命性的进展。本文将详细探讨AI大模型的架构演进,包括从Transformer的提出到GPT、BERT、T5等模型的历史演变,并探讨这些模型的技术细节及其在现代人工智能中的核心作用。
57 9
|
15天前
|
人工智能 自动驾驶 云计算
【通义】AI视界|谷歌大模型被盯上!欧盟最高隐私监管机构对PaLM2模型展开调查~
本文汇总了近24小时内科技领域的五大要闻:欧盟对谷歌PaLM2模型启动隐私合规调查;甲骨文推出Zettascale云计算集群,集成大量NVIDIA GPU强化计算力;红杉资本偏好AI应用投资而非模型构建;夸克新推智能助手CueMe,支持长达2万字内容生成;沃尔沃与NVIDIA合作,未来车型将采用后者先进芯片提升自动驾驶功能。以上内容由通义自动生成。
|
17天前
|
机器学习/深度学习 人工智能 供应链
【通义】AI视界|OpenAI的“草莓”模型预计两周内上线!像人类一样思考!
本文介绍了近期科技领域的五大亮点:OpenAI即将推出的新一代AI模型“草莓”,具备高级推理能力;亚马逊测试AI技术加速有声读物生产,通过语音克隆提高效率;Kimi API新增联网搜索功能,拓宽信息来源;顺丰发布物流行业专用大语言模型“丰语”,提升工作效率;钉钉推出“AI班级群”功能,改善家校沟通体验。更多详情,请访问[通义官网]。
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
AI战略丨物流 AI 新变化,用大模型定义
物流企业在大模型上纷纷主动探索,也在推动物流行业实现智能化加速。