你曾遇到过这种情况吗?一本小说太长,要花很长时间阅读,但如果有app能自动为你阅读,就会省时很多。因此,将文本转换成语音的工具应运而生。华为机器学习服务(HUAWEI ML Kit)具备语音合成(Text To Speech, TTS)功能,能让app快速实现从文本到语音的转换。TTS可以将文本转换成人声。这也可以通过默认方法实现,但这些方法不能提供自然或真实的声音。TTS服务全球通用,利用深度神经网络对文本进行处理,从而创造出自然的声音,同时也支持多种音色,以增强人声效果。TTS使用了云服务,字符数限制在500个以内,并使用UTF-8编码。
目前支持的音色如下:
视频展示了使用该服务后得到的结果。
视频链接:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201314285827100291
步骤1: 在Android Studio中新建项目。
步骤2: 在app.gradle文件中添加依赖。
implementation ‘com.huawei.hms:ml-computer-voice-tts:1.0.4.300’
步骤3: 在app.gradle文件顶部添加AppGallery Connect插件。
apply plugin: ‘com.huawei.agconnect’
步骤4: 在Activity中创建回调。
var callback: MLTtsCallback = object : MLTtsCallback {
override fun onError(taskId: String, err: MLTtsError) {
}
override fun onWarn(taskId: String, warn: MLTtsWarn) {
}
override fun onRangeStart(taskId: String, start: Int, end: Int) {
}
override fun onEvent(taskId: String, eventName: Int, bundle: Bundle?) {
if (eventName == MLTtsConstants.EVENT_PLAY_STOP) {
val isStop = bundle?.getBoolean(MLTtsConstants.EVENT_PLAY_STOP_INTERRUPTED)
}
}
}
详情如下:
共有4种回调方法:
步骤5: 对象初始化。
mlConfigs = MLTtsConfig()
.setLanguage(MLTtsConstants.TTS_EN_US)
.setPerson(MLTtsConstants.TTS_SPEAKER_FEMALE_EN)
.setSpeed(1.0f)
.setVolume(1.0f)
mlTtsEngine = MLTtsEngine(mlConfigs)
mlTtsEngine.setTtsCallback(callback)
详情如下:
有两种方法可用于创建TTS引擎。
我们通过MLTtsConfig对象使用自定义的TTS引擎:
步骤6: 在Activity中添加以下方法,当用户单击按钮时调用。
private fun startTtsService() {
val id = mlTtsEngine.speak(sourceText,MLTtsEngine.QUEUE_APPEND)
}
详情如下:
sourceText为用户输入的文本。
override fun onPause() {
super.onPause()
mlTtsEngine.stop()
}
override fun onDestroy() {
super.onDestroy()
mlTtsEngine.shutdown()
}
问:TTS服务只支持在华为设备上使用吗?
答:是的。
问:需要上网才能使用TTS服务吗?
答:是的,使用云服务必须连接互联网。
我们尚且在研究的初级阶段。华为ML Kit提供的TTS服务适用于以下场景:新闻阅读、有声小说、股票信息播报、语音导航、视频配音。
希望您喜欢这篇文章,也希望您可以分享使用该服务时的意见或建议。
你可以在Github下载源码。
Github链接:https://github.com/HMS-Core/hms-ml-demo/tree/master/TTSSampleKotlin
原文链接:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201314285827100291
原作者:梦阳