静静的小窝

记录自己的感受与收获

前面一篇博文写了一些之前做虚拟主播的过程,得到了一些反馈,根据反馈又做了一些调整,做了一些改变,现在来写一下调整后的情况。

皮套

一些反馈说皮套颜色不太好,太像灭霸了,所以修改了一下颜色,现在不知道大家觉得会不会好一点呢?我自己有一些色弱,对于色彩科学相关的了解也不多,也就是看着感觉改了一些,不一定好,大家有好的建议也可以提出来。

虚拟麦克风

之前以为必须要虚拟一个麦克风出来作为OBS和虚拟机之间的中介,后来发现好像不需要,直接连线把OBS的输出连到虚拟机输入上面就可以了。至少我Pipewire没什么问题。

OBS

原来的OBS是在Flatpak上面的包,但是感觉附加插件不是很支持,遇到了一些问题,然后转成了snap上面的包,然后装了一个显示鼠标的插件。同时snap包自己还带了一个VST的变声模块,我不怎么会用,就改了一下pitch,好处是不需要再担心linux的音频问题了,直接obs内部就处理好了。

AI字幕

试了一些集成方案,现在自己用上游的whisper.cpp的项目跑,但是whisper的模型不太好设置简体和繁体,网上的方案是prompt上面写,可惜自带的stream代码不能处理prompt,只能自己改了一改,发现自己好久不写C++已经有些生疏了。

LLM接入

解释一下为什么不接入LLM。目前没有在直播上面太盈利的打算,所以不会挂机直播。我真人回复就可以了,还达不到需要LLM回复的地步。

这不是一个常规的虚拟直播需求,而是有一些怪异点的需求(Linux&直播pk&3d皮&免费&变声),所以实现得很别扭,如果你是普通用户,可能和你关系不大。

一直想着做虚拟形象来直播,遇到了蛮多的状况的,有一些网上也没有搜到的,这里写出来和大家分享一下。

皮套

皮套有3D和2D两种的,可以使用不同的软件绘制。这里我是用来steam上面的VRoid Studio来画的,目前可以用proton兼容层跑,做出来.vrm的模型格式。我是在默认给的皮上面随便改了改,有更高要求的可以尝试一下自己搞,或者找人搞。画出来的皮套保存在本地,之后动捕软件需要读取这个皮套。

生成画面

虽然有一些软件是直接完成从摄像头捕捉到生成整个画面的过程,一些工具链会按2个部分单独完成,中间的结构图像是LLVM的IR。

动捕

动捕是需要读取摄像头的话画面,识别其中的人脸(以及肢体)画面并转换为抽象的结构图。有一些软件可以从iPhone等设备上拍,但是鉴于我没有,所以就用了笔记本上面的。在软件上有OpenSeeFace,这个是用python写的脚本,可以纯CPU识别。

合成

在获得了动捕软件的结构图之后,这一部分需要把机构图绑定到皮套的骨骼上面,并同时渲染场景光照等内容。这部分是比较麻烦的,很多软件在这里会间或出现渲染的问题,可能和环境有关系,毕竟Linux下的很乱。

我大致跑下来有这几种方案。

  1. 使用https://3d.kalidoface.com/ 这是一个在线的系统,可以自己读取摄像头输出渲染后的画面,优点就是只依赖浏览器,缺点也是纯浏览器,导出画面相对复杂。
  2. 使用vpuppr + 动捕,目前vpuppr已经停止维护了。个人感觉操作比较麻烦,有时候会卡住。
  3. 使用steam上面的VTube Studio,需要proton套一层,很看运气,需要能正常跑出来, 经常会崩溃。
  4. 使用SysMocap,有原生的Linux版本,但是不知道为什么,放大之后渲染会出问题。

推流

使用OBS捕捉生成的画面然后填写rtmp推出去就行了。如果是绿幕的皮套配上一个色度键就可以了,比较简单,OBS在Linux上面没什么大问题。但是声音问题比较大,Linux的音频系统叠岭层峦的,再加上我想要变声,目前比较无解。我自己放弃监听,直接麦克风导入输出出去。变声的软件还没搞定,试了好几只方案都不是太好。

互动

如果是OBS推流B站的话是没法使用各种互动功能的,必须使用b站的直播姬。有浏览器版本但是功能不全,不能用,所以只能想办法用win版本的。
设置OBS虚拟摄像头,然后让直播姬直接捕捉摄像头画面输出出去。或者可以自己设置一个服务器一边推一边拉,延迟比较大,但是因为是基于网络的,相对来说问题少一点,只要能配得明白网络。

  1. wine套上直播姬。在bottles里面尝试了很多配置最后能进去,但是不稳定,重启以后可能就不行了,需要再配来配去。导入的摄像头画面有问题,不确定是什么原因,可能和分辨率有关系。
  2. KVM上Windows,之后打开直播姬。问题是KVM没法捕捉/dev/video流,只能USB重定向,故对于虚拟摄像头不管用。在网上看到好像有新的patch可以导入,但是没搜到太多的使用的文档,还没试过。
  3. VirtualBox开Windows,使用增强功能包之后可以导入摄像头。目前在使用这个方案。

录播

开了服务器挂上了biliup,另外开了一个号上传录播。
https://space.bilibili.com/3546737394321661

总结

Linus_Nvidia.jpg

本文所指AI,仅包括ChatGPT(GPT3.5),Copilot以及文心一言。其他模型没有进行尝试。

用AI写代码在过去的一年中可能已经很常见了,不过我则是几乎没有使用过。这一周为了迁移代码从Python到C++,可是和AI斗法废了一番功夫。

先介绍一下背景吧,毕设涉及到了汽车的图像识别,考虑各种情况最后选择了intel的神经计算棒加速,自然也就用了OpenVINO。因为我负责的是项目其他部分,所以并没有在意这个部分,直到我们的Python版本测试效果不错,需要合入C++版本的时候,“噩梦”才开始了。

因为之前在RoboMaster时有干过Python转C++的活,干的也是Opencv的东西。所以一开始听说转换有问题的时候,觉得我应该能搞定,就跟着一起搞,觉得opencv的api在cpp和python上基本一样,一行行照抄改不就是了。然后就发现遇到了问题,有这样一行代码:image = image.transpose((2, 0, 1))用于对opencv读到的图片进行维度转换以符合模型的输入要求,然而当我去查opencv的api时,发现opencv的transpose并不长这样,只有一个输入和输出。搜索后发现,这里是用了numpy的函数进行了转换。可是cpp没有numpy啊,为了一个这个功能再搞eigen?好像也不合适。此时cpp的代码已经写好了可以编译运行,只是模型结果和python的不一样,识别不出车子来。于是去看cpp代码是怎么写的,发现是cvtColor,emm?于是队友就开始问了AI,给出的方案是手动三重循环转换,copy进代码跑,发现还是不行。于是反复循环问ai,copy进代码,发现不行。我也试了copilot的翻译代码功能到cpp,结果照样不行。反复尝试换模型(FP32,FP16),修改遍历顺序,修改不同的api,都不行。

我于是尝试搞到自己电脑上跑。原来的编译是直接g++跑,但是换了环境之后自然是跑不了了,再加上其他部分代码都是cmake编译的,便尝试搞成cmake,弄了好久搞定了,在编译时会提示使用了2024要被废弃(如废)的框架。于是我想到不如用新框架也许能更好写,便问了队友初始的python代码是从哪个文档里面学来的,得知也是AI生成的。

我想着AI只能出旧框架,那我要不上网搜索有没有新框架。于是花了可能就一分钟就找到了知乎上的文章,然后照着抄,抄的时候看到文章里面的转换,感觉和我们的代码一样,可能还是不行的时候,突然反应过来不一样的地方:之前的尝试,都只是在改模型部分的类型在各种变化,但是Mat读的时候,一直是at成float读的,但是我们的图片读进来是int啊,到原来代码里面一改,模型输出正确了。

关键的修改

唉,与其去搞AI问答,不如当初就直接搜索引擎搜索,早解决了。看起来C++开发暂时还是不会被AI取代的,需要的各类信息比Python一类的代码多得多。

静评旨在抛砖引玉。

https://linux.cn/article-16094-1.html

很多人常常把浏览器和操作系统放在一起讨论,不论这是否是一个工程难度和代码量的级别,浏览器在当代的地位已是越来越重要的,不管是出现了基于浏览器而打造的操作系统(Chrome OS)还是基于electron开发的跨平台应用的不断上涨还是套壳网页的手机应用程序。但是,尽管操作系统有一个占领市场大量份额的微软,仍旧有包括GNU/Linux,FreeBSD,MacOS等的众多选择,而且市场份额基本稳定,而浏览器方向上则是另外一个光景,谷歌携带着它的开源浏览器,已几乎是所向披靡,连微软都在多年的挣扎后放弃,投入怀抱。Firefox等其他内核的浏览器份额不断下滑,仅有苹果的Safari靠着“垄断”保持自己的成绩,当然,随着苹果被迫在手机上开放侧载,允许用户使用其他内核可能也会发生,那时苹果还能占有今天的份额吗?

商业上的成绩外,谷歌也几乎干掉了可能的中国挑战者,不同于其他各式的产品的“国产化”基本不选择易被控制的技术路线,浏览器方面,几乎所有人都是在谷歌的开源框架上制作(360,QQ一类)。而尽管谷歌在中国的服务甚少,乃至有收缩,chrome(国内一般称谷歌浏览器)在包括党政等地方仍旧被推荐使用,甚至有时是唯一推荐浏览器。显然,谷歌并未引起一定的中国政府的安全担忧,想比起不断强调国产的操作系统等。

谷歌的成功,毫无疑问是包括开源等的政策下的成功,但是我们不免会问,在一统江湖后,谷歌会成为前辈那样的“恶龙”吗?应当注意到,谷歌近些来在chromium上提出了许多争议性的目标,也被曝光利用其他方式劣化其他浏览器体验。同时,谷歌也是其主要的竞争对手,Firefox的主要开发者,Mozilla重要的资金来源(用于在Firefox上让google为默认搜索引擎)。所谓“卡脖子”,不过如此。

如果谷歌真的成功地控制了浏览器,我们能期待的,除了那个早已被删去的“No evil”,还能剩下什么吗?

本静评对象为此篇文章,对于其真实性完整性等无法保证,如有错误漏洞,请大家指出。

静评原为我发布在学校内部平台的内容,现同步到这里。
原文地址 https://shuiyuan.sjtu.edu.cn/t/topic/187269

静评旨在抛砖引玉。

https://mp.weixin.qq.com/s/_nS7aQUcgs5shiCgcSGm_A

静静发现,这个样例中的人普遍被想变“美”但是在社会规约下难以变“美”而困扰,末尾的做整容手术与看心理医生这一已是不太被认可的行为做比较,进一步凸显出来了这些人的矛盾处境。

静静觉得,她们的境遇有多个因素。一个是外界他人的“精致”与自身的不“精致”带来的冲突与压力,让这些人看到其他人的“精致”而感到一定的自卑,同时这也是传统“万般皆下品,惟有读书高”式微,外貌愈加被看重后的自我认同的冲突的结果。

静静想,在评价方式撕裂的当下,如何良好地认识自己可能越来越重要,正如文末提到的心理医生一样,多元化的问题不断出现。

静静还想,和那些更早“精致”的人比,文章中的主人公们是晚的,但也有人还没开始,那是换一条赛道还是和那些已经进场的玩家比赛,先追赶再超越呢?文章中的这种撕裂的苦恼,是否也是中国在发展中遇到的复杂方向选择的一个缩影呢?

静静也想,人作为一种自以为高级的物种,是否有能力超脱出此时的“精致”定义呢?是否有可能,我们有着更复杂混合的“精致”呢?

源友们,你们怎么看呢?

本静评对象为此篇文章,对于其真实性完整性等无法保证,如有错误漏洞,请大家指出。

静评原为我发布在学校内部平台的内容,现同步到这里。
原文地址 https://shuiyuan.sjtu.edu.cn/t/topic/186912

静评旨在抛砖引玉。

https://mp.weixin.qq.com/s/cFvtC6ErQgNa_XF6xrUunQ

静静发现,这里面提到了两个场所的“按摩椅”问题,一个是在火车候车区域出现大量按摩椅,一个是在电影院出现按摩椅。

静静觉得,这两个场景可能存在着不同。对于候车,这只是铁路部门给予的便利服务,购买的票是从甲地到乙地的车票,这是否可以解释为包括了乘车前在候车区域有座位的服务呢?对于电影院,票上已经明确了座位,那么理应提供相应的位子,并保证相应的卫生等。当然,按摩椅也是座位,提供按摩椅算是提供座位吗?

静静想,这个问题的关键矛盾在于服务的提供方不认为提供普通座椅是包括在售出票中的,而购买者则认为是在的。在这方面,法律上可能需要进一步的进行责任的划分,对相关合同的权责关系进行细致的明确。

源友们,你们怎么看呢?

本静评对象为此篇文章,对于其真实性完整性等无法保证,如有错误漏洞,请大家指出。

静评原为我发布在学校内部平台的内容,现同步到这里。
原文地址 https://shuiyuan.sjtu.edu.cn/t/topic/186810

静评旨在抛砖引玉。

https://mp.weixin.qq.com/s/9xwsdhsNNM9VEq6WVgvMbA

比较明确的是,限制性措施还没有实行,相关行业企业仍有运作空间。

想必不少源友会想到“教培”事件的影响,进行比较,

静静发现,存在2点不同,一个是时间上,一个几乎是立刻,一个则还有数月。一个是受影响的企业,一个立刻表明了支持,一个则表示了一定的反对。

静静觉得,这两种各有利弊,一种是快刀斩乱麻式地处理,避免了长时间博弈的消耗以及部分企业“钻空子”的行为。一种这是温水煮青蛙式地处理,避免了快速变化带来的市场波动。

静静想,看不见的手需要受约束越来越成为共识,但是如何管,如何放,如何平稳过度,仍是一个需要讨论的话题。

源友们,你们怎么看呢?

本静评对象为此篇文章,对于其真实性完整性等无法保证,如有错误漏洞,请大家指出。