Closed muzuiget closed 11 months ago
至少在我看来目前并不稳定也并不好使,90%的情况是no speech
请问怎么才能关掉这个WHISPER的英语选项,因为一些没有声音的视频或是非英语视频他也会显示两行字,除非我把DUALSUB的字幕语言关闭,但是这样的话我看不同的视频就要不停地开了关关了开,就很麻烦也很影响观看,谢谢
@NingJay 能否告知出现 no speech 的视频地址?
@m1a2sep 现在只能这样,因为未有很好的办法提前得知一个视频的语言,只能总是显示这个菜单了。
一个方法是看 YouTube 的“自动生成”字幕的语言,但这又不是 100% 对的,比如这个视频,识别为越南语了。同时也有一些视频没有“自动生成”字幕。
实际上我也建议你先关闭,如果你真的不是想正经看一个视频。
@m1a2sep 现在只能这样,因为未有很好的办法提前得知一个视频的语言,只能总是显示这个菜单了。
一个方法是看 YouTube 的“自动生成”字幕的语言,但这又不是 100% 对的,比如这个视频,识别为越南语了。同时也有一些视频没有“自动生成”字幕。
实际上我也建议你先关闭,如果你真的不是想正经看一个视频。
谢谢回复,就是我考虑DUALSUB有一个功能是只显示想要的语言代码的字幕,这个WHISPER的语言是否也是有一个语言代码来代表的,我可以不显示这个语言代码的字幕,不知道方案是否可行
@NingJay 能否告知出现 no speech 的视频地址?
服务器似乎已经对策略进行调整,现在不会出现no speech了, 但偶尔出现http:500 或 fail to fetch现象 原视频地址是:https://www.youtube.com/watch?v=WJM5augMSxc
@NingJay 你这个地址现在我测试 也是正常识别的。
现在 Dualsub 的服务器
api.dualsub.xyz
添加了语音识别功能,基于开源的 OpenAI Whisper 模型。就以识别英语来说,YouTube 的“自动生成”字幕是没有标点符号的,所以机器翻译质量极差,一个优化手段是根据每个单词的停顿时间来断句,事实证明确实有效地提高了一点翻译质量,还让我开辟了一个盈利点,竟然真的有人愿意花钱来提高一点翻译质量。
然而这种优化手段还是有限,因为不是所有人说话都像纪录片旁白那么标准的。现在有了 Whisper,不再需要这种奇技淫巧了,因为 Whisper 能直接输出标点符号,可以直接用标点符号来断句,极大提升了机器翻译质量。
现在最新版的 Dualsub 2.8.2 可以使用 Whisper 识别出来的字幕,仅仅是多了一个字幕菜单条目。
English (auto-generated)
:使用 YouTube 自带的语音识别English (auto-generated) +
: 使用 Dualsub 自建的 Whsiper 的语音识别就跟 YouTube 的“自动生成”字幕一样,但是带有标点符号,字幕整句显示,和画面声音没有延迟,机器翻译也是联系上下文的。
原理是这样的:
- 远程下载:发送音频地址给服务器,让服务器去下载音频文件,而不是上传音频文件。
- 按需识别:根据播放进度,每次只识别一小段音频,而不是整段音频。
举个例子,当打开一个 YouTube 视频:
- 播放进度是
00:00
时,马上让服务器识别出00:00 --> 01:00
之间的字幕,大约需要几秒钟时间。- 播放进度是
00:30
时,提前让服务器识别出01:00 --> 02:00
之间的字幕,只要在播放时间到01:00
之前完成即可。就是一边播放一边识别,字幕也需要“缓冲”,如果缓冲的数据不够,就暂停播放等待一会。如果缓冲数据足够,暂停播放也不会继续识别更多数据了,以节省服务器资源。
粗重活都是在服务器里完成的,你的浏览器只是和服务器收发一些文本数据,不需要做任何密集计算,也不需要“录音“权限。
目前的限制
- 仅支持识别英语
- 仅支持 YouTube
- 不支持某些 YouTube 视频,例如直播的,加密的、需要付费的。
设置参数
从 Dualsub 2.8.4 开始,默认情况下只显示 Whisper 的菜单条目,如果你要同时显示 YouTube 的菜单条目,需要手动开启。
按 F12 弹出 DevTools,在 Console 里运行:
localStorage.setItem('dualsub-ytbasr', '1')
如果要禁用 Whipser 的菜单条目,则可以运行:
localStorage.setItem('dualsub-whisper', '0')
注意,如果你两个菜单条目都开启了,当你要使用中英双语字幕时,建议使用 Whipser 的结果作为原文字幕,即字幕要这样设置:
而不是这样:
这样设置的话,第一行的译文字幕的原文字幕是 YouTube 的识别结果,而第二行的字幕又是 Whisper 的识别结果,两行字幕译文和原文就对应不上了。因为 Whisper 的识别结果带标点能够改进翻译,但又没有用来翻译就浪费了。
所以我决定在 Dualsub 2.8.4 下,默认情况下先只显示 Whisper 菜单条目。
Dualsub 2.8.5 开始不会自动选择 Whisper 的菜单条目。
您好,想请教下,我现在同时开启了YouTube和whisper两种模式,我放到自动生成或是自动生成+模式并不会像以前的版本一样下次开新视频会记住我之前的选项,每次开新视频字幕都是空的要在dualsub那里重新选择字幕语言才行,请问是因为这两种自动生成冲突了还是?
没有冲突,新版本就是有意改成这样,目的是减少服务器请求。
因为不能假定某个视频是用什么语言,所以 English (auto-generated) +
这个菜单总是显示,总是会被自动选择。如果视频是个中文,就识别不出任何内容,用户不手动关闭,服务器就一直在做无用功。
原来的 YouTube是识别字幕 English (auto-generated)
都一样,因为大部分视频都会自动选择到这个菜单,打开一个新视频时,至少会发出一个翻译请求。但当用户在挑选视频时,也就是每个视频看几秒不感兴趣就跳到下一个视频了,但是服务器却翻译几分钟字幕,这些翻译好的字幕没有被用户看到,也就是浪费了。
所以一个视频值得用户认真重头看到尾,也就值得花几秒手动设置一下字幕。
现在只有“标准模式”是这样,我也考虑是不是在“简单模式”也改掉,因为 YouTube 也存在限流问题 #426,频繁打开新视频触发多余的请求,容易被限流,当用户想认真看某个视频时,反而加载不了字幕了,只能等一会。
你好,在电脑端可以正常翻译,但是我用安卓手机的谷歌浏览器,当切换到whisper模式时,总是显示{no audio file},在youtube模式可以正常使用。 ![Uploading Screenshot_2023-08-19-16-28-32-006_com.kiwibrowser.browser.jpg…]()
我用 DevTools 的移动模式能重现,移动版的布局 m.youtube.com
似乎有些不同。
你试下强制使用桌面版布局行不行:
把地址从:
https://m.youtube.com/watch?v=VIDEO_ID
改成:
https://www.youtube.com/watch?app=desktop&v=VIDEO_ID
@marlowma v2.8.8 已经支持 m.youtube.com
了,虽然我没真机测试过。
感谢你的回复,确实转到桌面版就可以使用了。
muzuiget @.***> 于 2023年8月21日周一 下午5:16写道:
@marlowma https://github.com/marlowma v2.8.8 已经支持 m.youtube.com 了,虽然我没真机测试过。
— Reply to this email directly, view it on GitHub https://github.com/muzuiget/dualsub-support/issues/538#issuecomment-1685956192, or unsubscribe https://github.com/notifications/unsubscribe-auth/APZCH5X763KQCMX4V2CHUKDXWMRPHANCNFSM6AAAAAA3JM65YQ . You are receiving this because you were mentioned.Message ID: @.***>
有机会支持openai的Whisper API么
你说 OpenAI 官方服务器的 API 吗?不支持的,用了一些只能在 Python 里才有的接口,比如 word-level timestamp,官方服务器 API 没有这种接口。
你说 OpenAI 官方服务器的 API 吗?不支持的,用了一些只能在 Python 里才有的接口,比如 word-level timestamp,官方服务器 API 没有这种接口。
不知道有没有可能运行在 Cloudflare Workers AI 上的 Whisper https://developers.cloudflare.com/workers-ai/models/speech-to-text/
所以需求是什么呢?OpenAI Whisper 是开源的,完全可以自己在本地跑,如果不在意识别速度,还可以用 CPU 跑。
是想说服务端是不是可以完全运行在 Cloudflare Workers 上,我简单试了下 Workers 最近新推出的 whisper,运行速度还是挺快的,本身也有一定的免费额度,说不定可以利用得上
对我来说,这点钱暂时不用省,现在我都没有额外收费。
测试两个月,我觉得算是稳定了,可以算是标配功能了,有其它问题可以另帖讨论。
目前视频需要手动点才会启用whiper,可否有方法设置为自动某个语言呢或者给予是否自动的选项/快捷键。
现在 Dualsub 的服务器
api.dualsub.xyz
添加了语音识别功能,基于开源的 OpenAI Whisper 模型。就以识别英语来说,YouTube 的“自动生成”字幕是没有标点符号的,所以机器翻译质量极差,一个优化手段是根据每个单词的停顿时间来断句,事实证明确实有效地提高了一点翻译质量,还让我开辟了一个盈利点,竟然真的有人愿意花钱来提高一点翻译质量。
然而这种优化手段还是有限,因为不是所有人说话都像纪录片旁白那么标准的。现在有了 Whisper,不再需要这种奇技淫巧了,因为 Whisper 能直接输出标点符号,可以直接用标点符号来断句,极大提升了机器翻译质量。
现在最新版的 Dualsub 2.8.2 可以使用 Whisper 识别出来的字幕,仅仅是多了一个字幕菜单条目。
English (auto-generated)
:使用 YouTube 自带的语音识别English (auto-generated) +
: 使用 Dualsub 自建的 Whsiper 的语音识别就跟 YouTube 的“自动生成”字幕一样,但是带有标点符号,字幕整句显示,和画面声音没有延迟,机器翻译也是联系上下文的。
原理是这样的:
举个例子,当打开一个 YouTube 视频:
00:00
时,马上让服务器识别出00:00 --> 01:00
之间的字幕,大约需要几秒钟时间。00:30
时,提前让服务器识别出01:00 --> 02:00
之间的字幕,只要在播放时间到01:00
之前完成即可。就是一边播放一边识别,字幕也需要“缓冲”,如果缓冲的数据不够,就暂停播放等待一会。如果缓冲数据足够,暂停播放也不会继续识别更多数据了,以节省服务器资源。
粗重活都是在服务器里完成的,你的浏览器只是和服务器收发一些文本数据,不需要做任何密集计算,也不需要“录音“权限。
目前的限制
显示“YouTube (auto-generated)“菜单条目
从 Dualsub 2.8.4 开始,默认情况下只显示 Whisper 的菜单条目,如果你要同时显示 YouTube 的菜单条目,需要手动开启。
开启条件:
按 F12 弹出 DevTools,在 Console 里运行:
注意:当你要使用中英双语字幕时,建议使用 Whipser 的结果作为原文字幕,即字幕要这样设置:
而不是这样:
这样设置的话,第一行的译文字幕的原文字幕是 YouTube 的识别结果,而第二行的字幕又是 Whisper 的识别结果,两行字幕译文和原文就对应不上了。因为 Whisper 的识别结果带标点能够改进翻译,但又没有用来翻译就浪费了。
所以我决定在 Dualsub 2.8.4 下,默认情况下先只显示 Whisper 菜单条目。
Dualsub 2.8.5 开始不会自动选择 Whisper 的菜单条目。