900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python字幕翻译(google)

Python字幕翻译(google)

时间:2020-09-25 10:46:17

相关推荐

Python字幕翻译(google)

字幕翻译器(strTranslate.py) 的使用

# 安装:git clone git@:huang007guo/py-googletrans.git# clone 安装master分支: {'client': 'webapp'} , 如果用pip install的版本为: {client=t}python setup.py install# 使用:python subTranslate.py -S ja -D zh-cn -C 10 xxx.raw.srt

# -*- coding: utf-8 -*-import osimport argparseimport sysfrom googletrans import Translatorfrom progressbar import ProgressBar, Percentage, Bar, ETAimport multiprocessingDEFAULT_CONCURRENCY = 10DEFAULT_SRC_LANGUAGE = 'ja'DEFAULT_DST_LANGUAGE = 'zh-CN'class Translator1(object): # pylint: disable=too-few-public-methods"""Class for translating a sentence from a one language to another."""def __init__(self, language, api_key, src, dst):self.language = language#self.api_key = api_key#self.service = build('translate', 'v2', developerKey=self.api_key)self.src = srcself.dst = dstself.translator11 = Translator(service_urls=['',# '',# 'translate.google.co.kr',])def __call__(self, sentence):try:if not sentence:return None# unicode(sentence,'utf-8').encode("utf-8")return self.translator11.translate(sentence, src=self.src, dest=self.dst).text.encode("utf-8")except BaseException as e:print(e)return '翻译错误'def main():"""Run autosub as a command-line program."""parser = argparse.ArgumentParser()parser.add_argument('source_path', help="Path to the video or audio file to subtitle",nargs='?')parser.add_argument('-C', '--concurrency', help="Number of concurrent API requests to make",type=int, default=DEFAULT_CONCURRENCY)parser.add_argument('-S', '--src-language', help="Language spoken in source file",default=DEFAULT_SRC_LANGUAGE)parser.add_argument('-D', '--dst-language', help="Desired language for the subtitles",default=DEFAULT_DST_LANGUAGE)parser.add_argument('-T', '--translator', help="翻译字幕模式", type=int, default=0)args = parser.parse_args()try:sourcePath=args.source_path,concurrency=args.concurrency,srcLanguage=args.src_language,dstLanguage=args.dst_language,nowPath = os.getcwd()print(nowPath+sourcePath[0])subFile = open(sourcePath[0])subFileName = os.path.splitext(sourcePath[0])[0]subCon = subFile.readlines()subFile.close()regions = [x for (k, x) in enumerate(subCon) if (k%4 == 0 or k%4 == 1)]rawSub = [x[:-1] for (k, x) in enumerate(subCon) if (k%4 == 2)]translatedSub = []translatorex = Translator1(dstLanguage[0], None,dst=dstLanguage[0],src=srcLanguage[0])# print(translatorex.__call__(unicode(rawSub[0],'utf-8').encode("utf-8")))# returnprompt = "Translating from {0} to {1}: ".format(srcLanguage[0], dstLanguage[0])widgets = [prompt, Percentage(), ' ', Bar(), ' ', ETA()]pbar = ProgressBar(widgets=widgets, maxval=len(regions)).start()poolHeight = multiprocessing.Pool(concurrency[0])for i, transcript in enumerate(poolHeight.imap(translatorex, rawSub)):translatedSub.append(transcript)# print(translatedSub[0].encode('utf-8'))pbar.update(i)pbar.finish()poolHeight.close()#翻译的字幕translatedSubCon = [regions[k*2]+regions[k*2+1]+translatedSub[k] for (k, x) in enumerate(translatedSub)]subtitle_file_path = subFileName+"."+dstLanguage[0]+".srt"with open(subtitle_file_path, 'wb') as output_file:output_file.write(('\n\n'.join(translatedSubCon)))print("Subtitles file created at {}".format(subtitle_file_path))except KeyboardInterrupt:return 1return 0if __name__ == '__main__':sys.exit(main())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。