用小姐姐的声音为你指路,实时语音导航功能如何实现?

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"

>>访问华为机器学习服务官网,了解更多相关内容
>>访问华为地图服务官网,了解更多相关内容
>>华为机器学习服务开源仓库地址:GitHubGitee

点击右上角头像右方的关注,第一时间了解华为移动服务最新技术~

以上是关于用小姐姐的声音为你指路,实时语音导航功能如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

怎样才能把文字转化成声音

怎样才能把文字转化成声音

高德地图怎样实现实时定位,得到当前地点的坐标,位置

5 秒实现 AI 语音克隆(Python)

threejs中如何实现角色语音实时口型匹配?

华为手机微信语音转文字怎么设置声音