治好了我的发布会焦虑症
https://console.volcengine.com/ark/region:ark+cn-beijing/experience/voice?type=SI
在浏览器里直接抓取正在播放的视频音频,然后调用豆包同传2.0的API,实时翻译成中文,再播放出来。
听起来完美,对不对?
我一开始就卡在了第一步,怎么在浏览器插件里调用豆包同传2.0模型的API?
这个API用的是WebSocket协议,还需要在请求头里加认证信息。。。
就是,你平时刷网页,大多是"问一句答一句",就像发个短信一样,你发了个请求,"给我一个网页",服务器回了你,"好的,这是你要的页面"。
之后呢?之后就各忙各的了。
如果你想要更新信息,那就得再发一次请求,再等一次回复。这就是普通的HTTP协议,简单但效率一般。
但有时候,我们不想每次都问一下才有回应,我们想要的是实时互动,比如你跟朋友打电话,不需要每次想说话的时候再拨一次号码。
WebSocket协议就是为这个场景而生的。它更像一通电话,一旦你接通了,双方可以一直不停地实时说话,不用再挂掉重拨。
而最大的问题,在于你的插件在浏览器环境里调用WebSocket时,要往请求头里塞认证信息(比如API Key、Token什么的),但浏览器为了安全考虑,不允许插件随便修改WebSocket的请求头。
真的是磕了半天以后,才明白这个坑
浏览器插件的环境里,想要往WebSocket的请求头里加认证信息,简直是地狱级别的难度。
更要命的是,我去看了下官方的接口文档,有Python、Java和Go的示例代码,没有JavaScript的版本。
我这种半吊子选手,就更是两眼一抹黑。。。
折腾了两天,各种StackOverflow、GitHub翻了个遍,发现这条路基本上是死路,实现起来非常麻烦。
行吧,只能换思路。。。
既然浏览器环境搞不定API,那搞个曲线救国的方案,浏览器插件负责抓音频,然后把音频数据发给一个本地的Python程序,让这个程序去调用豆包API。
听起来非常合理。
我这就下载了豆包官方的Python示例代码,填了密钥信息,在电脑上跑了一遍,确实能运行。但是看了代码才发现,这玩意确实只是个示例,只能把一个本地的音频文件翻译成另一个语言,然后保存成文件。
不是我想要的实时处理。
更让我头疼的是,怎么从浏览器里把正在播放的Tab的音频流,稳定地传输给本地Python程序?
这个技术难度,比我想象的要高太多了。延迟、音质损失、断连...各种问题一堆堆的。
就在我快要放弃的时候,突然灵光一闪。
我为什么要这么复杂呢?
我直接搞个本地Python程序,然后用"音频重定向"的方法,不就行了吗?
这是一个我之前搞游戏直播的时候学到的方法。。。
音频重定向,说人话,就是给你的电脑戴上一个虚拟的耳机。
平时你电脑上的声音(比如看直播时的演讲声音、视频里的声音)都会通过系统默认的扬声器或耳机直接放出来,你的耳朵听到了,但你的程序却抓不到。
现在呢,我们给电脑装一个虚拟设备,就相当于再给它接一根虚拟的耳机线。
这根虚拟的耳机线它表面上看是个耳机,但实际上的作用是把你电脑里播放的所有声音拷贝一份出来,送给另一个程序去处理。
于是,我在电脑上装了一个叫VB-CABLE的虚拟音频设备。
然后,当我在浏览器里看视频的时候,我把浏览器的音频输出切换到这个虚拟扬声器。
这样,视频的声音就会进入这个虚拟设备,而我的真正的扬声器是听不到任何声音的。
接下来,我用AI修改了一下刚刚下载的程序,实现把这个虚拟扬声器当成麦克风来监听。
这样,Python程序就能精确地捕获到浏览器播放的英文音频了。
然后程序调用豆包的同传模型2.0,把英文音频实时翻译成中文,再通过我的真正扬声器播放出来。
整个流程就是:浏览器视频 → 虚拟扬声器 → Python程序 → 豆包API → 真扬声器
流程清晰,逻辑简单,没有复杂的数据传输,也没有浏览器环境的限制。
最关键的是,效果特别棒。
我听不到任何英文原声的干扰,只能听到清晰的中文翻译。就像真的有个同传在我耳边翻译一样。
为了方便使用,我还搞了个简单的Web界面,可以启停翻译功能,还能实时看到API返回的原文和译文。
第一次成功测试的时候,我激动得差点跳起来。
我打开了一个英文的AI发布会录播,然后启动我的程序。当那个陌生的英语声音消失,取而代之的是流畅的中文翻译时,我真的有种终于把这个破事给搞定了的成就感。
当你排除千难万险,解决一个难题,把一个程序跑通的时候,那种爽感,就像你在打只狼,推一个卡了好几天的BOSS,血条只剩一丝的时候手都在抖,打出最后那一下平A,BOSS倒地但你还站着的那一瞬间,大脑一片空白,随即巨大的多巴胺如潮水般涌来。
这种爽感,带着一点劫后余生的庆幸,一点自我突破的自豪,还有一点征服世界的豪迈,让你忍不住想站起来仰天长啸。
终于搞定了!
虽然只是一个同传的小东西而已。
我终于可以一边刷着播客,一边听着优雅的中文翻译,不用再低头看字幕了。
那种感觉,就像是给自己找了一个随叫随到的高级翻译。
而且不止是一个人的音色,如果是5个人,那真的就可以0样本复刻5个人的音色来给你翻译,每一个人,都有自己的声线,你只需要听,就可以区分出所有的信息。
折腾了这么久,总算是把自己的这个痛点给解决了。
一个小白,能借助AI,徒手做出自己想要的东西,这感觉,还是很酷。
至于线下的场景,反而简单很多了,因为就调用一下麦克风做传输就行。
我本来想自己开发一个H5网页的,一想,豆包已经做了一个体验版本的,有没有手机版的?
就搜了一下。。。
发现,还真有。。。
点进去以后,免费体验。
而且10分钟上限。
线下完全就可以直接用了。
最后,我想表达一下我对于同传这个行业,还有对译员的观点。
我是一个纯粹的外行,我做这个小东西,完全不是为了要去挑战或者取代那些真正专业的口译同传们。
会议现场,真正的译员们在大会现场,在同传和长交传领域反复磨炼,才有那种举重若轻、炉火纯青的能力,这种水准,目前任何AI都难以企及。
但技术的意义从来不止于取代。
更重要的是,它让那些像我一样普通而平凡的人,因为AI的发展,让我可以用低廉的价格,打破语言障碍,这是一个非常棒的事。
不再局限于语言的高墙,让每个人都能在更平等、更自由的条件下,找到自己想要的答案。
AI本就是为我们每一个人服务的。
它也本身就是个性的。
任何我们觉得不满意不爽的事情。
你都可以尝试着,用AI再做一遍。
然后,你就会发现。
一个更广阔的世界。
以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。
>/ 作者:卡兹克、dongyi
>/ 投稿或爆料,请联系邮箱:wzglyay@virxact.com
没有评论:
发表评论