如何使用华为机器学习服务和Kotlin实现语音合成

摘要:
华为的机器学习服务具有语音合成功能,使应用程序能够快速将文本转换为语音。TTS使用云服务,字符数限制为500,并使用UTF-8编码。如果MLTtsConstants EVENT_PLAY_如果STOP值为假,则音频播放正确。创建MLTtsEngine对象并提供上述MLTtsConfig对象。当需要排队系统时,请使用MLTtsEngine。QUEUE_追加如果只需要处理当前操作,请使用MLTtsEngine QUEUE_FLUSH通过onPause()终止MLTtsEngine。华为MLKit提供的TTS服务适用于以下场景:新闻阅读、有声小说、股票信息广播、语音导航和视频配音。
1. 引言

  你曾遇到过这种情况吗?一本小说太长,要花很长时间阅读,但如果有app能自动为你阅读,就会省时很多。因此,将文本转换成语音的工具应运而生。华为机器学习服务(HUAWEI ML Kit)具备语音合成(Text To Speech, TTS)功能,能让app快速实现从文本到语音的转换。TTS可以将文本转换成人声。这也可以通过默认方法实现,但这些方法不能提供自然或真实的声音。TTS服务全球通用,利用深度神经网络对文本进行处理,从而创造出自然的声音,同时也支持多种音色,以增强人声效果。TTS使用了云服务,字符数限制在500个以内,并使用UTF-8编码。
  目前支持的音色如下:

  • 英文-男声
  • 英文-女声
  • 中文-男声
  • 中文-女声
  • 英文+中文-男声
  • 英文+中文-女声
2. 结果展示

  视频展示了使用该服务后得到的结果。
  视频链接:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201314285827100291

3.集成步骤

  步骤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种回调方法:

  • OnError():提示用户发生什么错误,并通过华为分析服务(HUAWEI Analytics Kit)发送分析数据到控制台以进一步验证。
  • OnWarn():如果出现带宽不足之类的警告,回调将在这里出现。
  • OnRangeStart():返回当前播放的片段与文本的映射。
  • OnEvent():当发生新事件时调用,例如,当音频暂停时,您可以在bundle中获得EVENT_PLAY_STOP_INTERRUPTED参数。
    如果MLTtsConstants.EVENT_PLAY_STOP的值是false,则音频播放无误。
    如果MLTtsConstants.EVENT_PLAY_STOP的值是true,则音频会出现中断。

  步骤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引擎:

  • 通过MLTtsConstants.TTS_EN_US将语言设置为英文,也可以通过MLTtsConstants.TTS_ZH_HANS将语言设置为中文。
  • 设置人声。
    英文女声:MLTtsConstantsTTS_SPEAKER_FEMALE_EN
    英文男声:MLTtsConstants.TTS_SPEAKER_MALE_EN
    中文女声:MLTtsConstants.TTS_SPEAKER_FEMALE_ZH
    中文男声:MLTtsConstants.TTS_SPEAKER_MALE_ZH
  • 设置语速,范围:0.2-1.8,1.0表示1倍语速。
  • 设置音量,范围:0.2-1.8,1.0表示1倍音量。
  • 创建MLTtsEngine对象,并提供上述MLTtsConfig对象。
  • 将上述创建的callback对象放入MLTtsEngine。

  步骤6: 在Activity中添加以下方法,当用户单击按钮时调用。

private fun startTtsService() {
   val id = mlTtsEngine.speak(sourceText,MLTtsEngine.QUEUE_APPEND)
 }

  详情如下:
  sourceText为用户输入的文本。

  • 当需要队列系统时,使用MLTtsEngine.QUEUE_APPENDED。当TTS的第一次操作完成,紧接着进行下一次操作。
  • 如果只需处理当前操作,使用MLTtsEngine.QUEUE_FLUSH。
  • 通过onPause(),终止MLTtsEngine。
override fun onPause() {
     super.onPause()
     mlTtsEngine.stop()
 }
  • 通过onDestroy(),释放MLTtsEngine占用的资源。
override fun onDestroy() {
     super.onDestroy()
     mlTtsEngine.shutdown()
 }
4.常见问题

  问:TTS服务只支持在华为设备上使用吗?

  答:是的。

  问:需要上网才能使用TTS服务吗?

  答:是的,使用云服务必须连接互联网。

5.结束语

  我们尚且在研究的初级阶段。华为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

原作者:梦阳

免责声明:文章转载自《如何使用华为机器学习服务和Kotlin实现语音合成》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于Spring的@RequestBody的使用一个漂亮而强大的RecyclerView下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

20款免费备份文件软件

      经常对电脑中资料进行备份的重要性已不用多说,但每次都辛苦地逐个目录拷贝、或花半天时间整理目录和文件、更不能想象重装系统后繁复的系统设置调整。如果你曾经因为这些而对系统备份工作有所迟疑,那么现在让你彻底告别这些顾虑! 1. Areca Backup 7.1.10 Areca Backup 是一个开源的备份软件,用 Java 写成。Areca B...

C#调用WebService

1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 XML:(Extensible Mark...

Alfresco安装与配置图解

Alfresco安装与配置图解 Alfresco是一款开源的企业内容管理系统(ECM),为企业提供了日常的文档管理、工作流(可以和企业目前的OA协同接合使用)、工作记录管理、知识管理、网络内容管理、图片管理等多种功能,所以从功能山观看,相当于MS的sharepoint,目前alfresco对于中文支持的比以前也有了相当的改进。另外,它的架构非常的清晰,功能...

APP专项测试

一、功能测试 功能测试主要根据软件需求说明书或用户需求等资料,编写测试用例,以验证各个功能点的实现情况,具体实施过程参考如下: 根据被测试模块的功能点,设计相应的测试用例进行覆盖,例如涉及到用户输入的地方要考虑到边界,用户使用场景类要考虑到正常和异常的场景,业务相关联的模块需要联合测试等; 随时关注跟踪需求的变化和理解需求,对需求理解有误时及时更改相关测...

Android 本地化适配:RTL(right-to-left) 适配清单

本文首发自公众号:承香墨影(ID:cxmyDev),欢迎关注。 一. 序 越来越多的公司 App,都开始淘金海外,寻找更多的机会。然而海外市场千差万别,无论是市场还是用户的使用习惯,都有诸多的不同。 当你接触一款出海 App 的时候,除了需要了解海外 Google Service 的整个生态圈,还要做好不同语言的适配。语言适配最通用的做法就是根据不同系统...

Chrome DevTools – 键盘和UI快捷键参考

Chrome DevTools有几个内置的快捷键,可以节省你的日常工作的时间。 本指南提供了Chrome DevTools中每个快捷键的快速参考。虽然一些快捷方式在全局范围内可用,但其他的快捷方式用于特定的某些单个面板,并根据它可以使用的位置分解。 您还可以在提示工具中找到快捷方式。将鼠标悬停在某个元素上以显示其提示工具。如果元素有快捷方式,提示工具将会包...