OpenAI Whisper + FFmpeg + TTS:动态实现跨语言视频音频翻译

这篇具有很好参考价值的文章主要介绍了OpenAI Whisper + FFmpeg + TTS:动态实现跨语言视频音频翻译。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文作者系360奇舞团前端开发工程师

摘要:

本文介绍了如何结合 OpenAI Whisper、FFmpeg 和 TTS(Text-to-Speech)技术,以实现将视频翻译为其他语言并更换声音的过程。我们将探讨如何使用 OpenAI Whisper 进行语音识别和翻译,然后使用 FFmpeg 提取视频音轨和处理视频,最后使用 TTS 技术生成新的语音并替换原视频的音轨。通过这种方式,我们可以为视频添加新的语言版本,同时保持其原始视觉内容。

引言:

现如今,全球范围内的视频内容正在迅速增长,跨语言传播和多语言支持成为了一个重要的需求。但是,手动为视频添加不同语言的字幕或配音可能非常耗时且昂贵。本文将介绍一种利用 OpenAI Whisper、FFmpeg 和 TTS 技术的方法,使我们能够将视频翻译为其他语言并更换声音,以满足多语言需求,同时降低成本和时间。

  1. OpenAI Whisper:是一种强大的语音识别模型,能够将语音转换为文本,并支持多种语言。我们将使用 Whisper 将视频中的原始语音提取为文本,并通过翻译服务将其转换为目标语言的文本。

  2. FFmpeg:处理视频和音轨提取接下来,我们使用 FFmpeg 工具处理视频和提取音轨。FFmpeg 是一款功能强大的多媒体处理工具,它支持各种音视频处理操作。我们可以使用 FFmpeg 提取原视频的音轨,以便稍后替换为新生成的语音。

  3. TTS 技术:生成新的语音为了替换原视频的音轨,我们需要生成新的语音。这里我们使用 TTS(Text-to-Speech)技术,将先前翻译得到的目标语言文本转换为对应语言的语音。TTS 技术基于深度学习模型,可以生成自然流畅的语音,使其与原视频的内容相匹配。

  4. 结合 Whisper、FFmpeg 和 TTS:实现视频翻译和更换声音最后,我们将 Whisper 生成的目标语言文本与 TTS 生成的新语音结合起来,并使用 FFmpeg 将新语音替换到原视频的音轨中。通过使用 FFmpeg 的音轨替换功能,我们可以确保新语音与视频内容同步,并生成具备目标。

结果展示

  • 原视频:https://caining0.github.io/statichtml.github.io/test.mp4

  • 转换后视频:https://caining0.github.io/statichtml.github.io/output.mp4

前提与依赖

pip3 install openai-whisper
pip3 install ffmpeg-python
brew install ffmpeg
pip3 install TTS//https://github.com/coqui-ai/TTS

openai-whisper用法

命令行用法

以下命令将使用medium模型转录音频文件中的语音:

whisper audio.flac audio.mp3 audio.wav --model medium

默认设置(选择模型small)适用于转录英语。要转录包含非英语语音的音频文件,您可以使用以下选项指定语言--language

whisper japanese.wav --language Japanese

添加--task translate会将语音翻译成英文:

whisper japanese.wav --language Japanese --task translate

运行以下命令以查看所有可用选项:

whisper --help

Python 用法

import whisper

model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])

例子

whisper test.mp4 --language Chinese --task translate
[00:00.000 --> 00:03.400]  If the Chinese people come to design a new building, it will be like this
[00:03.400 --> 00:06.360]  A new building that has been rebuilt by a Chinese city
[00:06.360 --> 00:09.480]  This is a real city, maybe it's your hometown
[00:09.480 --> 00:12.640]  Let's take a short film with us and show its real face
[00:12.640 --> 00:14.480]  The opening is a one-minute long lens
[00:14.480 --> 00:16.520]  First, the time has changed, the new season has no shadow
[00:16.520 --> 00:18.680]  A sense of depression is born
[00:18.680 --> 00:20.400]  We randomly saw the red tail of it
[00:20.400 --> 00:22.120]  This is the new building in the hundreds of square kilometers
[00:22.120 --> 00:24.480]  The blue protective tent inside the blue sky city in the front
[00:24.480 --> 00:26.080]  As in the front of the crystal ball
[00:26.080 --> 00:28.360]  The back is a larger environmental structure
[00:28.360 --> 00:29.800]  This is the shadow of the new building
[00:29.800 --> 00:30.600]  The lens is far away
[00:30.600 --> 00:32.040]  We see that there is a bandage
[00:32.040 --> 00:33.560]  It is passing through a huge star
[00:33.560 --> 00:35.240]  Those are the stars of the stars
[00:35.240 --> 00:37.280]  The stars do not affect the shape of the bandage
[00:37.280 --> 00:39.240]  This means that their motivation is super
[00:39.240 --> 00:42.040]  At this time, the lens enters the blue protective tent inside the first crystal ball

TTS

from TTS.api import TTS
model_name = TTS.list_models()[0]
tts = TTS(model_name)
tts.tts_to_file(text="Hello world!", speaker=tts.speakers[0], language=tts.languages[0], file_path="output.wav")
#实践中需要把text更换为whisper提取内容

ffmpeg

  • 提取无音频视频

ffmpeg -i /Users/cnn/Downloads/test.mp4 -an -y output_new.mp4
  • 去噪

ffmpeg -y -i output_new.wav -af "anlmdn=ns=20" output_clean.wav
  • 合并与剪切

ffmpeg -i merge1.wav -i a_p1.wav -filter_complex "[0:0] [1:0] concat=n=2:v=0:a=1 [a]" -map [a] -y merge0.wav
  • 其他问题,由于tts生成语音,实际时长与原视频时长不一样,需要动态调整

# 思路为,获取视频时长和原视频时间的比例,并设置,调整语速
ffmpeg -y -i output.wav -filter:a "atempo=0.8" output_new.wav

前景

结合 OpenAI Whisper、FFmpeg 和 TTS 技术的跨语言视频翻译与语音本地化应用具有广阔的前景与市场潜力。随着全球化的推进,多语言视频内容需求日益增加,教育、媒体、娱乐和商务等领域都需要提供多语言支持。这种应用可以帮助内容创作者快速将视频本地化,满足全球受众的需求,同时降低成本和时间投入。在教育领域,多语言支持可以促进全球学习交流与合作;媒体和娱乐行业可以通过本地化的视频内容吸引更广泛的受众市场。此外,企业在跨国业务和跨文化交流中也可以利用这种应用进行语音本地化,促进全球团队合作和商务沟通。未来,这种应用有望成为视频内容创作工具与服务的一部分,提供高效、自动化的跨语言翻译和语音本地化功能。总之,这种应用在满足多语言视频需求的同时,为各个行业带来商业机会,并推动全球化交流与合作的发展。

不足

  • TTS略有杂音,后续优化,或者考虑收费版本,如Polly:https://aws.amazon.com/cn/polly/,

引用

  • https://github.com/openai/whisper

  • https://github.com/coqui-ai/TTS

  • https://ffmpeg.org/

- END -

关于奇舞团

奇舞团是 360 集团最大的大前端团队,代表集团参与 W3C 和 ECMA 会员(TC39)工作。奇舞团非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。
文章来源地址https://www.toymoban.com/news/detail-489350.html

到了这里,关于OpenAI Whisper + FFmpeg + TTS:动态实现跨语言视频音频翻译的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue 3 + ffmpeg + wasm 实现前端视频剪辑、音频剪辑、音波展示、视频抽帧、gif抽帧、帧播放器、字幕、贴图、时间轴、素材轨道

    预览 www.bilibili.com/video/BV1YT411Y7YJ 技术栈: 💪 Vue 3、Vue-Router 4、Vite、pnpm、esbuild、TypeScript ☀️ Pinia 状态管理 🌪 Tailwind 原子css集成 💥 ffmpeg、wasm 底层音视频处理集成 功能 多轨道时间轴,支持帧缩放,时间缩放 支持多种类型轨道的添加删除 多功能轨道调节,支持音视频轨

    2024年02月11日
    浏览(23)
  • 基于Whisper语音识别的实时视频字幕生成 (一): 流式显示视频帧和音频帧

    Whistream(微流)是基于Whisper语音识别的的在线字幕生成工具,支持rtsp/rtmp/mp4等视频流在线语音识别 whishow(微秀)是python实现的在线音视频流播放器,支持rtsp/rtmp/mp4等流式输入,也是whistream的前端。python实现原理如下: (1) SPROCESS.run() 的三个子线程负责:缓存流数据,处理音

    2024年04月13日
    浏览(34)
  • ffmpeg视频音频命令

    视频音频合并,以视频时间为主,音频短了循环 方法1:混音,视频权重0,volume调节音量,aloop无限循环,duration:first为第一个素材的长度 ffmpeg -i video.mp4 -i audio.mp3 -filter_complex \\\"[1:a]volume=0.5[a1];[a1]aloop=loop=-1:size=2e+09[a2];[0:a][a2]amix=inputs=2:duration=first:weights=\\\'0 1\\\'[a]\\\" -map 0:v -map \\\"[a]\\\"

    2024年02月13日
    浏览(17)
  • 【FFmpeg】音视频录制 ① ( 查询系统中 ffmpeg 可录制的音视频输入设备 | 使用 ffmpeg 命令录制音视频数据 | 录制视频数据命令 |录制音频数据| 同时录制音频和视频数据命令 )

    在 Windows 系统中 , 使用 ffmpeg 命令 录制 音视频 , 需要先获取 系统的 音视频设备 信息 , 录制 音视频 本质上是从 系统音视频设备 中获取数据 ; 执行 命令 , 可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ; 命令参数解析 : -list_devices true : 列出所有 ffmpeg 的 指定类型的可

    2024年04月25日
    浏览(56)
  • 利用FFmpeg合并音频和视频

    一、FFmpeg 多个音频合并的2种方法 多个mp3文件合并成一个mp3文件 一种方法是连接到一起 ffmpeg64.exe -i \\\"concat:123.mp3|124.mp3\\\" -acodec copy output.mp3 解释:-i代表输入参数     contact:123.mp3|124.mp3代表着需要连接到一起的音频文件                  -acodec copy  output.mp3 重新编码并复制到

    2024年04月10日
    浏览(27)
  • FFmpeg从视频中提取音频

    参考博客 ffmpeg Documentation FFmpeg最全教程 FFmpeg 提取视频的音频 FFMPEG 提取音频 ffmpeg 给音频添加封面,ffmpeg对音视频metadata相关操作 查看 使用 FFprobe ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的

    2023年04月08日
    浏览(30)
  • 使用ffmpeg从视频文件中提取音频文件、视频抽帧和切割视频

    目录 ffmpeg下载 使用ffmpeg从视频文件中提取音频文件 批量提取文件夹下多个视频文件的音频 使用ffmpeg从视频文件中提取视频帧 使用ffmpeg将按固定时长将视频切割成多个小片段 将分割得到的视频存放在新建文件夹下(这个我运行的时候好像有点问题,音频文件没有存放在新建

    2023年04月08日
    浏览(35)
  • 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

    音视频 文件 从 采样 - 处理 - 得到原始数据帧队列 - 音视频编码 - 音视频包队列 - 格式封装 的过程如下 : 封装格式 参考 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装

    2024年04月17日
    浏览(27)
  • 音视频八股文(11)-- ffmpeg 音频重采样

    所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 为什么要重采样?当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频的时候,不同的⾳源有不同的格式,采样率等,在解码后的数据中的这些参数也会不⼀致(最

    2024年02月04日
    浏览(41)
  • 使用ffmpeg调整视频中音频采样率及声道

    通过ffmpeg -i命令查看视频基本信息 -r fps每秒传输帧数,默认为25 -s 分辨率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 FFmpeg项目由 Fabrice Bellard在2000年创立。到目前为止,FFmpeg项目的开发者仍然与VLC、MPV、dav1d、x

    2024年01月23日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包