autocut-client icon indicating copy to clipboard operation
autocut-client copied to clipboard

考虑基于cpp实现addon给node调用实现autocut功能吗

Open chenqianhe opened this issue 2 years ago • 10 comments

目前whisper的cpp推理已经有了,我最近把vad的cpp推理也实现了,而且我觉得纯cpu运行whisper的时间也是能够接受的,所以有考虑直接基于cpp来实现autocut的功能给node调用实现client吗? 这样的效率应该也会更高并且可以完整打包,减少使用过程中去安装别的依赖。

chenqianhe avatar Jan 10 '23 09:01 chenqianhe

@chenqianhe 很好的提议,如果能完成「基于cpp来实现autocut」的任务,那我觉得是没什么问题的。

客户端的功能和 autocut 是一致的,就是「生成字幕」「编辑字幕」「合成视频」,如果前两个都能够用 cpp 实现,那只要再把最后一个合成的任务解决就可以。不过我对于 cpp 和 ffmpeg 的开发都不是很熟悉,如果有人能够帮忙的话是最好的。

另外,我目前在考虑额外提供一个服务端程序,让不方便使用本机转录的同学可以用服务器来处理视频,应该会比使用本机更方便快速一些。

zcf0508 avatar Jan 10 '23 09:01 zcf0508

@chenqianhe 很好的提议,如果能完成「基于cpp来实现autocut」的任务,那我觉得是没什么问题的。

客户端的功能和 autocut 是一致的,就是「生成字幕」「编辑字幕」「合成视频」,如果前两个都能够用 cpp 实现,那只要再把最后一个合成的任务解决就可以。不过我对于 cpp 和 ffmpeg 的开发都不是很熟悉,如果有人能够帮忙的话是最好的。

另外,我目前在考虑额外提供一个服务端程序,让不方便使用本机转录的同学可以用服务器来处理视频,应该会比使用本机更方便快速一些。

cpp开发不是难题,主要是addon是基于node-gyp方案,这个编译cpp生成node接口我不太熟。

服务端感觉一是成本太高了,不管是gpu服务器还是cpu服务器;二是对用户来说数据安全不可控。不过要开发的话我可以帮忙一起,这个能搞定。

不过还是感觉优化客户端可能更合适,我这边测过一些large模型cpu跑四十多分钟的视频大概是1.2到1.5倍的耗时,这对于视频创作和编辑来说是完全可以接受的时长。

chenqianhe avatar Jan 10 '23 10:01 chenqianhe

@zcf0508 新年快乐!祝新的一年不写 BUG!!! 顺带 VAD-addon 开发完成,预祝新的一年能做出做出更好的开源项目!

chenqianhe avatar Jan 21 '23 12:01 chenqianhe

whisper 的 addon

https://github.com/ggerganov/whisper.cpp/pull/443

chenqianhe avatar Jan 31 '23 16:01 chenqianhe

ffmpeg

https://github.com/ffmpegwasm/ffmpeg.wasm https://github.com/Kagami/ffmpeg.js

chenqianhe avatar Jan 31 '23 16:01 chenqianhe

@chenqianhe 新年好,非常感谢你对这个项目的支持!

目前我在尝试使用 python 配合 webview 的方式来进行开发,这样后端可以直接使用 python 相关的库,避免需要将三方库打包成可执行文件或者需要预先编译为 addon 的问题。

不知道你对这个有什么看法,如果你也感兴趣的可以,可以看下这个项目。

https://github.com/zcf0508/clip-wizard

这个项目目前刚搭建好,还没有实际的功能,计划采用 CS 模式。程序启动时会运行一个后端服务,提供api接口和静态资源的服务,通过webview来显示页面。前端通过 http 调用服务端来处理相关内容,服务端直接使用 python 来编写。

这样如果后期考虑需要集成其它的 AI 模型,阻力应该会小很多。

zcf0508 avatar Feb 02 '23 09:02 zcf0508

确实 CS 的模式更好实现,可以试试看。而且 python 服务打包现在也不难实现了。

chenqianhe avatar Feb 02 '23 14:02 chenqianhe

@zcf0508 相似的,我也思考了GUI的开发方式,计划用前后端分离的方式(例如sanic + vue.js)进行开发,

目前主要设想了三个页面:

  • [ ] 选择视频页面
  • [ ] 语音转字幕的等待页面
  • [ ] 选取字幕页面

为了避免编译文件对git的污染,前端页面托管于GitHub Page

使用方式为 autocut --gui

  1. 启动后端,端口号为 PORT
  2. 提示用户访问 xxx.github.io/autocut?port=PORT (在访问时带上本地后端的端口号)
  3. 前端与 localhost:PORT 进行交互

期待能与你进行讨论😄

laorange avatar Feb 12 '23 06:02 laorange

您的邮件已收到!谢谢。

henglei1228 avatar Feb 12 '23 06:02 henglei1228

您的邮件已收到!谢谢。

henglei1228 avatar Sep 20 '23 06:09 henglei1228