HarmonyOS学习路之开发篇—AI功能开发(语音播报)

这篇具有很好参考价值的文章主要介绍了HarmonyOS学习路之开发篇—AI功能开发(语音播报)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

语音播报概述

语音播报(Text to Speech,下文简称TTS),基于华为智慧引擎(HUAWEI HiAI Engine)中的语音播报引擎,向开发者提供人工智能应用层API。该技术提供将文本转换为语音并进行播报的能力。

约束与限制

  • 支持超长文本播报,最大文本长度为100000个字符。
  • 语音播报不支持多线程调用。

语音播报开发

场景介绍

  • 实时语音交互:生成音频信息用于语音交互。

    例如与智能音箱或手机智能助手的交互,后台会将回答信息以音频方式进行语音播报。

  • 超长文本播报:用于小说、新闻等较长文本的自动朗读。

接口说明

语音播报功能提供了TtsClient类实现文本转语音功能,该类的主要接口如下表所示:

表1 主要接口

接口名

描述

void create(Context context, TtsListener ttsListener)

创建TTS客户端。context为应用的上下文;ttsListener为TTS回调,可以在TtsListener的onEvent方法中获取创建结果(成功或失败,可获取的值详见表2)。

只有在收到创建TTS客户端成功回调之后,才能进行TTS客户端的初始化。

void release()

释放正在使用的TTS引擎。调用此方法会将初始化状态置为false,并结束播报任务,建议在init(TtsParams)前调用。

boolean init(TtsParams ttsParams)

初始化TTS客户端。设置deviceId、deviceType、语速、音量、音调、音色参数,其中deviceId必须设置,否则初始化失败。

boolean setParams(TtsParams ttsParams)

设置参数。支持设置音量、音调、语速、音色四个参数的修改,修改其他值无效,在init(TtsParams)之后调用,否则设置不生效。

boolean setAudioType(AudioManager.AudioVolumeType audioType)

设置音频流类型。目前支持AudioVolumeType.STREAM_MUSIC等九种音频流类型的设置,可在播报前调用。

void speakText(String text, String utteranceId)

合成音频并播报。传入需播报的文本即可合成音频并播报,支持的最大文本长度为512个字符,若文本超长或文本为空将会报错,并将错误结果通过回调TtsListener的onError(String,String)方法传给调用者。utteranceId为播报请求的唯一标识,若utteranceId为空,TTS引擎将为本次请求随机生成utteranceId。

void speakLongText(String longText, String utteranceId)

连续合成并播报超长文本。文本最大支持长度为100000,若文本超过最大支持长度或文本为空将会报错,并将错误结果通过TtsListener的onError(String,String)方法传给调用者。

boolean isSpeaking()

判断是否正在进行TTS播报。如果正在进行TTS播报,返回true;否则,返回false。

void stopSpeak()

停止TTS播报。调用此方法停止播报后,若再次播报,将会从头开始播报,而不是从停止处播报。

Optional<String> getVersion()

获取TTS SDK版本号。

void destroy()

销毁TTS客户端。完成所有任务后,务必调用此方法销毁TTS客户端。

表2 TtsListener中onEvent的eventType对照表

eventType取值

描述

TtsEvent.CREATE_TTS_CLIENT_SUCCESS

创建TTS客户端成功。

TtsEvent.CREATE_TTS_CLIENT_FAILED

创建TTS客户端失败。

TtsEvent.DESTROY_TTS_CLIENT_SUCCESS

销毁TTS客户端成功。

TtsEvent.METHOD_EXECUTE_SUCCESS

方法执行成功或方法执行无异常时,返回此事件类型。对应的方法可以通过pacMap.getIntValue(TtsClient.PAC_MAP_KEY_METHOD_ID)获取。详见表3

TtsEvent.METHOD_EXECUTE_FAILED_REMOTE_EXCEPTION

方法执行失败或异常。对应的方法可以通过pacMap.getIntValue(TtsClient.PAC_MAP_KEY_METHOD_ID)获取。详见表3

TtsEvent.DESTROY_TTS_CLIENT_FAILED

销毁TTS客户端失败或未成功创建TTS客户端时,调用destroy方法,返回此事件类型。

表3 method ID与方法对照表

method Id

方法

TtsClient.METHOD_CREATE

create

TtsClient.METHOD_DESTROY

destroy

TtsClient.METHOD_RELEASE

release

TtsClient.METHOD_SPEAK_LONG_TEXT

speakLongText

TtsClient.METHOD_SPEAK_TEXT

speakText

TtsClient.METHOD_STOP_SPEAK

stopSpeak

开发步骤

导入相关的类。

import ohos.ai.tts.TtsClient; // TTS接口
import ohos.ai.tts.TtsListener; // TTS回调
import ohos.ai.tts.TtsParams; // TTS参数
import ohos.ai.tts.constants.TtsEvent; // TTS事件
import ohos.utils.PacMap; // TTS依赖

创建与TTS服务的连接。context为应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。

说明

以下代码示例中Log.info()为各方法内定义的处理方法举例,已注释。

private static final TtsListener ttsListener = new TtsListener() {
        @Override
        public void onEvent(int eventType, PacMap pacMap) {
            // Log.info("onEvent:" + eventType);
            if (eventType == TtsEvent.CREATE_TTS_CLIENT_SUCCESS) {
                // Log.info("TTS Client create success");
            }
        }
 
        @Override
        public void onStart(String utteranceId) {
            // Log.info(utteranceId + " audio synthesis begins");
        }
 
        @Override
        public void onProgress(String utteranceId, byte[] audioData, int progress) {
            // Log.info(utteranceId + " audio synthesis progress:" + progress);
        }
 
        @Override
        public void onFinish(String utteranceId) {
            // Log.info(utteranceId + " audio synthesis completed");
        }
 
        @Override
        public void onSpeechStart(String utteranceId) {
            // Log.info(utteranceId + " begins to speech");
        }
 
        @Override
        public void onSpeechProgressChanged(String utteranceId, int progress) {
            // Log.info(utteranceId + " speech progress:" + progress);
        }
 
        @Override
        public void onSpeechFinish(String utteranceId) {
            // Log.info(utteranceId + " speech completed");
        }
 
        @Override
        public void onError(String utteranceId, String errorMessage) {
            // Log.info(utteranceId + " errorMessage: " + errorMessage);
        }
};
TtsClient.getInstance().create(context, ttsListener);

在TTS接口创建成功后初始化TTS引擎。

TtsParams ttsParams = new TtsParams();
ttsParams.setDeviceId("your device id");
boolean initResult = TtsClient.getInstance().init(ttsParams);

初始化TTS引擎成功后调用音频转换并播放接口。

if (initResult) {
    TtsClient.getInstance().speakText("欢迎使用语音播报!", null);
}

使用完成后销毁TTS客户端。文章来源地址https://www.toymoban.com/news/detail-510267.html

TtsClient.getInstance().destroy();

到了这里,关于HarmonyOS学习路之开发篇—AI功能开发(语音播报)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS学习路之开发篇—AI功能开发(图像超分辨率)

    针对图片分辨率不足的问题,传统的解决方案是使用双线性或双三次插值的方法来放大图像;而针对图片压缩噪声的问题,传统的解决方案则是通过各种算法实现平滑、去噪。 本SDK使用智能的方法,基于深度神经网络,依托硬件的神经网络加速器,提供适用于移动终端的1x和

    2024年02月11日
    浏览(51)
  • HarmonyOS学习路之开发篇—AI功能开发(二维码生成及文字识别)

    为应用提供丰富的AI(Artificial Intelligence)能力,支持开箱即用。开发者可以灵活、便捷地选择AI能力,让应用变得更加智能。 已开放的AI能力如下表所示: 能力 简介 二维码生成 根据开发者给定的字符串信息和二维码图片尺寸,返回相应的二维码图片字节流。调用方可以通过

    2024年02月11日
    浏览(69)
  • h5开发语音播报功能

    一、使用window自带的api,但是手机浏览器多数不支持,兼容性差(不推荐) 1.使用到了window的speechSynthesis属性,如下如1.1                                                                         图1.1  2.主要用到了播报方法speak()和取消播报

    2024年02月14日
    浏览(51)
  • HarmonyOS学习路之开发篇—流转

    随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常

    2024年02月15日
    浏览(45)
  • HarmonyOS学习路之开发篇—设备管理(位置开发)

    移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置。 当用户处于这些丰富的使用场景中时,系统的位置能力可以提供实时准确的位置数据。对于开发

    2024年02月16日
    浏览(46)
  • HarmonyOS学习路之开发篇—多媒体开发(相机开发 一)

    HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。 相机静态能力 用于描述相机的固有能力的一系列参数,比如朝向、支持的分辨率等信息。 物理相机 物理相机就是独

    2024年02月10日
    浏览(67)
  • HarmonyOS学习路之开发篇—多媒体开发(图像开发 一)

    HarmonyOS图像模块支持图像业务的开发,常见功能如图像解码、图像编码、基本的位图操作、图像编辑等。当然,也支持通过接口组合来实现更复杂的图像处理逻辑。 图像解码 图像解码就是不同的存档格式图片(如JPEG、PNG等)解码为无压缩的位图格式,以方便在应用或者系统

    2024年02月11日
    浏览(49)
  • HarmonyOS学习路之开发篇—多媒体开发(相机开发 二)

    Camera操作类,包括相机预览、录像、拍照等功能接口。 接口名 描述 triggerSingleCapture​(FrameConfig frameConfig) 启动相机帧的单帧捕获。 triggerMultiCapture​(ListFrameConfig frameConfigs) 启动相机帧的多帧捕获。 configure​(CameraConfig config) 配置相机。 flushCaptures​() 停止并清除相机帧的捕获

    2024年02月11日
    浏览(55)
  • HarmonyOS学习路之开发篇—多媒体开发(图像开发 二)

    图像编码就是将PixelMap图像编码成不同存档格式图片,用于后续其他处理,比如保存、传输等。当前仅支持JPEG格式。 ImagePacker主要用于图像编码。 接口名 描述 create() 创建图像打包器实例。 initializePacking(byte[] data, PackingOptions opts) 初始化打包任务,将字节数组设置为打包后输

    2024年02月11日
    浏览(58)
  • HarmonyOS学习路之开发篇—网络与连接(NFC开发 一)

    NFC(Near Field Communication,近距离无线通信技术) 是一种非接触式识别和互联技术,让移动设备、消费类电子产品、PC和智能设备之间可以进行近距离无线通信。 HarmonyOS的NFC提供的功能有: NFC基础查询:在进行NFC功能开发之前,开发者应该先确认设备是否支持NFC功能、NFC是否打

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包