HUAWEI ML Kit Photo-Reader使用华为ML Kit的文本识别,文本翻译和文本转语音功能,将照片中的文字识别出来,进行翻译,并利用文本转语音功能把文字变成语音输出。
在这个codelabs中,您将完成一个文本识别+翻译+文本转语音的demo工程。
点击以下链接,下载codelab的demo工程包:
解压下载的压缩包到本地磁盘(比如D:\mlkit-demo)。
如果显示以下信息,表示工程同步成功:
如果提示"Unknown Device"或者"No device",请在CMD命令窗口执行以下命令重启adb服务:
adb kill-server and adb start-server
如果工具栏显示了如下手机图标,说明您的配置已经生效。
在此步骤中,我们将给APP进行agc文件配置。将"agconnect-services.json"文件拷贝到应用级根目录下:
<!--todo step 1: add authorization of 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" />
在此步骤中,我们将集成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);
在此步骤中,我们将检测的图片封装成MLFrame格式,送给SDK处理。将以下内容添加至TextRecognition类中的startTextAnalyzer方法
// todo step 6: initial mlFrame
MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();
将以下内容添加至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
在此步骤中,我们将在以上进行文本识别返回的文本信息传入至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。将以下内容添加至应用级build.gradle中:
//todo step 12:TTS SDK
请参考开发者联盟指导:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/tts-sdk-0000001050122692
在此步骤中,我们将在APP设置相关属性。将以下内容添加至TextTTS类中的createTtsEngine方法:
// todo step 13: set tts config
MLTtsConfig mlConfigs = new MLTtsConfig();
mlConfigs.setLanguage(language)
.setPerson(person)
.setSpeed(1.0f)
.setVolume(1.0f);
在此步骤中,我们将在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"
点击Android Studio工具栏的 Run ()图标,运行APP。
恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:
请访问我们的官方网站,以进一步了解HUAWEI ML Kit:
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息: