简介

HUAWEI ML Kit Photo-Reader使用华为ML Kit的文本识别,文本翻译和文本转语音功能,将照片中的文字识别出来,进行翻译,并利用文本转语音功能把文字变成语音输出。

您将要做什么

在这个codelabs中,您将完成一个文本识别+翻译+文本转语音的demo工程。

您将会学到什么

硬件设备

软件要求

点击以下链接,下载codelab的demo工程包:

Demo工程包

解压下载的压缩包到本地磁盘(比如D:\mlkit-demo)。

配置您的工程和设备

  1. 从"File"下拉菜单选取"Open"从解压文件的目录...\PhotoReader导入demo工程。
  2. 如果有类似下图的提示弹窗,请点击"OK":
  3. 从gradle文件同步工程:
  4. 如果显示以下信息,表示工程同步成功:

  5. 确保手机已经正确连接至您的电脑
  6. 如果提示"Unknown Device"或者"No device",请在CMD命令窗口执行以下命令重启adb服务:

    adb kill-server and adb start-server

    如果工具栏显示了如下手机图标,说明您的配置已经生效。

添加AGC配置文件

在此步骤中,我们将给APP进行agc文件配置。将"agconnect-services.json"文件拷贝到应用级根目录下:

<!--todo step 1: add authorization of agc-->

AGC相关配置

添加权限

在此步骤中,我们将设置APP必须的权限。将以下配置内容添加至AndroidManifest.xml文件:

AndroidManifest.xml

<!--todo step 2: add authorization of permission --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />

添加文本识别和文本翻译SDK

在此步骤中,我们将集成MLkit提供的文本识别和文本翻译SDK。将以下内容添加至工程的build.gradle中:

// todo step 3: add SDK implementation 'com.huawei.hms:ml-computer-vision-ocr:2.0.1.300' implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:2.0.1.300' implementation 'com.huawei.hms:ml-computer-translate:2.0.1.300'

云端鉴权配置

在此步骤中,我们需要将上一步申请的APIKEY设置到app中,用作云端鉴权。添加以下内容至MainActivity类中的setApiKey方法:

// todo step 4: set ApiKey AGConnectServicesConfig config = AGConnectServicesConfig.fromContext(this.getApplication()); MLApplication.getInstance().setApiKey(config.getString(API_KEY));

创建基于端侧的文本识别器

在此步骤中,我们将在APP中创建文本识别器。将以下内容添加至TextRecognition类中的TextRecognition方法中:

TextRecognition.java

// todo step 5: add on-device text analyzer MLLocalTextSetting setting = new MLLocalTextSetting.Factory() .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE) .setLanguage("zh") .create(); this.textAnalyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting);

将检测图片封装成文本识别SDK支持的数据格式

在此步骤中,我们将检测的图片封装成MLFrame格式,送给SDK处理。将以下内容添加至TextRecognition类中的startTextAnalyzer方法

// todo step 6: initial mlFrame MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();

调用文本识别SDK检测接口进行文本识别

将以下内容添加至TextRecognition类中的startTextAnalyzer方法

// todo step 7: add on-device task Task<MLText> task = this.textAnalyzer.asyncAnalyseFrame(mlFrame);

返回文本识别结果

在此步骤中,我们将在APP中增加返回识别后的结果。将以下内容添加至TextRecognition类的startTextAnalyzer方法task返回成功的回调中

TextRecognition.java

// todo step 8: result mSourceText = mlText.getStringValue();

创建基于云侧的文本翻译器

在此步骤中,我们将在APP中创建文本翻译器。将以下内容添加至TextTranslation类中的createRemoteTranslator方法:

TextTranslation.java

//todo step 9: add Translator analyzer

请参考开发者联盟指导:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/real-time-translation-0000001050040079

调用文本翻译SDK检测接口进行文本翻译

在此步骤中,我们将在以上进行文本识别返回的文本信息传入至TextTranslation类的createRemoteTranslator方法中的文本翻译检测接口中

// todo step 10: add Translator task final Task<String> task = translator.asyncTranslate(mText);

返回文本翻译结果

在此步骤中,我们将在APP中增加返回翻译后的结果。将以下内容添加至TextTranslation类的createRemoteTranslator方法task返回成功的onSuccess回调中,通过Callback回调把翻译结果回传到ReadPhotoActivity进行展示

TextTranslation.java

// todo step 11: Translator result callback.onSuccess(translateText);

集成文本转语音(TTS)SDK

在此步骤中,我们将集成TTS SDK。将以下内容添加至应用级build.gradle中:

//todo step 12:TTS SDK
请参考开发者联盟指导:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/tts-sdk-0000001050122692

创建tts引擎配置器

在此步骤中,我们将在APP设置相关属性。将以下内容添加至TextTTS类中的createTtsEngine方法:

// todo step 13: set tts config MLTtsConfig mlConfigs = new MLTtsConfig(); mlConfigs.setLanguage(language) .setPerson(person) .setSpeed(1.0f) .setVolume(1.0f);

根据引擎配置器,创建tts引擎

在此步骤中,我们将在APP中增加语音合成引擎的创建,并将引擎配置传入引擎.

// todo step 14: add tts mlTtsEngine this.mlTtsEngine = new MLTtsEngine(mlConfigs);

创建语音合成事件处理回调,并传入语音合成引擎。

在此步骤中,我们将把已经在APP中创建好的语音合成事件处理回调传入语音合成引擎。.

// todo step 15:add tts callback
请参考开发者联盟指导:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/ml-tts-0000001050068169

进行语音合成,将文字转换为语音。

在此步骤中,我们将翻译后的文本内容送给tts引擎,完成文本到语音的转换,并读出转换后的音频。

todo step 16:speak

请参考开发者联盟指导:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/ml-tts-0000001050068169

替换包名

在此步骤中,需要将应用的包名替换为申请的agc文件中的package_name字段。

todo step 17:set applicationId. applicationId "package_name in agconnect.json"

运行APP

点击Android Studio工具栏的 Run ()图标,运行APP。

开始体验

恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:

请访问我们的官方网站,以进一步了解HUAWEI ML Kit:

https://developer.huawei.com/consumer/en/hms/huawei-mlkit

本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息:

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/service-introduction-0000001050040017

已复制代码