HUAWEI ML Kit提供的"同声传译"服务将实时输入的长语音(时长不超过5小时)实时翻译为不同语种的文本以及语音,并实时输出原语音文本、翻译后的文本以及翻译文本的语音播报。支持中英文互译,支持多种音色语音播报,并将识别结果返回给开发者的App。
在这个Codelab中,您将完成一个同声传译的demo工程。
点击以下链接,下载Codelab的demo工程包:
Demo工程包(目录HDC:\simultaneousInterpretation)
解压下载的压缩包到本地磁盘(比如D:\MLKit-demo)。
1.从"File"下拉菜单选取"Open"从解压文件的目录D:\MLKit-demo\si导入demo工程。
2.如果有类似下图的提示弹窗,请点击"OK":
3.如没有自动同步,应点击同步按钮从gradle文件同步工程:
如果显示以下信息,则代表工程同步成功:
4.确保手机已经正确连接至您的电脑。
如果提示"Unknown Device"或者"No device",请在CMD命令窗口执行以下命令重启adb服务:
adb kill-server
adb start-server
在此步骤中,我们将给App设置相关权限。将以下配置内容添加至AndroidManifest.xml文件:
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
请参见云端鉴权信息使用须知,设置您应用的鉴权信息。
在此步骤中,我们将在App中创建同传识别器。将以下内容添加至MainActivity类中的createFaceAnalyzer方法:
MLSimultaneousInterpretationConfig config = new MLSimultaneousInterpretationConfig
.Factory()
// 设置源语种,目前支持中文和英文
.setSourceLanguage(MLSimultaneousInterpretationConstants.LAN_ZH_CN)
// 设置目标语种,目前支持中文和英文
.setTargetLanguage(MLSimultaneousInterpretationConstants.LAN_EN_US)
// 设置识别类型。支持原始文本+翻译文本+翻译语音
.setResultType(MLSimultaneousInterpretationConstants.RESULT_TYPE_TEXT)
// 设置发音人,支持中、英男声和女声
.setPerson(MLSimultaneousInterpretationConstants.EN_MALE_VOICE)
.create();
MLSimultaneousInterpretationRecognizer mlSimultaneousInterpretationRecognizer = MLSimultaneousInterpretationRecognizer.getInstance();
在此步骤中,我们将在App中增加显示同声传译识别结果的功能。将以下内容添加至MainActivity类的SIRecognitionListener实现同声传译回调类中:详情参考同传api文档。
protected class SIRecognitionListener implements MLSimultaneousInterpretationListener {
@Override
public void onStartListening() {
// 录音器开始接收声音。
}
@Override
public void onVoiceDataReceived(byte[] data) {
// 返回给用户原始的PCM音频流
}
@Override
public void onRecognizingResults(Bundle results) {
// 流式识别结果
results.getString(MLSimultaneousInterpretationConstants.RESULTS_RECOGNIZING);
results.getString(MLSimultaneousInterpretationConstants.RESULTS_TRANS_RECOGNIZING);
}
@Override
public void onResults(Bundle results) {
// 整句识别结果
results.getString(MLSimultaneousInterpretationConstants.RESULTS_RECOGNIZED);
results.getString(MLSimultaneousInterpretationConstants.RESULTS_TRANS_RECOGNIZED);
}
@Override
public void onError(int error, String errorMessage) {
// 识别发生错误后调用该接口。
}
@Override
public void onState(int state, Bundle params) {
// 通知应用状态发生改变。
}
}
// 绑定同传识别器
mlSimultaneousInterpretationRecognizer.setMLSimultaneousInterpretationListener(new SIRecognitionListener());
当配置完毕后,点击开始识别按钮可启动语音识别。
mlSimultaneousInterpretationRecognizer.startRecognizing(config);
当不再使用同声传译功能时,可调用destroy方法释放资源。
mlSimultaneousInterpretationRecognizer.destroy();
点击Android Studio工具栏的Run (
)图标,运行App。
点击开始识别按钮,对着手机讲话,识别结果将会展示在界面上,如您选择了播报同时也会播报结果。
恭喜您,您已经成功完成了此次Codelab任务,并学到了以下技能:
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息:开发指南。