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 优化语音翻译返回结果,丰富返回数据信息