HarmonyOS开发:语音播报功能实战

目录

前言

语音播报功能的重要性

实现语音播报的关键组件

环境搭建

集成语音播报API

[1. 导入模块](#1. 导入模块)

[2. 创建实例](#2. 创建实例)

[3. 调用实例接口](#3. 调用实例接口)

[4. 合成并播放语音](#4. 合成并播放语音)

[5. 停止合成及停止播报](#5. 停止合成及停止播报)

[6. 释放引擎(释放成功后,再次调用createEngine方法会重新创建引擎)](#6. 释放引擎(释放成功后,再次调用createEngine方法会重新创建引擎))

语音播报功能的优化

最后


前言

随着智能设备的普及,语音播报功能已成为提升用户体验的重要手段之一,而且HarmonyOS 作为新一代的智能终端操作系统,提供了强大的开发框架和API,可以让开发者能够轻松实现语音播报功能。在HarmonyOS开发中,实现语音播报功能可以让用户通过语音命令控制设备,同时接收语音反馈,增强交互的自然性和便捷性。那么本文就来详细介绍如何在HarmonyOS应用中实现语音播报功能,包括环境搭建、关键API使用和实际应用示例。

语音播报功能的重要性

在移动应用开发中,语音播报功能对于视力受限用户或在特定场景下无法查看屏幕的用户来说,是一种极为重要的信息获取方式,而且在驾驶、烹饪等双手忙碌的场景中,语音播报也能提供极大的便利,还有就是在支付收款时候的提醒也很重要,这就不需要商家时刻留意自己的收款信息,根据语音播报就可以实时知道收款情况。在鸿蒙应用开发中的语音播报功能同样重要,而且HarmonyOS的语音播报功能不仅能提升应用的可访问性,还能增强用户的交互体验。

实现语音播报的关键组件

上面也介绍到文本转语音服务提供将文本信息转换为语音并进行播报的能力,便于用户与设备进行互动,实现实时语音交互,文本播报。在HarmonyOS中,实现语音播报功能主要依赖于TextToSpeech(TTS)引擎,其实TTS是一种将文本转换为语音的技术,HarmonyOS提供了一套完整的API来控制TTS服务。目前HarmonyOS中的语音播报服务支持的语种为中文,支持的音色为聆小珊女声音色,起始版本为:4.1.0(11)。

环境搭建

在开始编码实现语音播报功能之前,先需要确保你已经配置好了HarmonyOS的开发环境,包括但不限于:

  1. 安装DevEco Studio:下载并安装HarmonyOS官方的集成开发环境(IDE)。
  2. 配置SDK:根据你的目标设备下载并配置相应的SDK。
  3. 创建项目:在DevEco Studio中创建一个新的HarmonyOS项目。

集成语音播报API

HarmonyOS提供了语音播报API,允许开发者将文本转换为语音,下面分享一下集成语音播报API的步骤:

1. 导入模块

在项目中导入语音播报文件:

import { textToSpeech } from '@kit.CoreSpeechKit';

2. 创建实例

创建语音播报实例:

复制代码
let ttsEngine: textToSpeech.TextToSpeechEngine;
let extraParam: Record<string, Object> = {"style": 'interaction-broadcast', "locate": 'CN', "name": 'EngineName'};
let initParamsInfo: textToSpeech.CreateEngineParams = {
  language: 'zh-CN',
  person: 0,
  online: 1,
  extraParams: extraParam
};

3. 调用实例接口

在创建完语音播报实例之后,调用创建引擎实例的接口操作:

复制代码
textToSpeech.createEngine(initParamsInfo, (err: BusinessError, textToSpeechEngine: textToSpeech.TextToSpeechEngine) => {
  if (!err) {
    console.log('Succeeded');
    // 获得引擎实例
    ttsEngine = textToSpeechEngine;
  } else {
  }
});

4. 合成并播放语音

使用语音合成API将文本转换为语音并播放:

复制代码
// 调用speak播报方法。未初始化引擎时调用speak方法,返回错误码1003400007,合成及播报失败
speak(originalText: string, speed: number) {
  // 设置播报相关参数
  let extraParam: Record<string, Object> = {
    "queueMode": 0,
    "speed": speed, // 语速,取值范围[0.5, 2.0]
    "volume": 2,
    "pitch": 1,
    "languageContext": 'zh-CN',
    "audioType": "pcm",
    "soundChannel": 3,
    "playType": 1
  }
  let speakParams: textToSpeech.SpeakParams = {
    requestId: Date.now().toString(), // requestId在同一实例内仅能用一次,请勿重复设置
    extraParams: extraParam
  };
  // 调用speak播报方法
  ttsEngine?.speak(originalText, speakParams);
};

5. 停止合成及停止播报

复制代码
stop() {
  // 调用stop方法停止播报
  ttsEngine?.stop();
};

6. 释放引擎(释放成功后,再次调用createEngine方法会重新创建引擎)

复制代码
shutdown() {
  // 调用release方法释放引擎
  ttsEngine?.shutdown();
};

语音播报功能的优化

为了提升语音播报功能的用户体验,需要对语音播报功能进行优化,这里可以考虑下面几个优化措施:

  • 支持多语言:根据用户的语言偏好设置TTS的语言。
  • 调整语速和音调:提供接口让用户可以调整语音的语速和音调。
  • 错误处理:在TTS服务不可用的时候,提供相应的错误提示。

最后

经过本文对HarmonyOS提供的TTS引擎的使用介绍,想必大家都学了如何实现语音播报功能,而且实现语音播报功能是提升HarmonyOS应用用户体验的有效方式之一。通过集成语音播报API,我们可以轻松地将文本转换为语音,给用户提供更加自然和便捷的交互体验,提升应用的可访问性和用户体验。个人觉得随着技术的不断发展,未来语音交互将在更多场景中发挥重要作用,由于本文提供的实战代码示例只是一个开始,大家可以根据具体需求进行扩展和优化,创造出更加丰富和智能的语音交互体验。

相关推荐
贾伟康2 小时前
【化学实验室|04】HarmonyOS ArkTS 场景选择器实战:让 13 个离线实验的入口、筛选和返回路径保持一致
harmonyos·arkts·canvas·arkui·化学实验
特立独行的猫a3 小时前
仓颉语言GUI开发实战:用仓颉写串口/网络二合一调试助手
网络·ui·gui·harmonyos·tauri·仓颉
hqzing12 小时前
把 glibc 移植到鸿蒙 PC 上:它能用来做什么
华为·harmonyos
OH_TPC18 小时前
HarmonyOS APP开发---“习惯猫“习惯打卡App,需要用到这个库
华为·harmonyos·鸿蒙
熊猫钓鱼>_>20 小时前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
lingyubb1 天前
做短视频配音,想找操作简单、效果好的 AI 配音软件,有哪些可选?
自然语言处理·语音识别·ai配音·多语种
马剑威(威哥爱编程)1 天前
【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集
华为·harmonyos
威哥爱编程1 天前
HarmonyOS 7 Agent 开发实战 04:云端 RAG 搭企业私有知识库问答
agent·harmonyos
威哥爱编程1 天前
HarmonyOS 7 Agent 开发实战 05:流式输出做打字机对话
agent·harmonyos
donk13141 天前
React Native for OpenHarmony 实战:三方库 react-native-circular-action-menu 的鸿蒙化适配指南
javascript·分布式·react native·react.js·wpf·harmonyos