QTTranslator 2.0.1

QTTranslator 2.0.1

translator_dev 维护。



  • 作者:
  • translator_dev

README

要求

  • iOS 9.0+
  • Xcode 10.0+

安装

通过 CocoaPods 安装,在 podfile 中添加:

	pod 'QTTranslator', '~> 2.0'

权限

所需权限,将以下 key 添加到 info.plist 文件中

	<key>NSCameraUsageDescription</key>
	<string>申请拍照权限</string>
	
	<key>NSMicrophoneUsageDescription</key>
	<string>申请麦克风权限</string>
	
	<key>NSPhotoLibraryUsageDescription</key>
	<string>申请照片图库权限</string>
	
	<key>NSSpeechRecognitionUsageDescription</key>
	<string>申请语音识别权限</string>

使用

设置参数

  • appId 填写申请的 appId,与 app 的 bundleId 绑定,用于身份验证,请妥善保管。必填。
QTTranslateManager.shared.appId = @"XXXX"
  • networkStatus 默认采用 All,不建议修改。
QTTranslateManager.shared.networkSendingStatus = UseNetworkSendingModeAll;
  • envMode 默认Release,调试时设置为Debug模式,仅适用于内网。
QTTranslateManager.shared.envMode = QTTranslateEnvDebug;
  • enableLog 默认NO,调试时开启log。
QTTranslateManager.shared.enableLog = YES;
  • sourceLang 服务请求的源语言参数,如 zh,en 等等,具体类型见 QTLanguageDefine。

  • targetLang 服务请求的目标语言参数,如 zh,en 等等,具体类型见 QTLanguageDefine。

     // 支持的语言种类
     typedef NS_ENUM(NSInteger, QTLangType) {
         QTLangTypeUnknown = -1,
         QTLangTypeZh      = 0,  // Chinese
         QTLangTypeEn      = 1,  // English
         QTLangTypeJp      = 2,  // Japanese
         QTLangTypeKr      = 3,  // Korean
         QTLangTypeEs      = 4, // 西班牙
         QTLangTypeRu      = 5,  // Russian
         QTLangTypeFr      = 6,  // French
         QTLangTypeDe      = 7,  // German
         QTLangTypeTh      = 8,  // 泰国
         QTLangTypeVn      = 9,  // 越南
         QTLangTypeId      = 10,  // 印度尼西亚
         QTLangTypeMy      = 11, // 马来西亚
         QTLangTypeIt      = 12, // 意大利
         QTLangTypePt      = 13, // 葡萄牙
         QTLangTypeTr      = 14  // 土耳其
     };
     
     // 构建语种参数 如日文
     langAbbrFromType(QTLangTypeJp) // 返回 @"jp"
     
     // 构建candidateLangPair参数 如中日文转换
     QTLanguagePair *langPair = [[QTLanguagePair alloc] initWithSource:QTLangTypeZh target:QTLangTypeJp];
     candidateLangPair = [langPair reqValue];	// 返回 @"zh|jp"
     
    

文本翻译

支持的语种

中英互译、中日互译、中韩互译、中俄互译、中法互译、德互译、泰互译、越互译、印尼互译、马来互译、西互译、葡互译、意互译、土互译

// 构建请求参数 QTTextTranslateReq
QTTextTranslateReq *rep = [QTTextTranslateReq new];
rep.sessionUUID = [[NSUUID UUID] UUIDString];
rep.sourceText = @"测试文本";

// 设置语言种类参数方式一
// 设置源语言,目标语言,不用设置candidateLangPair
rep.sourceLang = langAbbrFromType(QTLangTypeZh);
rep.targetLang = langAbbrFromType(QTLangTypeEn)";

// 设置语言种类参数方式二
// 翻译支持自动识别语言种类 
// 设置candidateLangPair,不指定源语言,目标语言
QTLanguagePair *langPair = [[QTLanguagePair alloc] initWithSource:QTLangTypeZh target:QTLangTypeJp];
rep.candidateLangPair = [langPair reqValue];

// 开始文本请求
[QTTranslateManager.shared translateText:rep complete:^(QTTextTranslateRsp *rsp) {
        // 文本翻译请求回调
        // 处理响应参数 QTTextTranslateRsp
}];

语音翻译

支持的语种

中英互译、中日互译、中韩互译、中俄互译、中法互译、德互译、泰互译、越互译、印尼互译、马来互译、西互译、葡互译、意互译、土互译

// 初始化语音翻译引擎
QTAudioTranslateManager *manager = [QTAudioTranslateManager shared];
manager.delegate = self;
[manager configure];

// 开始语音翻译
[manager startWithSourceLang:langAbbrFromType(QTLangTypeZh) targetLang:langAbbrFromType(QTLangTypeEn)];

// 结束语音翻译
[manager stop];


// 实现语音翻译引擎代理 QTAudioTranslateManagerDelegate

// 语音翻译已开始
- (void)didStartTranslate;

// 语音翻译已结束
- (void)didStopTranslate;

// 收到语音翻译的识别结果
- (void)didReceiveRecognizingText:(NSString *)text;

// 语音识别错误 在此回调里主动结束本次语音翻译
- (void)didReceiveRecognizeFail:(NSError *)error;

// 收到语音翻译的最终结果
- (void)didReceiveTranslateRsp:(QTTextTranslateRsp *)rsp;

// 收到语音音量数据,可用于绘制波形图
- (void)didReceiveVoicePower:(CGFloat)value;
    

图片翻译

支持的语种

图片翻译支持中文到(英、日、韩、西班牙、法、德、越、马来、意大利、葡萄牙)语言的互译。

// 构建请求参数 QTImageTranslateReq
QTImageTranslateReq *rep = [QTImageTranslateReq new];
rep.sessionId = NSUUID.UUID.UUIDString;
rep.sourceImage = [UIImage imageNamed:@"testImage"];

// 设置语言种类参数方式一
// 设置源语言,目标语言,不用设置candidateLangPair
rep.sourceLang = langAbbrFromType(QTLangTypeZh);
rep.targetLang = langAbbrFromType(QTLangTypeEn)";

// 设置语言种类参数方式二
// 翻译支持自动识别语言种类 
// 设置candidateLangPair,不指定源语言,目标语言
QTLanguagePair *langPair = [[QTLanguagePair alloc] initWithSource:QTLangTypeZh target:QTLangTypeJp];
rep.candidateLangPair = [langPair reqValue];

// 开始图片翻译请求
[QTTranslateManager.shared translateImage:rep complete:^(QTImageTranslateRsp * _Nonnull rsp) {
        // 图片翻译请求回调
        // 处理响应参数 QTImageTranslateRsp
}];

文本到语音(TTS)

支持的语种

中文、英文、日文、韩文、俄文、法文、德文、泰文、越南文、印尼文、马来文、西班牙文、葡萄牙文、意大利文、土耳其文

TTS 音频文件存储在缓存中,文件有效期为7天。

__weak __typeof(self)weakSelf = self;
QTTtsServiceReq *req = [QTTtsServiceReq new];
req.sessionUUID = [NSUUID UUID].UUIDString;
req.text = @"测试TTS";
req.lang = QTLangTypeZh;
req.rate = 1.8;
BOOL didPlay = [QTTtsManager.shared readTtsReq:req endBlock:^{
   [weakSelf.playButton stopAnimating];
}];
if (didPlay) {
    [weakSelf.playButton startAnimating];
}

历史记录

2.0.1

  • 将账户更改为组织账户(translator_dev)下

2.X

  • 转换为cocoapods分发
  • 增加全功能版,在基础版之上支持AR翻译

1.3.0

  • 增加日志模块,便于调试,定位问题
  • 优化语音翻译模块,完善弱网情况逻辑

1.2.2

  • 优化注释文档
  • WebSocket增加ping pong
  • 语音翻译本地检测10秒无有效文本输入的VAD功能支持自定义配置
  • 增加开发和发布模式切换

1.2.0

  • QTAudioTranslateManager 增加 enableLocalVad 属性
  • QTTranslateManager 增加 envMode 属性

1.1.0

  • QTTextTranslateReq 增加词典查询 针对内部服务
  • QTTextTranslateRsp 丰富返回数据信息
  • QTAudioTranslateManager 移除config方法
  • QTAudioTranslateManager 修改开始语音翻译方法 改为 startWith
  • QTAudioTranslateManager 优化语音翻译返回结果,丰富返回数据信息