前言

随心译是一款集语音辨认、文本翻译和语音合成于一体的实时翻译利用,反对多国语言间的实时对话翻译与文本翻译,实用于出国旅行、社交交换、语言学习等等场合。

借助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:随心译无广告的专属实时翻译神器相关推荐

  1. android红心点赞动画,Android控件实现直播App特效之点赞飘心动画

    现在市面上直播类的应用可以说是一抓一大把,随随便便就以什么主题来开发个直播App,说白了就想在这领域分杯羹.在使用这些应用过程中其实不难发现,在所有的直播界面,少不了的就是各种打赏.各种点赞.今天自己 ...

  2. android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...

    1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...

  3. android红心点赞动画,Android控件实现直播App点赞飘心动画

    现在市面上直播类的应用可以说是一抓一大把,随随便便就以什么主题来开发个直播App,说白了就想在这领域分杯羹.在使用这些应用过程中其实不难发现,在所有的直播界面,少不了的就是各种打赏.各种点赞.今天自己 ...

  4. android如何自定义viewpager,Android自定义ViewPager实现个性化的图片切换效果

    第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开始让ViewPager来做.时间长了,ViewPager的 ...

  5. Android自定义sleep图,android自定义view实现钟表效果

    本文实例为大家分享了android view实现钟表的具体代码,供大家参考,具体内容如下 先看效果图: 自定义view大家肯定已经不陌生了,所以直接今天直接步入正题:如何利用canvas去绘制出一个钟 ...

  6. [Android]解决Fragment无法使用android:onClick属性

     有过MFC或者WinForm或者WPF经验的程序员一定对于Button的Click事件绑定情有独钟,然而当转移到 Android平台开发的时候会发现,之前的种种便利全都不在,只有看着闹心的set ...

  7. android 程序崩溃处理,Android应用崩溃的应急处理

    在我们开发Android应用程序的时候总是难免遇到程序崩溃的问题:(很抱歉,"××"已停止运行.) 每次看到这个问题心都是哇凉哇凉的 一般遇到这样问题,有两种可能: 1.自己的代码 ...

  8. android 直播评论动画,Android自定义View实现直播点赞特效

    由于开发的需要,需要开发类似直播点赞特效的需求,于是自定义View来实现这种效果 案例图: 1.自定义View import android.animation.Animator; import an ...

  9. android自定义刻度线,Android自定义控件之刻度尺控件

    今天我做的是一个自定义刻度尺控件,由于项目需求需要使用刻度尺那样滑动选择,由于对自定义控件的认识还不够深入,于是花了一周多时间才把这个控件给整出来,也是呕心沥血的经历啊,也让我对自定义控件有了自己的认 ...

最新文章

  1. Linux学习之CentOS(十二)--crontab命令的使用方法
  2. Android 的 ramdisk.img、system.img、userdata.img 作用说明,以及UBoot 系统启动过程
  3. 为什么要两次调用encodeURI来解决乱码问题
  4. Sublime Text 快捷键使用
  5. ITFriend创业败局(四):菜鸟CEO的自我修养
  6. 列举ospf的5种报文类型_危险品货物各种包装类型以及装箱技巧
  7. mysql数据库之事务与存储过程
  8. 分段线性插值c语言程序_【短道速滑】OpenCV中cvResize函数使用双线性插值缩小图像长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。...
  9. struts2 jsp提交对象数据要这么干
  10. 解决Ubuntu18.04下VLC打不开的问题
  11. Android8.1 源码添加黑名单拦截电话和短信记录
  12. “谷歌金山词霸”换汤不换药 实验结果令人失望
  13. 5G移动通信 笔记 - 系统架构与标准体系
  14. Snapper 快照管理工具
  15. 凡事预则立不预则废,你有自己的应急基金吗?教你如何理财
  16. 无法打开模块文件“C:\Users\fkg\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.vb”系统找不到指定文件
  17. 通过api向外发送报告清单邮件
  18. 怎么从小事中看“思维突破”
  19. moments音标_法语助手|法汉-汉法词典 moment是什么意思_moment的中文解释和发音_moment的翻译_moment怎么读...
  20. 今天我抓了个 HTTPS 的包

热门文章

  1. 52数学能力测评历年真题及答案(五年级)
  2. 【读点论文】EfficientFormer: Vision Transformers at MobileNet Speed,运用纯transformer架构对比卷积模型在终端上部署的推理速度
  3. 将 s1 和 r1 上的启动配置文件上传到服务器进行备份,packettracer综合技能练习261...
  4. QGIS绿色版工具坐标系设置
  5. 华为手机linux连接网络设置ip地址,华为路由器(Huawei)默认登录IP地址是多少
  6. c盘users在哪(c盘users在哪)
  7. 计算机辅助语文识字教学的优势,开放式识字教学研究
  8. mes系统多少钱,企业要不要上mes系统?
  9. 推荐一个超级好用的正则匹配在线的网站
  10. Chango的数学Shader世界(十四)细线间断,发光闪烁,TAA削弱处理