关于android的广告词,关于android:随心译无广告的专属实时翻译神器
前言
随心译是一款集语音辨认、文本翻译和语音合成于一体的实时翻译利用,反对多国语言间的实时对话翻译与文本翻译,实用于出国旅行、社交交换、语言学习等等场合。
借助Huawei HMS Core ML Kit,任何人都能够简略便捷的应用本来十分复杂的机器学习能力,助力开发者更快更好地开发各类AI利用。
场景
当你在工作中遇到翻译问题而无奈解决,当你想要出国游览却因为语言问题而迟迟做不出决定。
开发筹备
1.配置华为Maven仓地址
2.增加编译SDK依赖
关上利用级的“build.gradle”文件
1 dependencies {
2 ...
3 // 引入实时语音辨认服务插件
4 implementation 'com.huawei.hms:ml-computer-voice-asr-plugin:2.0.3.300'
5 // 引入文本翻译服务SDK
6 implementation 'com.huawei.hms:ml-computer-translate:2.0.4.300'
7 // 引入文本翻译算法包
8 implementation 'com.huawei.hms:ml-computer-translate-model:2.0.4.300'
9 // 引入语音合成服务SDK
10 implementation 'com.huawei.hms:ml-computer-voice-tts:2.0.4.300'
11 // 引入离线语音合成bee语音包
12 implementation 'com.huawei.hms:ml-computer-voice-tts-model-bee:2.0.4.300'
13 }
上述步骤能够参考开发者网站中的利用开发介绍
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5
3.在AndroidManifest.xml中增加权限
关上main中的AndroidManifest.xml文件,在
1
2
3
4
5
开发步骤
页面设计
参考activity_main.xml布局文件,设计本人专属好用的页面app页面
点击“开始辨认”按钮,加载ASR模块,辨认用户谈话的内容。
点击“合成语音”,加载TTS模块,把翻译后的内容间接朗诵进去。
性能开发
应用实时语音辨认服务插件,疾速集成ASR能力
1 publicvoidstartAsr(View view){
2 // 通过intent进行辨认设置。
3 Intent intent =newIntent(this,MLAsrCaptureActivity.class)
4 // 设置辨认语言为英语,若不设置,则默认辨认英语。反对设置:"zh-CN":中文;"en-US":英语;"fr-FR":法语;"es-ES":西班牙语;"de-DE":德语;"it-IT":意大利语。
5 .putExtra(MLAsrCaptureConstants.LANGUAGE,Constants.ASR_SOURCE[spinnerInput.getSelectedItemPosition()])
6 // 设置拾音界面是否显示辨认后果,MLAsrCaptureConstants.FEATURE_ALLINONE为不显示,MLAsrCaptureConstants.FEATURE_WORDFLUX为显示。
7 .putExtra(MLAsrCaptureConstants.FEATURE,MLAsrCaptureConstants.FEATURE_WORDFLUX);
8 // 100示意以后Activity和拾音界面Activity之间的申请码,通过该码能够在以后Activity中获取拾音界面的处理结果。
9 startActivityForResult(intent,100);
10 }
11
12 @Override
13 protectedvoidonActivityResult(int requestCode,int resultCode,Intent data){
14 super.onActivityResult(requestCode, resultCode, data);
15 String text;
16 // 100是第2步中定义的以后Activity和拾音界面Activity之间的申请码。
17 if(requestCode ==100){
18 switch(resultCode){
19 // 返回值为MLAsrCaptureConstants.ASR_SUCCESS示意辨认胜利。
20 caseMLAsrCaptureConstants.ASR_SUCCESS:
21 if(data !=null){
22 Bundle bundle = data.getExtras();
23 // 获取语音辨认失去的文本信息。
24 if(bundle !=null&& bundle.containsKey(MLAsrCaptureConstants.ASR_RESULT)){
25 text = bundle.getString(MLAsrCaptureConstants.ASR_RESULT);
26 // 辨认失去的文本信息处理。
27 textViewInput.setText(text);
28 Translation.run(this, textViewOutput, spinnerInput.getSelectedItemPosition(),
29 spinnerOutput.getSelectedItemPosition(), text);
30 }
31 }
32 break;
33 ...
34 }
35 }
36 }
新建Translation类,用于调用文本翻译的能力
首先裸露公共办法,依据参数判断应用在线翻译或者离线翻译
1 public static void run(Activity activity, TextView textView, int sourcePosition, int targetPosition, String sourceText) {
2 Log.d(TAG, Constants.TRANSLATE[sourcePosition] + ", " + Constants.TRANSLATE[targetPosition] + ", " + sourceText);
3 if (isOffline) {
4 onDeviceTranslation(activity, textView, sourcePosition, targetPosition, sourceText);
5 } else {
6 realTimeTranslation(textView, sourcePosition, targetPosition, sourceText);
7 }
8 }
接着别离引入在线和离线翻译的具体方法
1 private static void realTimeTranslation(final TextView textView, int sourcePosition, final int targetPosition, String sourceText) {
2 Log.d(TAG, "realTimeTranslation");
3 ...
4 }
5
6 private static void onDeviceTranslation(final Activity activity, final TextView textView, final int sourcePosition, final int targetPosition, final String sourceText) {
7 Set result = MLTranslateLanguage.syncGetLocalAllLanguages();
8 Log.d(TAG, "本地离线翻译反对的语种: " + Arrays.toString(result.toArray()));
9 ...
10 }
3.新建TTS类,用于调用语音合成的能力
同Translation一样,首先裸露公共办法,依据参数判断应用在线语音合成或者离线语音合成
1 publicstaticvoidrun(Activity activity,int targetPosition,String sourceText){
2 Log.d(TAG, sourceText);
3 if(isNotAuto || sourceText.isEmpty()){
4 return;
5 }
6 if(isOffline){
7 if(0== targetPosition){
8 Toast.makeText(activity,"暂不反对离线中文发音",Toast.LENGTH_SHORT).show();
9 return;
10 }
11 offlineTts(activity,Constants.TTS_TARGET[targetPosition],
12 Constants.TTS_TARGET_SPEAKER_OFFLINE[targetPosition], sourceText);
13 }else{
14 onlineTts(Constants.TTS_TARGET[targetPosition],Constants.TTS_TARGET_SPEAKER[targetPosition], sourceText);
15 }
16 }
接着,别离引入在线和离线语音合成的具体实现
1 privatestaticvoidonlineTts(String language,String person,String sourceText){
2 Log.d(TAG, language +", "+ person +", "+ sourceText);
3 ...
4 }
5
6 privatestaticvoidofflineTts(finalActivity activity,String language,finalString person,finalString sourceText){
7 // 应用自定义参数配置创立语音合成引擎。
8 // 发音人名称请参见“音色试听”章节。
9 finalMLTtsConfig mlTtsConfig =newMLTtsConfig().setLanguage(language)
10 .setPerson(person)
11 // 设置语音合成的模式为离线模式,不设置默认为在线模式。
12 .setSynthesizeMode(MLTtsConstants.TTS_OFFLINE_MODE);
13 ...
14 }
最终成果
源码
参加开发者探讨请到Reddit社区:
https://www.reddit.com/r/HMSCore/
下载demo和示例代码请到Git:
https://github.com/HMS-Core
解决集成问题请到Stack Overflow:
https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201445556538420539?fid=18
原作者:胡椒
关于android的广告词,关于android:随心译无广告的专属实时翻译神器相关推荐
- android红心点赞动画,Android控件实现直播App特效之点赞飘心动画
现在市面上直播类的应用可以说是一抓一大把,随随便便就以什么主题来开发个直播App,说白了就想在这领域分杯羹.在使用这些应用过程中其实不难发现,在所有的直播界面,少不了的就是各种打赏.各种点赞.今天自己 ...
- android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...
1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...
- android红心点赞动画,Android控件实现直播App点赞飘心动画
现在市面上直播类的应用可以说是一抓一大把,随随便便就以什么主题来开发个直播App,说白了就想在这领域分杯羹.在使用这些应用过程中其实不难发现,在所有的直播界面,少不了的就是各种打赏.各种点赞.今天自己 ...
- android如何自定义viewpager,Android自定义ViewPager实现个性化的图片切换效果
第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做.时间长了,ViewPager的 ...
- Android自定义sleep图,android自定义view实现钟表效果
本文实例为大家分享了android view实现钟表的具体代码,供大家参考,具体内容如下 先看效果图: 自定义view大家肯定已经不陌生了,所以直接今天直接步入正题:如何利用canvas去绘制出一个钟 ...
- [Android]解决Fragment无法使用android:onClick属性
有过MFC或者WinForm或者WPF经验的程序员一定对于Button的Click事件绑定情有独钟,然而当转移到 Android平台开发的时候会发现,之前的种种便利全都不在,只有看着闹心的set ...
- android 程序崩溃处理,Android应用崩溃的应急处理
在我们开发Android应用程序的时候总是难免遇到程序崩溃的问题:(很抱歉,"××"已停止运行.) 每次看到这个问题心都是哇凉哇凉的 一般遇到这样问题,有两种可能: 1.自己的代码 ...
- android 直播评论动画,Android自定义View实现直播点赞特效
由于开发的需要,需要开发类似直播点赞特效的需求,于是自定义View来实现这种效果 案例图: 1.自定义View import android.animation.Animator; import an ...
- android自定义刻度线,Android自定义控件之刻度尺控件
今天我做的是一个自定义刻度尺控件,由于项目需求需要使用刻度尺那样滑动选择,由于对自定义控件的认识还不够深入,于是花了一周多时间才把这个控件给整出来,也是呕心沥血的经历啊,也让我对自定义控件有了自己的认 ...
最新文章
- Linux学习之CentOS(十二)--crontab命令的使用方法
- Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
- 为什么要两次调用encodeURI来解决乱码问题
- Sublime Text 快捷键使用
- ITFriend创业败局(四):菜鸟CEO的自我修养
- 列举ospf的5种报文类型_危险品货物各种包装类型以及装箱技巧
- mysql数据库之事务与存储过程
- 分段线性插值c语言程序_【短道速滑】OpenCV中cvResize函数使用双线性插值缩小图像长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。...
- struts2 jsp提交对象数据要这么干
- 解决Ubuntu18.04下VLC打不开的问题
- Android8.1 源码添加黑名单拦截电话和短信记录
- “谷歌金山词霸”换汤不换药 实验结果令人失望
- 5G移动通信 笔记 - 系统架构与标准体系
- Snapper 快照管理工具
- 凡事预则立不预则废,你有自己的应急基金吗?教你如何理财
- 无法打开模块文件“C:\Users\fkg\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.vb”系统找不到指定文件
- 通过api向外发送报告清单邮件
- 怎么从小事中看“思维突破”
- moments音标_法语助手|法汉-汉法词典 moment是什么意思_moment的中文解释和发音_moment的翻译_moment怎么读...
- 今天我抓了个 HTTPS 的包
热门文章
- 52数学能力测评历年真题及答案(五年级)
- 【读点论文】EfficientFormer: Vision Transformers at MobileNet Speed,运用纯transformer架构对比卷积模型在终端上部署的推理速度
- 将 s1 和 r1 上的启动配置文件上传到服务器进行备份,packettracer综合技能练习261...
- QGIS绿色版工具坐标系设置
- 华为手机linux连接网络设置ip地址,华为路由器(Huawei)默认登录IP地址是多少
- c盘users在哪(c盘users在哪)
- 计算机辅助语文识字教学的优势,开放式识字教学研究
- mes系统多少钱,企业要不要上mes系统?
- 推荐一个超级好用的正则匹配在线的网站
- Chango的数学Shader世界(十四)细线间断,发光闪烁,TAA削弱处理