Python免费字幕翻译(google)

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

    # 安装:
    git clone git@github.com: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 os
import argparse
import sys

from googletrans import Translator
from progressbar import ProgressBar, Percentage, Bar, ETA
import multiprocessing


DEFAULT_CONCURRENCY = 10
DEFAULT_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 = src
        self.dst = dst
        self.translator11 = Translator(service_urls=[
            'translate.google.cn',
            # 'translate.google.com',
            # '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")))
        # return
        prompt = "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 1

    return 0


if __name__ == '__main__':
    sys.exit(main())

生成的具体步骤是什么? 要使用Python生成视频字幕,你可以按照以下步骤进行操作: 1. 首先,你需要找到视频文件,并确保你已经安装了必要的Python库。使用speech_recognition库进行语音转文字,你可以选择不同的引擎,如百度、网易见外、谷歌或IBM等。对于这个例子,我们选择speech_recognition库。 2. 安装speech_recognition库。你可以使用以下命令在Python环境中安装该库:`pip install SpeechRecognition` 3. 使用pydub库将视频中的音频分割成适当的片段。pydub是一个用于处理音频文件的库,可以将音频文件切割成较小的片段。你可以使用以下命令安装pydub库:`pip install pydub` 4. 将音频文件分割成片段后,将每个片段转换成文字。你可以使用speech_recognition库的功能来实现这一点。具体步骤是将每个音频片段加载到speech_recognition库中,然后使用选定的语音转文字引擎将其转换成文字。 5. 一旦你获得了每个片段的文字内容,你可以将它们组合起来,创建一个字幕文件。你可以选择不同的字幕文件格式,如SRT或VTT等。 请注意,这只是生成视频字幕的一个基本示例。根据你的需求,你可能需要进一步调整和优化这个过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [一次用Python制作电影字幕的尝试](https://blog.csdn.net/weixin_42789334/article/details/121331711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值