人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等

这篇具有很好参考价值的文章主要介绍了人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近打开百度网盘,看到播放视频有一个AI字幕功能,心情非常激动,看视频的同时可以看自动生成的字幕,防止听不清视频中人物的话语
然而不是SVIP,我试用过了之后就没有这个功能选项了
我在想,如果随便哪一个“免费”播放器,都可以一边播放视频,一边生成字幕,外文自动翻译,那不是牛哄哄?
看教程,看视频都可以方便很多,因为语音太杂了,听完后有时还要猜视频中的人物说的什么,尤其是倍速情况下,有了自动生成的字幕之后,都不再是问题
问题是如何达到这一点?当然喽,重点是免费,高效
当然,我已经实现了,Follow me!
文件都在这里,下载好文件一步步来就可以了
配置环境:

  • 系统: win10
  • ffmpeg:ffmpeg-5.1.2-essentials_build.zip
  • python:3.8.8
  • python包:vosk-0.3.45-py3-none-win_amd64.whl
  • 语音模型:vosk-model-cn-0.22

流程

设想这样一个情景,向视频播放器中塞进一个语音转文字模型,当它加载视频流的时候,一边提前读取视频流,用语音模型生成字幕,一遍播放已经生成字幕的视频,不就是如此吗?
先安装相关文件

安装ffmpeg

https://ffmpeg.org/download.html
这是官网
人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg
人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg
安装就是解压而已,然后在系统变量中添加文件中的bin路径
人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg
然后cmd输入命令,查看是否已经识别

ffmpeg –version

人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg

安装python包

自己从官网下再安装 https://pypi.org/
vosk-0.3.45-py3-none-win_amd64.whl放到目录下,

pip install  vosk-0.3.45-py3-none-win_amd64.whl

测试模型——对视频使用语音模型生成srt字幕,拖入视频播放器中

官网 模型文件下载地址https://alphacephei.com/vosk/models
先生成字幕文件
将想要识别语言类别的对应模型解压,想要识别中文语音就用中文模型,英文就用英文模型,日文就用日文模型等
需要注意的是先将视频文件,转成单通道wma语音文件,语音模型是对wma文件识别的,抛弃了对语音识别无用的图像信息

这里有一个自动的srt字幕生成,只需要将视频文件所在的目录设置好,就可以了,它可以为目录下所有的mp4文件生成srt字幕

from moviepy.editor import *
from moviepy.audio.fx.all import audio_left_right
from moviepy.audio.AudioClip import AudioArrayClip
import time
def list_files(path):
    fileMP4List = []
    fileSRTList = []
    count=1
    # 遍历目录下的所有文件和子目录,并输出
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.endswith("mp4"):
                fileMP4List.append([count,os.path.join(root, file)])
                count=count+1
            if file.endswith("srt"):
                fileSRTList.append(os.path.join(root, file)[:-4])
    for i in range(len(fileMP4List)):
        if fileMP4List[i][1][:-4] in fileSRTList:
            fileMP4List[i][1]+="    已有srt"
    return fileMP4List
def getWav(videoPath):
    print("提取音频")

    clip = VideoFileClip(videoPath)
    audio = clip.audio

    # 将音频转换为单通道
    audio_array = audio.to_soundarray()
    audio_left_right(audio_array)
    # 获取音频剪辑的持续时间
    duration = audio.duration
    # 将单通道音频转换为音频剪辑对象
    audio_mono = AudioArrayClip(audio_array, fps=audio.fps)
    newWavePath=videoPath[:-4]+'.wav'
    # 保存音频为WAV文件
    audio_mono.write_audiofile(newWavePath)
    print("音频生成完成,准备输出srt")
    return newWavePath
def getSrt(newWavePath):
    print("提取srt中...")
    print("开始加载识别模型")
    import subprocess
    import os
    import sys
    from vosk import Model, KaldiRecognizer, SetLogLevel
    SAMPLE_RATE = 16000
    SetLogLevel(-1)
    # 解压的模型文件,英文,中文用对应model
    getCn=r"D:\Mycode\pythonCode\voice_txt\code\model\cn\vosk-model-cn-kaldi-multicn-0.15"
    getCn1=r"D:\Mycode\pythonCode\voice_txt\code\model\cn\vosk-model-cn-0.22"
    getJP=r"D:\Mycode\pythonCode\voice_txt\code\model\jp\vosk-model-ja-0.22"
    getEn=r"D:\Mycode\pythonCode\voice_txt\code\model\en\vosk-model-en-us-0.42-gigaspeech"
    model = Model(getCn)
    print("模型加载完毕,开始识别...")
    rec = KaldiRecognizer(model, SAMPLE_RATE)
    # 修改需要识别的语音文件路径
    wavPath=newWavePath
    rec.SetWords(True)
    result = []
    with subprocess.Popen(["ffmpeg", "-loglevel", "quiet", "-i",
                                wavPath,
     "-ar", str(SAMPLE_RATE) , "-ac", "1", "-f", "s16le", "-"],
     stdout=subprocess.PIPE).stdout as stream:
        word=rec.SrtResult(stream)
        result.append(word)
        print(word)
    print(result)
    # 生成srt文件
    output = open(wavPath[:-4]+'.srt','w')
    output.write("\n".join(result))
    output.close()
    print("srt输出完成")
    os.remove(wavPath)
while(1):
    # 列出当前目录下的所有文件和子目录
    filePath = r"E:"
    allFile = list_files(filePath)
    for i in range(0, len(allFile)):
        if  "已有srt" in allFile[i][1]:
            pass
        else:
            videoPath = allFile[i][1]
            print("开始识别的文件为:"+videoPath)
            try:
                getSrt(getWav(videoPath))
            except:
                pass
            time.sleep(3)
    #     print("序号:" + str(allFile[i][0]) + "  路径:" + str(allFile[i][1]))
    # orderNumber = input("请选择视频文件\n")
    # videoPath = allFile[int(orderNumber) - 1][1]
    # print("srt生成预备中...")
    # getSrt(getWav(videoPath))

如果想要单条,可以麻烦点手动,下面这个是以前的,手动将视频转成声音文件,上面的是升级过的,自动在代码里转化了
古老的:
格式工厂
人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg
将代码中的音频文件换一下位置,模型文件换个解压好的名字,等待输出就行了
如果报错wma非pcm开头等等,请确认一下wma文件是否是单通道,测试中发现格式工厂使用高质量输出可以,保持原采样率,如果降低质量则识别失败,使用中保持原始采样率即可,单改通道

import subprocess
import os
import sys
from vosk import Model, KaldiRecognizer, SetLogLevel
SAMPLE_RATE = 16000
SetLogLevel(-1) 
# 解压的模型文件,英文,中文用对应model
model = Model(r"C:\Users\Administrator\MyFileLi\AIPrograms\model_cn")
rec = KaldiRecognizer(model, SAMPLE_RATE)
# 修改需要识别的语音文件路径
wavPath=r"D:\FFOutput\课时1.wma"
rec.SetWords(True)
result = []
with subprocess.Popen(["ffmpeg", "-loglevel", "quiet", "-i",
                            wavPath,
 "-ar", str(SAMPLE_RATE) , "-ac", "1", "-f", "s16le", "-"],
 stdout=subprocess.PIPE).stdout as stream:
    result.append(rec.SrtResult(stream))
print(result)
# 生成srt文件
output = open(wavPath.split("\\")[-1].split(".")[:-1][0]+'.srt','w')
output.write("\n".join(result))
output.close()

将srt拖入视频,输出

人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等,开发软件,人工智能,音视频,ffmpeg文章来源地址https://www.toymoban.com/news/detail-539086.html

到了这里,关于人工智能——离线情况下自动给视频添加字幕,支持中文,英文,日文等等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 人工智能安全:利用人工智能自动化攻击防御

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着人工智能技术的快速发展,大量的个人数据、敏感信息存储在互联网上,人工智能攻击日益猖獗。为了保护个人隐私与数据安全,人工智能安全技术应运而生。人工智能安全技术主要通过模拟人类思维,检测和防御人工

    2024年02月16日
    浏览(62)
  • 用人工智能压缩视频的尝试

    设计一个神经元网络,它有(x, y, t)三个输入,有(R, G, B)三个输出,中间有许多隐藏层。x和y是视频的横纵坐标,t是帧数。输入(x, y, t),输出一个像素,即(R, G, B)。 2K视频为2048×1080分辨率,2小时的视频大约3.0GB。取其1%作为神经元网络的预期压缩率,即30MB。 以前的博客中有8比

    2023年04月14日
    浏览(31)
  • 自动驾驶软件和人工智能

    自动驾驶汽车的核心在于其软件系统,而其中的机器学习和深度学习技术是使车辆能够感知、理解、决策和行动的关键。本文将深入探讨这些技术在自动驾驶中的应用,包括感知、定位、路径规划以及道路标志和交通信号的识别。 机器学习和深度学习在自动驾驶中的应用是实

    2024年02月07日
    浏览(57)
  • 人工智能与自动驾驶:智能出行时代的未来之路

           首先,我们先来说下什么是人工智能, 人工智能 (Artificial Intelligence,简称AI)是一门研究如何使计算机系统能够模拟、仿真人类智能的技术和科学领域。它涉及构建智能代理,使其能够感知环境、理解和学习知识,以及通过推理、决策和问题解决等方式与环境进行

    2024年02月03日
    浏览(68)
  • 走进人工智能|自动驾驶 开启智能出行新时代

    自动驾驶,也被称为无人驾驶或自动驾驶汽车,是指能够在没有人类干预的情况下自主地感知环境、决策和控制车辆行驶的技术和系统。 自动驾驶汽车是一种通过电脑系统实现无人驾驶的智能汽车。这种车辆依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作

    2024年02月14日
    浏览(48)
  • InVideo AI:用人工智能轻松制作视频

    InVideo AI 是一款在线视频制作工具,使用人工智能来帮助用户快速、轻松地制作高质量的视频。该工具提供多种功能,包括: 链接: ai.invideo.io 历史记录:  创建视频: 选择模板:youtube explainer 加入提示词: 输入时长:15秒 输入标题: 输入正文: 选择背景音乐: 选择性别

    2024年02月09日
    浏览(43)
  • 如何用人工智能自动玩游戏

    让AI玩游戏的思想早在上世纪就已经有了,那个时候更偏向棋类游戏。像是五子棋、象棋等。在上世纪“深蓝”就击败了国际象棋冠军,而到2016年“Alpha Go”击败了人类围棋冠军。 到现在,AI涉略的不仅仅是棋类游戏。像是超级马里奥、王者荣耀这种游戏,AI也能有比较好的表

    2024年02月12日
    浏览(56)
  • 自动驾驶技术:人工智能驾驶的未来

    自动驾驶技术是一种利用计算机视觉、机器学习、人工智能等技术,以实现汽车在无人干预的情况下自主行驶的技术。自动驾驶技术的发展将重塑汽车行业,为人类带来更安全、高效、舒适的交通体系。 自动驾驶技术的主要组成部分包括: 传感器系统:负责获取车辆周围的

    2024年02月20日
    浏览(84)
  • AI人工智能一键图片/视频换脸-Roop

    Roop 换脸技术是一种基于深度学习的人脸图像处理技术。 Roop换脸技术的实现主要分为两个步骤: 人脸检测与对齐 、 特征融合与生成 。 1.人脸检测与对齐在Roop换脸技术中,首先需要对输入的图像进行人脸检测与对齐。这一步骤的目的是确保输入的两张图像中的人脸位置和角

    2024年02月13日
    浏览(53)
  • 如何使用生成式人工智能探索视频博客的魅力?

    视频博客,尤其是关于旅游的视频博客,为观众提供了一种全新的探索世界的方式。通过图像和声音的结合,观众可以身临其境地体验到旅行的乐趣和发现的喜悦。而对于内容创作者来说,旅游视频博客不仅能分享他们的旅行故事,还能吸引关注,甚至实现变现。本文将指导

    2024年03月14日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包