BingLingGroup / autosub

Command-line utility to transcribe/translate from video/audio/subtitles to subtitles
GNU General Public License v2.0
1.98k stars 244 forks source link

PR 到 Quick Cut #132

Closed HaujetZhao closed 4 years ago

HaujetZhao commented 4 years ago

Quick Cut 是我的一个 GUI 的视频处理工具箱:https://github.com/HaujetZhao/QuickCut

它支持阿里和腾讯的语音转字幕。

从一个说希望我添加谷歌引擎的 issue 找到了这里,我有点懒,因为阿里云的引擎够我用,不想再挖坑了,就想来作者问下有没有兴趣将 AutoSub 整合到 GUI Quick Cut 里。

BingLingGroup commented 4 years ago

我看了下,实际上你那边基本都是长语音识别,能返回时间戳的,我这边是短语音识别,没时间戳,即使用了新的识别方法也不是很完善

另外如果你有兴趣添加google web speech的白嫖api,也可以通过以下思路进行优化:

  1. 获得长语音识别的句子时间戳
  2. 使用这个句子时间戳,或者输出空字幕(目前autosub大概只支持空ass,不支持空srt,所以建议输出空ass)给autosub用这个空轴,然后根据空轴向google web speech发送请求,可能会得到比原来的结果更好的结果(我并未实际测试,大概也就是英语之类google原先就擅长的语言会有更好结果,像中文大概会劣化)
  3. 输出字幕

autosub可支持外部输入时间轴,该选项为-er

关于google web speech部分的代码,见

https://github.com/BingLingGroup/autosub/blob/dev/autosub/api_google.py#L183-L240 https://github.com/BingLingGroup/autosub/blob/dev/autosub/api_google.py#L113-L140 https://github.com/BingLingGroup/autosub/blob/dev/autosub/core.py#L263-L331

这部分代码并不多,大部分改自原版autosub,你想加就加,我就不pr了

BingLingGroup commented 4 years ago

另外别忘了加个设置代理的功能 理论上设置环境变量就可以让requests走代理 https://github.com/BingLingGroup/autosub/blob/dev/autosub/__init__.py#L47-L51

HaujetZhao commented 4 years ago

想到一个用 python 白嫖讯飞输入法、搜狗输入法语音识别转字幕的方法。

讯飞输入法电脑版是有语音识别的 ,它的快捷键是f6 ,也可以改成其他快捷键。

讯飞输入法在按下快捷键之后,就会从麦克风输入声音,转换成文字,当松开快捷键的时候,文字就生成了。

在WINDOWS上 自带一个麦克风 混合立体音,其实就是将扬声器的输出作为麦克风的输入。

python 的 keyboard 模块可以控制键盘。

auditok 可以将音频按照声音分段。

这样我们就可以首先将麦克风设备设置为混音立体音,再将需要识别的音频分段,记录下这些段落的时间戳,然后用一个 for 循环:

最后将生成的字幕(片段时间戳以及对应的文本)写入文件。

我先把这个做出来。

BingLingGroup commented 4 years ago

哈哈,这个的问题是速度比较慢,等于说几乎是实时的,但是google那个不是实时的,你可以并发很多个而且它处理的速度也很快 我觉得还是算了吧2333333我下一步的计划是对接长语音识别,然后加点对文本的功能,也就是已知文本,根据自动字幕,将其自动填入时间轴 其他的暂时没计划

HaujetZhao commented 4 years ago

做完了。最新发行版就有了。