用小姐姐的声音为你指路,实时语音导航功能如何实现?
Posted 华为移动服务
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用小姐姐的声音为你指路,实时语音导航功能如何实现?相关的知识,希望对你有一定的参考价值。
现下的地图应用中,通常都有实时语音导航功能,其主要运用到的能力是路线规划和TTS语音播报。下面,我们将用HMS Core的Map kit和ML kit所提供了对应能力,来详解如何实现导航语音播报功能。
关键能力
地图显示:使用map kit在界面上绘制地图。
路径规划: 使用map kit的路线规划api。
TTS: ML kit中提供了讲文本转化成语音的接口。
集成准备
1、AGC账号注册,项目创建
1)注册成为开发者
注册地址:
https://developer.huawei.com/consumer/en/service/josp/agc/index.html#/?ha_source=hms1
2) 创建应用,添加sha256,开启map/site开关,下载json文件
2、集成map + ML SDK
1)将“agconnect-services.json”文件拷贝到应用级根目录下
- 在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
- 在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
- 如果App中添加了“agconnect-services.json”文件则需要在“buildscript > dependencies”中增加agcp配置。
buildscript {
repositories {
maven { url 'https://developer.huawei.com/repo/' }
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
allprojects {
repositories {
maven { url 'https://developer.huawei.com/repo/' }
google()
jcenter()
}
}
2) 在“dependencies ”中添加如下编译依赖
dependencies {
implementation 'com.huawei.hms:maps:{version}'
implementation 'com.huawei.hms:ml-computer-voice-tts: {version}'
}
3) 在文件头添加配置
apply plugin: 'com.huawei.agconnect'
4) 在android中配置签名。将生成签名证书指纹用的签名文件复制到您工程的app目录下,并在“build.gradle”文件中配置签名
signingConfigs {
release {
// 签名证书
storeFile file("**.**")
// 密钥库口令
storePassword "******"
// 别名
keyAlias "******"
// 密钥口令
keyPassword "******"
v2SigningEnabled true
v2SigningEnabled true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable true
}
debug {
debuggable true
}
}
3、项目中用到的主要代码及功能
1)地图绘制
@Override
public void onMapReady(HuaweiMap huaweiMap) {
hMap = huaweiMap;
hMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Constants.sMylatLng, 1));
hMap.setMyLocationEnabled(true);
hMap.getUiSettings().setMyLocationButtonEnabled(true);
initCluster(huaweiMap);
}
2)在地图上选两个点进行路径规划。
NetworkRequestManager.getWalkingRoutePlanningResult(latLng1, latLng2,
new NetworkRequestManager.OnNetworkListener() {
@Override
public void requestSuccess(String result) {
generateRoute(result);
}
@Override
public void requestFail(String errorMsg) {
Message msg = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("errorMsg", errorMsg);
msg.what = 1;
msg.setData(bundle);
mHandler.sendMessage(msg);
}
});
3). 对规划结果进行处理,转为目标文本,通过TTS播报出来
MLTtsEngine mlTtsEngine;
MLTtsConfig mlConfigs;
mlConfigs = new MLTtsConfig()
// Set the text converted from speech to English.
// MLTtsConstants.TTS_EN_US: converts text to English.
// MLTtsConstants.TTS_ZH_HANS: converts text to Chinese.
.setLanguage(MLTtsConstants.TTS_EN_US)
// Set the English timbre.
// MLTtsConstants.TTS_SPEAKER_FEMALE_ZH: Chinese female voice.
// MLTtsConstants.TTS_SPEAKER_MALE_ZH: Chinese male voice.
.setPerson(MLTtsConstants.TTS_SPEAKER_FEMALE_EN)
// Set the speech speed. Range: 0.2–1.8. 1.0 indicates 1x speed.
.setSpeed(1.0f)
// Set the volume. Range: 0.2–1.8. 1.0 indicates 1x volume.
.setVolume(1.0f);
mlTtsEngine = new MLTtsEngine(mlConfigs);
// Pass the TTS callback to the TTS engine.
mlTtsEngine.setTtsCallback(callback);
String distance = "1.9 km";
String time = "23min";
String begainRoad = "Poortown Road.";
text = getTTStext(distance,text, begainRoad);
mlTtsEngine.speak(text, MLTtsEngine.QUEUE_APPEND);
4、项目成果展示
打开应用,地图展示,绘制默认标记点,一个为起点,另一个为终点。
点击 walking , 开始路线规划,并且规划结束会有语音提示,"Start navigation. The total distance is %s. The estimated duration is %s. The initial road is %s"
>>访问华为机器学习服务官网,了解更多相关内容
>>访问华为地图服务官网,了解更多相关内容
>>华为机器学习服务开源仓库地址:GitHub、Gitee
点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~
以上是关于用小姐姐的声音为你指路,实时语音导航功能如何实现?的主要内容,如果未能解决你的问题,请参考以下文章