文章首发于github.io 2018-08-04 12:43:20

google翻译的强大,就像我们公司的slogan : "让语言无国界,让世人心相通"

友情提示: google相关的服务都是需要翻墙的,不然在大陆无法访问

写这篇文章的目的就是为了整合一下这方面的资料, 大概是因为被墙,网上关于这方面的资料很少,有些是过于老旧,甚至是不适用的,所以就不得不做个笔记就当作是探探路。

google语音识别

  1. google注册相关的API_KEY, 地址: https://cloud.google.com/speech-to-text/docs/samples
  2. 下载demo https://github.com/GoogleCloudPlatform/ios-docs-samples/tree/master/speech/Objective-C/Speech-REST-Nonstreaming
  3. 录制语音文件存于沙盒, 上传语音文件到 https://speech.googleapis.com/v1/speech:recognize?key=xxxxx

核心代码:

  NSString *service = @"https://speech.googleapis.com/v1/speech:recognize";
service = [service stringByAppendingString:@"?key="];
service = [service stringByAppendingString:API_KEY]; NSData *audioData = [NSData dataWithContentsOfFile:[self soundFilePath]];//沙盒里的录音文件 具体看google提供的demo
NSDictionary *configRequest = @{@"encoding":@"LINEAR16",
@"sampleRateHertz":@(SAMPLE_RATE),
@"languageCode":@"zh-cn",
@"maxAlternatives":@30};
NSDictionary *audioRequest = @{@"content":[audioData base64EncodedStringWithOptions:0]};
NSDictionary *requestDictionary = @{@"config":configRequest,
@"audio":audioRequest};
NSError *error;
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestDictionary
options:0
error:&error]; NSString *path = service;
NSURL *URL = [NSURL URLWithString:path];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
// if your API key has a bundle ID restriction, specify the bundle ID like this:
[request addValue:[[NSBundle mainBundle] bundleIdentifier] forHTTPHeaderField:@"X-Ios-Bundle-Identifier"];
NSString *contentType = @"application/json";
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:requestData];
[request setHTTPMethod:@"POST"]; NSURLSessionTask *task =
[[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
dispatch_async(dispatch_get_main_queue(),
^{
NSString *stringResult = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
_textView.text = stringResult;
NSLog(@"RESULT: %@ ", stringResult);
});
}];
[task resume];

google 文本翻译

文本翻译和语音识别类似,都需要API_KEY,同样是POST请求

/**
MARK:- 文本互转 @param text 文本
@param targetCode 翻译的对应语言代码
@param callBack 回调结果json字符串
*/
- (void)translateOriginText:(NSString *)text
targetCode:(NSString *)targetCode
callBack:(void(^)(NSString *objStr))callBack{
NSString *urlStr = [NSString stringWithFormat:@"https://translation.googleapis.com/language/translate/v2?key=%@",API_KEY];
NSURL *URL = [NSURL URLWithString: urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request addValue:[[NSBundle mainBundle] bundleIdentifier] forHTTPHeaderField:@"X-Ios-Bundle-Identifier"];
NSString *contentType = @"application/json";
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
// q: 原文本 tagret: 目标语言的代码 zh-cn,en-us...等
NSDictionary *requestDictionary = @{ @"q" : text, @"target" : targetCode };
NSError *error;
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestDictionary options:0 error:&error];
[request setHTTPBody:requestData];
[request setHTTPMethod:@"POST"];
NSURLSessionTask *task =
[[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
dispatch_async(dispatch_get_main_queue(),
^{
NSString *stringResult = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"RESULT: %@ ", stringResult);
!callBack? : callBack(stringResult);
});
}];
[task resume];
}

google 语音合成

  • 合成是免费的 , 然后是这个接口 http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&ttsspeed=1
  • 参数组成
//基地址
BASE_URL = @"http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&ttsspeed=1" //拼接规则和get请求类似
total //标准为100个字符为一组 然后total是总共多少组
idx //下标,第几组
textlen //所有文字的计数,就是这个字符串的长度
q //合成的文字内容,中文的话需要转编码utf-8最为合适
tl //语言,跟识别的语言一致

主要参数介绍:

ie: 输入参数编码 input-encode 一般为utf-8

oe: 输入参数编码 output-encode 一般为utf-8

ttsspeed: 合成的语速

tl: 目标语言代码 target language

hl: 当地语言代码 home language

url编码前:

http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&ttsspeed=1&total=1&idx=1&textlen=6&q=某某某是傻逼&tl=zh-cn

url编码后:

http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&ttsspeed=1&total=1&idx=1&textlen=6&q=%E9%99%88%E8%89%AF%E8%89%AF%E6%98%AF%E5%82%BB%E9%80%BC&tl=zh-cn

核心代码

///MARK:- 文本 转 语音在线合成
- (void)synthesisAudioWithTranslateWithText:(NSString *)text{
NSString *baseUrl = @"http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&ttsspeed=1";
//url编码
NSCharacterSet *encodeUrlSet = [NSCharacterSet URLQueryAllowedCharacterSet];
NSString *encodeContent = [text stringByAddingPercentEncodingWithAllowedCharacters:encodeUrlSet];
NSString *urlStr = [NSString stringWithFormat:@"%@&total=1&idx=1&textlen=%ld&q=%@&tl=%@",baseUrl,text.length,encodeContent,self.targetCode];
NSURL *url = [NSURL URLWithString: urlStr];
//播放拼接的链接
UIWebView *web = [[UIWebView alloc] init];
web.hidden = YES;
[self.view addSubview: web];
NSURLRequest *req = [[NSURLRequest alloc] initWithURL:url];
[web loadRequest: req];
}

主流的几种语言的代码对照表:

国家 languageCode

集成google翻译的小tips的更多相关文章

  1. 使用jQuery集成Google翻译

    利用jQuery,轻松将google翻译集成到你的web应用中. 1. [代码][JavaScript]代码     ​1<script src="Scripts/Translator ...

  2. Google搜索引擎使用小技巧

    相信大家都知道,利用Google等搜索引擎进行信息查证是翻译过程中十分重要的一环.事实上,掌握信息搜索的技巧和方法,不仅对翻译工作大有帮助, 在网络信息时代,学会充分利用搜索引擎,在很多情况下都可以达 ...

  3. delphi 利用HTTP的POST方法做个在线翻译的小工具 good

    最近做了一个英汉小翻译的东东,用的是VC,ADO + Access访问数据库,单词数据库是从金山打字通2002弄来的.后来想了想,想再加个在线翻译的功能,记得经常使用GOOGLE翻译网站的在线翻译,也 ...

  4. Python调用Google翻译

    出自:http://blog.csdn.net/zhaoyl03/article/details/8830806 最近想动手做一个文档自动下载器,需要模拟浏览器的行为.虽然感觉思路上没有困难,但在技术 ...

  5. 破解google翻译API全过程

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/6554340.html 前言 google的翻译不得不承认它 ...

  6. Google翻译PDF文档

    Google翻译PDF文档 翻译软件虽多如牛毛,但有关整段/全文翻译,堪用的软件极少, 涉及专业技术的文献.胜任翻译工作的人力稀缺.少不了project师讴心沥血. 由于多是PDF格式.即使要翻译个概 ...

  7. Android 应用程序集成Google 登录及二次封装

    谷歌登录API:  https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...

  8. HTML meta锚点跳转 小tips

    小tips meta锚点跳转 http://www.zhangxinxu.com/wordpress/2015/03/meta-http-equiv-refresh-content/

  9. 添加了有道生词本的 chrome google翻译扩展和有道翻译扩展

    在chrome发布项目,需要先花美金认证,还得要美国ID,无奈. 直接上源码,需手动导入. 原始项目源码并未开源,个人是从chrome本地文件里拿出来的,拓展来的,侵删(本来想着自已写一个,业余时间, ...

随机推荐

  1. Unable to cast object of type 'System.Int32' to type 'System.String'.

    最近在研究.netcore,尝试把前后端完全分离.但是在写接口的时候,Post参数是FromBody的时候报错了 Microsoft.AspNetCore.Diagnostics.DeveloperE ...

  2. 共克时艰,停工不停学 Serverless 在线课堂免费开课

    二月份,Serverless 团队联合腾讯云大学与云+社区免费推出 Serverless 在线直播课程,课程涵盖 Serverless 架构解密.技术解析以及不同应用场景下的最佳实战指导,让你从 0 ...

  3. HashMap、Hashtable、ConcurrentHashMap、ConcurrentSkipListMap对比及java并发包(java.util.concurrent)

    一.基础普及 接口(interface) 类(class) 继承类 实现的接口 Array √ Collection √ Set √ Collection List √ Collection Map ...

  4. life|October the 1st| five twenty|three–fifths|1970s|30s

    The music is full of  (a, an, the, /) life. It can release your pressure to a large extent, so I enj ...

  5. 3dmax2017卸载/安装失败/如何彻底卸载清除干净3dmax2017注册表和文件的方法

    3dmax2017提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2017失败提示3dmax2017安装未完成,某些产品无法安装,也有时候想重新安装3 ...

  6. jmeter如何解决乱码问题

    使用jmeter的时候时常遇到中文乱码的情况,下面总结一下几个解决方法,方便以后进行复习. 1.添加后置处理器Beanshell PostProcessor,在输入框内写入“prve.setDateE ...

  7. Visual Studio通过Cordova支持混合跨平台移动开发

    Microsoft在Visual Studio 2013 Update 2中添加了对混合跨平台移动应用程序的本地支持. Microsoft早在2011年就已经开始了与PhoneGap的合作,那时候是为 ...

  8. CentOS 7上Docker的安装

    一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看 ...

  9. 添加找回鼠标右键新建菜单里的新建office2003/2007/2010文档的简洁方法

    鼠标右键新建菜单里的新建office文档丢失了怎么办?我们可以通过一些优化设置软件如优化大师来定制,但更简单的方法是只需要导入相应的注册表设置就行了. 下面即在鼠标右键新建菜单里添加新建office2 ...

  10. 正则表达式入门-python代码

    题记 本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例. 正则表达式在很多的应用中都有使用到,特别是在网络爬虫中格式化html后取出自 ...