这是我发布的最技术自豪的一个产品,价值意义感动我自己!

广告位招租
扫码页面底部二维码联系

朋友们好呀,好久没有写博客了,今天我终于完成了自己酝酿了小半年,最终发布的产品,这可能是我这半年以来,最有成就感的一次,虽然目前它还没有开始盈利,但是,在技术上,我已经跑通了各种技术门槛,因此,已经做到心里坦然,将来,我可以快速启动和发布相关功能的产品了。

产品演示

这是一个什么样的产品呢?我们先来看下效果吧!

是的,这是一个将视频翻译为目标语言的产品。它的主要使用场景是,让通过短视频来进行产品种草、推广、获客的商户,可以以较低的成本,将视频翻译为目标语言的视频,从而,可以投放到目标市场最流行的短视频平台上。这对想要进入跨境电商领域的商户们而言,具有非常省钱的现实意义。

而对我而言,在实现产品过程中,解决了非常多重要的技术问题,这对我来说也非常的有意义。从目前市面上的产品而言,也有类似的竞品,或许它们在网站使用体验上看上去很专业,但是没有我便宜。在我这里,最低只需要用2块钱,就可以完成一个16秒视频翻译的完整周期。

技术难点解析

这里面其实有非常多关于视频翻译到目标语言的技术难点,接下来,我就会一一详解这些技术难点。我只会粗劣的介绍一下这些难点的情况以及解决的思路,你不可能完整的从我这篇文章获得细节代码,但是,能够获得思路分享,已经非常棒的一件事了。

从视频到字幕

在剪映(字节旗下的视频剪辑)这款软件中,有一个小功能,是从视频中自动获得字幕。这个功能原本是免费的,但是随着剪映大面积商业化后,它成为了付费功能,必须购买昂贵的会员才能使用。这个功能可以帮助创作者,较为精准的把字幕放到视频底部。注意,我使用了“较为精准”的表述,因为它并不精准。

这里的难点并不在于识别声音为字幕文本本身,而在于,如何能够准确的对齐到时间戳。

这里其实包含两个更深入的问题:

  • 如何获得时间戳对应的字幕信息?
  • 如何进行断句?

其实,这两个问题都是非常难解决的。

我们可以利用 openAI 的 whisper 模型来识别语音,并获得时间戳。然而,whisper 对中文的支持并不很好,它的识别存在误差,比如,本来应该是两句话的,被放在了一个句子里,或者在一个句子里把下一个句子里的第一个字抢了过来。另外,你无法通过 whisper 的结果来决定如何断句。

那么,到底应该如何解决呢?

我这里给一个思路,就是通过训练LLM来解决。我们将whisper的识别结果交给LLM,从而获得更为精确的结果。

再拿到结果后,我们再通过前端的编辑技术,将字幕与视频进行合并。作为前端开发老攻城狮,我熟练于这种技术,简单高效且免费,而如果技术不够的同学,也可以选择接入第三方的合成服务,把视频和字幕SRT上传,然后得到合成后的带字幕视频。

高亮字幕

这是tiktok上流行的一种字幕形式,把视频当前正在播放的字幕进行高亮化处理,将当前发音的词语进行高亮,而且居中在屏幕中间。我刷tiktok,很多对着屏幕口播的视频,都是这种字幕。

高亮字幕的技术难度比直接生成字幕的难度又高了很多。
它不仅要求你可以完成字幕的插入,还要求在单词级别时间戳上有较高的精度。

解决思路是,开启whisper词级时间戳,并通过训练好的LLM来完成精度优化,然后以单词的时间戳作为当前展示的时间戳,但是展示的文本是当前时间戳连接前后两个单词。这样,我们就可以用同一套代码逻辑来渲染字幕,再稍加改造字体渲染部分,就可以高亮渲染单个单词。

中英文字幕同屏

这种在外语电影中非常常见,但是其实在短视频领域比较少见。因此,这其实是一项技术挑战。

两种语言同屏的问题在于,中文的说话顺序和英文是反的,英语的从句大部分在后面,因此,当两种语言同屏时,两种文字的意思可能不是时时刻刻都对应的。

而更复杂的情况在于,由于英文音节普遍多于中文,这也就意味着,同一句话,英语的音节会更多,说中文一句话的时间,不够说同等英语一句话的时间。

即决思路有两点:

  • 通过训练LLM来解决精度对齐和词句的尽可能对齐问题
  • 通过错位展示来解决不同语言语序时间戳错位问题

简单展开说下错位展示的思路。也就是,在字幕中,同一句中文在展示的时候,英文字幕会进行推进,所谓“奇变偶不变”的效果。而最终效果则是,似乎中文和英文字幕是自己走自己的,两者同时一前一后并肩走。

实现这种效果的方法,就是按照同一时间轴,将所有交汇点进行切割,形成多个细分片段,逐一播放。

---|-------|--|
--|---|-----|-|

变为:

--|-|--|----||-|
--|-|--|----||-|

通过这一方案,无论哪一方的观众,都能准确捕获当前视频说话的意思。

不过,单纯从视觉效果来说,其实这种方案并不是很好,因为过于跳动的文字,会让人失去视觉焦点,最后眼睛会有些累。这需要根据实际情况才能下决定。

语音翻译

简单讲,就是将中文配音的视频,变为英文配音的视频。没有真实去解决这个问题时,我们会认为,这实在是非常简单,然而当我们真正去做时,才发现它如此复杂。这件事,让专业配音演员来做,都是一件很难的事。

有哪些难点呢?让我们来一一过目:

  • 如何获得相同人物的跨语种配音?
  • 如何确保时间戳对齐?
  • 如何确保声学对齐?

第一个问题是三个问题里最简单的,但是难度仍然非常大。解决思路是,从视频中剖离原始人物的声音,并利用whisper进行识别,得到拥有时间戳的识别结果,再基于该结果进行文本层面的翻译,再利用TTS对翻译出来的文本进行语音合成,此时必须选择zero-shot的TTS引擎,使用原始人物声音音频作为克隆对象,这样才能获得相同人的跨语种配音。TTS引擎的能力越强,得到的配音结果越逼真。

之所以要时间戳对齐,是因为我们的视频中,人物是有动作的,人物说的话和正在做的动作具有关联性,如果不对齐,就会遇到人物说“看,我手里的xx”的时候,画面的人物却把手揣在裤兜里的情况。解决时间戳对齐,是一门很大的学问,我想这对专业跨语种配音而言,是一项非常有挑战的工作。具体的解决方案也有,例如在时间轴上向两端借时间,或加快/放慢语速,或调整画面播放速度来适配声音速度。其中,调整画面播放速度会让画面有慢帧感,因此,能操作的空间非常小,只能借出一点点时间。在时间轴上向两端借时间,是最可靠的方案,当然,也不能借的太离谱,不然也会遇到上面说的问题。更好的办法,是配合调整语速一起操作。

看上去解决了,但是,单纯的调整语速是行不通的,单纯调整语速会使得声调飙高,尖锐的声音令人难以接受。这里我们遇到了最难的问题,也就是声学韵律(prosody)的问题。对于语言而言,其声学韵律系统包含重音(stress)、语调(intonation)、节奏(rhythm)、语速(tempo)。除非使用专业的工程软件进行人工编辑,否则,我们只能在简单编程中,调整语调(pitch)、语速(speed)和音量(volume),而在我们当前的问题下,调整音量没有任何作用。

而在前端,虽然我们可以代码来控制,但是我们却不知道具体参数。比如,一段语音,我们打算通过加快它来匹配时间戳,但是我们无法直接获取pitch参数的值,除非我们人工去听一遍加速后的语音,否则很难。而幸运的是,ffmpeg有些滤镜正好可以处理这个问题,因此这个问题才得以解决。

这是我在产品实现过程中,遇到的最大障碍。这让我意识到,即使AI如此先进的今天,很多问题还是需要靠人来解决,人的价值在于创造。

人脸替换和唇形同步

将视频投放到其他市场时,换一张符合当地市场的人脸,能够更切合当地用户的审美。同样的道理,当我们做了语音翻译之后,同步唇形,也可以避免用户看着说太假的尴尬。不过,说起来,这两项看似最复杂的任务,却是整个实现里最简单的,因为我们只需要依赖第三方服务,调用接口即可完成这两项工作。

如何使用?

首先,你需要进入fguai.com,完成注册登陆后,进入”视频翻译”,之后按照下面视频教程操作。

结语

实现这个产品的过程其实经历了非常长的时间跨度,很早我就有这个想法,然而在此之前,每一步实现我都遇到一些问题而暂时搁置,直到我逐渐掌握了新思路,并且现在市面上的AI工具也足够丰富,我才能在两周时间内完成这个产品。我知道市面上有好几个功能类似的竞品,我的优势可能就是价格更低。在AI时代,虽然AI已经可以写代码了,但是并非能像人一样充满想象力的去实现产品。AI固然重要,但是人们的想法更重要。

2025-09-20 886

为价值买单,打赏一杯咖啡

本文价值8.86RMB