pyVideoTrans翻译引擎集成全解析

pyVideoTrans翻译引擎集成全解析

【免费下载链接】pyvideotrans Translate the video from one language to another and add dubbing. 将视频从一种语言翻译为另一种语言,并添加配音 【免费下载链接】pyvideotrans 项目地址: https://gitcode.com/gh_mirrors/py/pyvideotrans

本文全面解析了pyVideoTrans项目中集成的多种翻译引擎,包括微软、Google、百度三大主流API,智能AI、AzureAI、Gemini三大AI翻译引擎,以及DeepL、DeepLX专业翻译服务和离线翻译OTT与自定义API扩展。文章详细介绍了各引擎的技术实现方式、架构设计、配置参数和性能优化特性,展现了项目对多平台兼容性和用户体验的深度考量。

微软、Google、百度翻译API对接

在pyVideoTrans项目中,三大主流翻译API(微软、Google、百度)的集成展现了不同的技术实现方式和设计哲学。这些API对接不仅提供了高质量的翻译服务,还体现了项目对多平台兼容性和用户体验的深度考量。

微软翻译API集成

微软翻译API通过_microsoft.py模块实现,采用了现代化的认证机制和RESTful API设计:

@dataclass
class Microsoft(BaseTrans):
    def __post_init__(self):
        super().__post_init__()
        self.aisendsrt = False
        pro = self._set_proxy(type='set')
        if pro:
            self.proxies = {"https": pro, "http": pro}

    @retry(retry=retry_if_not_exception_type(RetryRaise.NO_RETRY_EXCEPT), 
           stop=stop_after_attempt(RETRY_NUMS),
           wait=wait_fixed(RETRY_DELAY))
    def _item_task(self, data: Union[List[str], str]) -> str:
        # 获取认证token
        auth = requests.get('https://edge.microsoft.com/translate/auth', 
                           headers=headers, proxies=self.proxies, verify=False)
        auth.raise_for_status()
        
        # 处理中文语言代码映射
        tocode = self.target_code
        if tocode.lower() == 'zh-cn':
            tocode = 'zh-Hans'
        elif tocode.lower() == 'zh-tw':
            tocode = 'zh-Hant'
            
        # 构建翻译请求
        url = f"https://api-edge.cognitive.microsofttranslator.com/translate?from=&to={tocode}&api-version=3.0"
        headers['Authorization'] = f"Bearer {auth.text}"
        response = requests.post(url, json=[{"Text": "\n".join(data)}], 
                                proxies=self.proxies, headers=headers, timeout=300)

微软API的特点包括:

  • 动态认证机制:每次请求前获取新的Bearer token
  • 语言代码标准化:将zh-cn/zh-tw映射为zh-Hans/zh-Hant
  • 批量处理支持:支持多文本一次性翻译
  • 完善的错误处理:包含重试机制和异常处理

Google翻译API实现

Google翻译通过_google.py模块实现,采用了网页版API的直接调用方式:

@dataclass
class Google(BaseTrans):
    def _item_task(self, data: Union[List[str], str]) -> str:
        text = "\n".join([i.strip() for i in data]) if isinstance(data, list) else data
        source_code = 'auto' if not self.source_code else self.source_code
        
        # 构建Google翻译URL
        url = f"https://translate.google.com/m?sl={source_code}&tl={self.target_code}&hl={self.target_code}&q={text}"
        
        headers = {
            'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15'
        }
        response = requests.get(url, headers=headers, timeout=300, proxies=self.proxies, verify=False)
        
        # 使用正则表达式提取翻译结果
        re_result = re.search(r'<div\s+class=\Wresult-container\W>([^<]+?)<', response.text)
        return self.clean_srt(re_result.group(1)) if self.is_srt and self.aisendsrt else re_result.group(1)

Google翻译的特色功能:

功能特性实现方式优势
自动语言检测source_code = 'auto'无需指定源语言
移动端User-AgentiPhone UA字符串避免反爬限制
HTML解析正则表达式匹配轻量级实现
SRT字幕清理clean_srt方法处理字幕格式问题

mermaid

百度翻译API集成

百度翻译通过_baidu.py模块实现,采用了官方API的标准签名认证机制:

@dataclass
class Baidu(BaseTrans):
    def __post_init__(self):
        super().__post_init__()
        self.aisendsrt = False
        # 移除代理环境变量以确保API正常调用
        proxy = os.environ.get('http_proxy')
        if proxy:
            for env_var in ['http_proxy', 'https_proxy', 'all_proxy']:
                if env_var in os.environ: del os.environ[env_var]

    def _item_task(self, data: Union[List[str], str]) -> str:
        text = "\n".join(data)
        salt = int(time.time())
        
        # 生成MD5签名
        strtext = f"{config.params['baidu_appid']}{text}{salt}{config.params['baidu_miyue']}"
        md5 = hashlib.md5()
        md5.update(strtext.encode('utf-8'))
        sign = md5.hexdigest()
        
        # 处理中文语言代码
        tocode = self.target_code
        if tocode.lower() == 'zh-tw': tocode = 'cht'
        elif tocode.lower() == 'zh-cn': tocode = 'zh'
            
        # 构建API请求URL
        requrl = f"http://api.fanyi.baidu.com/api/trans/vip/translate?q={text}&from=auto&to={tocode}&appid={config.params['baidu_appid']}&salt={salt}&sign={sign}"
        
        response = requests.get(requrl, proxies={"http": "", "https": ""})
        result = [tools.cleartext(tres['dst']) for tres in res['trans_result']]
        return "\n".join(result)

百度翻译API的核心安全机制:

mermaid

配置参数对比

三大翻译API的配置要求对比:

API提供商必需参数认证方式请求频率限制支持语言数
微软翻译无(公开API)Bearer Token动态认证相对宽松100+
Google翻译无(公开网页版)无认证有IP限制100+
百度翻译AppID + 密钥MD5签名认证按套餐限制200+

错误处理与重试机制

所有翻译API都集成了统一的错误处理和重试机制:

@retry(retry=retry_if_not_exception_type(RetryRaise.NO_RETRY_EXCEPT), 
       stop=stop_after_attempt(RETRY_NUMS),
       wait=wait_fixed(RETRY_DELAY),
       before=before_log(config.logger, logging.INFO),
       after=after_log(config.logger, logging.INFO),
       retry_error_callback=RetryRaise._raise)

这种设计确保了:

  • 自动重试:网络波动时自动重试3次
  • 日志记录:每次请求前后记录详细日志
  • 异常分类:区分可重试异常和不可重试异常
  • 超时控制:统一的300秒超时设置

语言代码映射处理

各API对语言代码的处理方式:

# 微软翻译语言代码映射
if tocode.lower() == 'zh-cn': tocode = 'zh-Hans'
elif tocode.lower() == 'zh-tw': tocode = 'zh-Hant'

# 百度翻译语言代码映射  
if tocode.lower() == 'zh-tw': tocode = 'cht'
elif tocode.lower() == 'zh-cn': tocode = 'zh'

# Google翻译使用标准代码
# 无需特殊映射

这种设计体现了pyVideoTrans项目对多API兼容性的重视,通过统一的接口抽象和差异处理,为用户提供了无缝的翻译体验。无论是字幕翻译、文本翻译还是视频配音,三大翻译API都能协同工作,确保翻译质量和系统稳定性。

智能AI、AzureAI、Gemini大模型翻译引擎集成详解

在pyVideoTrans项目中,三大主流AI翻译引擎(智能AI、AzureAI、Gemini)的集成展现了现代视频翻译技术的强大能力。这些引擎通过统一的接口设计和智能的提示词工程,为视频字幕翻译提供了高质量的解决方案。

核心架构设计

pyVideoTrans采用统一的翻译器基类设计,所有翻译引擎都继承自BaseTrans基类,实现了标准化的翻译接口:

@dataclass
class BaseTrans:
    def __post_init__(self):
        # 初始化基础配置
        self.trans_thread = int(config.settings.get('aitrans_thread', 50))
        
    def _item_task(self, data: Union[List[str], str]) -> str:
        # 核心翻译方法,由子类实现
        pass
        
    def run(self) -> Union[List, str, None]:
        # 执行翻译流程
        return self._run_text() if not self.is_srt else self._run_srt()

智能AI翻译引擎实现

智能AI翻译引擎通过智能AI API提供强大的翻译能力,支持自定义API端点:

class 智能AI(BaseTrans):
    def __post_init__(self):
        super().__post_init__()
        self.api_url = self._get_url(config.params['智能AI_api'])
        self.model_name = config.params["智能AI_model"]
        self.prompt = tools.get_prompt(ainame='智能AI', is_srt=self.is_srt)
        
    def _item_task(self, data: Union[List[str], str]) -> str:
        message = [
            {'role': 'system', 'content': "You are a top-notch subtitle translation engine."},
            {'role': 'user', 'content': self.prompt.replace('<INPUT></INPUT>', f'<INPUT>{text}</INPUT>')},
        ]
        
        model = OpenAI(api_key=config.params['智能AI_key'], base_url=self.api_url)
        response = model.chat.completions.create(
            model=config.params['智能AI_model'],
            messages=message
        )
        
        # 提取翻译结果
        match = re.search(r'<TRANSLATE_TEXT>(.*?)</TRANSLATE_TEXT>', result, re.S | re.I)
        return match.group(1) if match else result.strip()

关键技术特性:

  • 支持自定义API端点,兼容智能AI官方API和第三方代理
  • 智能提示词工程,针对字幕翻译场景优化
  • 自动代理检测和配置
  • 重试机制确保翻译稳定性

AzureAI翻译引擎集成

Azure AI服务提供企业级的翻译解决方案:

class AzureGPT(BaseTrans):
    def __post_init__(self):
        super().__post_init__()
        self.model_name = config.params["azure_model"]
        self.prompt = tools.get_prompt(ainame='azure', is_srt=self.is_srt)
        
    def _item_task(self, data: Union[List[str], str]) -> str:
        model = AzureOpenAI(
            api_key=config.params["azure_key"],
            api_version=config.params['azure_version'],
            azure_endpoint=config.params["azure_api"]
        )
        
        response = model.chat.completions.create(
            model=config.params["azure_model"],
            messages=message
        )
        
        # 结果解析逻辑
        match = re.search(r'<TRANSLATE_TEXT>(.*?)</TRANSLATE_TEXT>', result, re.S)
        return match.group(1) if match else result.strip()

企业级特性:

  • 官方Azure AI服务集成
  • API版本管理支持
  • 企业级安全性和合规性
  • 稳定的服务级别协议

Gemini翻译引擎实现

Google Gemini模型提供多模态翻译能力:

class Gemini(BaseTrans):
    def __post_init__(self):
        super().__post_init__()
        self.model_name = config.params["gemini_model"]
        self.api_keys = config.params.get('gemini_key', '').strip().split(',')
        self.api_url = 'https://generativelanguage.googleapis.com/v1beta/openai/'
        
    def _item_task(self, data: Union[List[str], str]) -> str:
        api_key = self.api_keys.pop(0)
        self.api_keys.append(api_key)  # 轮询使用API密钥
        
        model = OpenAI(api_key=api_key, base_url=self.api_url)
        response = model.chat.completions.create(
            model=config.params["gemini_model"],
            messages=message
        )
        
        # 多模态结果处理
        match = re.search(r'<TRANSLATE_TEXT>(.*?)</TRANSLATE_TEXT>', result, re.S | re.I)
        return match.group(1) if match else result.strip()

多模态优势:

  • 支持多API密钥轮询,提高请求速率限制
  • Google最新多模态模型集成
  • 优化的提示词模板
  • 稳定的服务端点

统一的提示词工程

三大引擎使用统一的提示词管理系统,确保翻译质量的一致性:

mermaid

提示词模板包含以下关键元素:

  • 系统角色定义:明确AI作为专业字幕翻译引擎
  • 目标语言指定:动态替换{lang}占位符
  • 输入文本包装:使用标签封装
  • 输出格式要求:指定<TRANSLATE_TEXT>返回格式

错误处理和重试机制

所有翻译引擎都实现了健壮的错误处理:

@retry(retry=retry_if_not_exception_type(RetryRaise.NO_RETRY_EXCEPT), 
       stop=stop_after_attempt(RETRY_NUMS),
       wait=wait_fixed(RETRY_DELAY))
def _item_task(self, data: Union[List[str], str]) -> str:
    # 翻译实现代码
    pass

重试策略配置:

引擎类型重试次数重试延迟超时设置
智能AI2次10秒7200秒
AzureAI3次5秒默认超时
Gemini3次10秒7200秒

性能优化特性

并发处理:

  • 多线程翻译支持,默认50线程
  • 智能批处理,优化API调用频率
  • 缓存机制减少重复翻译

代理支持:

def _check_proxy(self):
    if self.api_url and (re.search('localhost', self.api_url) or 
                         re.match(r'^https?://(\d+\.){3}\d+(:\d+)?', self.api_url)):
        self.proxies = None
        return
    pro = self._set_proxy(type='set')
    if pro:
        self.proxies = pro

配置管理

通过统一的配置文件管理各引擎参数:

[智能AI]
key = sk-your-智能AI-key
api = https://api.智能AI.com/v1
model = gpt-4-turbo

[azure]
key = your-azure-key
api = https://your-resource.openai.azure.com/
model = gpt-4
version = 2023-12-01-preview

[gemini]
key = your-gemini-key1,your-gemini-key2
model = gemini-pro

实际应用场景

三大引擎在不同场景下的优势对比:

场景需求推荐引擎优势说明
高质量翻译智能AI语言理解能力强,翻译质量高
企业环境AzureAI安全性好,合规性强
高并发需求Gemini多API密钥支持,速率限制高
成本敏感轮询使用根据预算灵活选择引擎

通过这种模块化的设计,pyVideoTrans为用户提供了灵活、可靠的多引擎翻译解决方案,能够根据具体需求选择最适合的AI翻译服务。

DeepL、DeepLX专业翻译服务

在pyVideoTrans项目中,DeepL和DeepLX作为两个专业级别的翻译服务,为视频翻译提供了高质量的机器翻译能力。这两个翻译引擎在项目中分别位于翻译通道列表的第4位和第5位,为用户提供了专业级的翻译体验。

DeepL官方API集成

DeepL官方API集成基于deepl Python库实现,提供了完整的官方API支持。该实现位于videotrans/translator/_deepl.py文件中,采用数据类装饰器和重试机制确保翻译的稳定性。

核心功能特性

DeepL翻译器具备以下核心特性:

  • 多语言支持:支持DeepL官方提供的所有语言对
  • 术语表功能:支持使用术语表ID(Glossary ID)进行专业术语翻译
  • 代理支持:可配置HTTP/

【免费下载链接】pyvideotrans Translate the video from one language to another and add dubbing. 将视频从一种语言翻译为另一种语言,并添加配音 【免费下载链接】pyvideotrans 项目地址: https://gitcode.com/gh_mirrors/py/pyvideotrans

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值