Ifan24 / GPT_subtitles

Download YouTube video (or supply your own) and generate dual languange subtitles with OpenAI Whisper and translation API (GPT) 下载 YouTube 视频(或提供您自己的视频)并使用 Whisper 和翻译API (GPT) 生成双语字幕
MIT License
89 stars 17 forks source link

疑问与建议 #2

Closed oplle closed 1 year ago

oplle commented 1 year ago

我目前在找gpt翻译字幕的项目,发现有些是基于网页的,有些是基于服务器的,发现这个符合我需求可以直接使用py脚本实现。

我看这个项目是可以把视频转录成字幕再翻译字幕。我想问能不能仅使用后面的本地字幕翻译功能,我看中文文档好像是可以但是不太确定。仅使用字幕翻译功能,是否需要下载 Whisper 模型,我想后期需要音频转录功能再下载也不迟。

我希望可以设置socks5代理来请求网络连接,我知道有些人是开tun模式,不过我习惯socks5,不想被代理软件接管系统网络。

Ifan24 commented 1 year ago

我想问能不能仅使用后面的本地字幕翻译功能

可以的,我就是先转录字幕和用这个--translation_method 'no_translate'不翻译字幕 ,然后再用 translate_gpt.py 来翻译转录出来的srt文件,如果你已经有了srt文件可以直接用这个脚本来用gpt翻译

是否需要下载 Whisper 模型

只有用 main.py 的时候才需要下载Whisper,只使用translate_gpt.py翻译srt文件是不需要下载Whisper模型的

我希望可以设置socks5代理来请求网络连接,我知道有些人是开tun模式,不过我习惯socks5,不想被代理软件接管系统网络。

这个我不是很了解,开socks5和tun是为了在国内访问openAI的API吗?如果是的话感觉可以开个全局的VPN,想要自定义代理的话,我看了下openai那个库貌似没有可以用proxy的地方,可能还是需要设置全局的proxy

oplle commented 1 year ago

这个我不是很了解,开socks5和tun是为了在国内访问openAI的API吗?如果是的话感觉可以开个全局的VPN,想要自定义代理的话,我看了下openai那个库貌似没有可以用proxy的地方,可能还是需要设置全局的proxy

好的,前面的问题得到了理想中的解答

就算不是为了openai,我看项目有从yt下载视频的选项,那么也得走代理啊,使用socks5只是为了不开全局代理,应该可以在cmd使用set https_proxy=socks5://127.0.0.1:1080这种方式来进行代理设置吧,还有另一种形式,我记得py可以设置下面这种代理方式。实在不行我就开全局或者把字幕放到服务器,请问翻译的时候会请求哪些域名,我的代理软件即便是开全局也可以设置仅对指定的域名和IP走代理。我个人认为应该有api.openai.com和translate.googleapis.com,但是不太确定还有没有别的。 proxies = { 'http': 'socks5://127.0.0.1:1080', 'https': 'socks5://127.0.0.1:1080',

对了,translate_gpt.py这个脚本是chatgpt的翻译,那么translation_service.py这个就是google的翻译脚本吧

Ifan24 commented 1 year ago

我个人认为应该有api.openai.com和translate.googleapis.com

用GPT翻译的时候用了response = openai.ChatCompletion.create()这个请求,google翻译用的是googletrans 这个库,所以应该就是那两个域名了

translate_gpt.py这个脚本是chatgpt的翻译,那么translation_service.py这个就是google的翻译脚本吧

是的,translation_service.py 里面放的是一些除了GPT以外的翻译方法class,用来直接翻译Whisper输出的Dictionary,要用来翻译srt格式的话可能需要转换一下,在main.py是这样用的

translated_transcript = self.translation_service.translate(transcript, src_lang=self.video_language, tr_lang=self.target_language)