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-Agent | iPhone UA字符串 | 避免反爬限制 |
| HTML解析 | 正则表达式匹配 | 轻量级实现 |
| SRT字幕清理 | clean_srt方法 | 处理字幕格式问题 |
百度翻译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的核心安全机制:
配置参数对比
三大翻译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最新多模态模型集成
- 优化的提示词模板
- 稳定的服务端点
统一的提示词工程
三大引擎使用统一的提示词管理系统,确保翻译质量的一致性:
提示词模板包含以下关键元素:
- 系统角色定义:明确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
重试策略配置:
| 引擎类型 | 重试次数 | 重试延迟 | 超时设置 |
|---|---|---|---|
| 智能AI | 2次 | 10秒 | 7200秒 |
| AzureAI | 3次 | 5秒 | 默认超时 |
| Gemini | 3次 | 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/
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



