英语单词学习页面+单词朗读实现 -- 【2】单词朗读实现 ##HarmonyOS SDK AI##

上海张律师
• 阅读 1

​ 注:我需要先强调一下,我的目的不是把官网文档里的东西复制一遍……而是分享自己实际开发过程中遇到的问题和思考

仍然先放一下效果图 英语单词学习页面+单词朗读实现 -- 【2】单词朗读实现 ##HarmonyOS SDK AI##

这里对于单词和例句,都是可以通过点击图片进行播报的

这个功能的原理是通过文字转语音的形式实现的,之前也写过文章分享过在API9下如何进行文字转语音,那是通过第三方的API实现的,需要申请token,请求接口,然后再通过media去播放,整体流程较为复杂,还必须有网络支持,但是在原生鸿蒙下,是支持通过端侧AI,在本地进行文字转语音的输出的,这里使用到的是Core Speech Kit中的文本转语音功能

官网的代码很全,这里我也没必要去贴代码,只是分享一下开发过程中遇到的几个坑

  1. 这个功能属于端侧AI的功能,所以说不能在预览器和模拟器中使用

  2. 关于音量问题

在开发过程中,我对于播报的相关参数是直接照抄了官网文档,即

  let extraParam: Record<string, Object> = {"queueMode": 0, "speed": 1, "volume": 2, "pitch": 1, "languageContext": 'zh-CN',  
"audioType": "pcm", "soundChannel": 3, "playType": 1 };

但是在实际测试中,我发现音量小的几乎可以忽略不计……实际上要不是我是在半夜写的代码,没啥别的声音,否则我真听不到,我尝试将手机音量调到最大,但是仍然没有改变。

我仔细阅读了一下文档,对这里配置的每一个参数都进行了解学习

其中“soundChannel”是音频流类型,其不同的值对应的类型从文档里很难翻到,在Audio Kit的音频管理目录下,即StreamUsage音频流使用类型。通过文档可以看到,3这个数字对应的音频流类型是语音播报,我不知道是不是手机的bug还是其他设置方面的原因,总之我的设备(mate70rs)这个值对应的音量非常的小,我将其改为了1,即媒体或者音乐后,实测音量是跟着手机音量来的,符合开发要求

  1. 关于requestId

原先我按照文档里是把这个参数写死的,但是我发现,如果连续两次进行播放的话,就会报错。

文档中的提示是“requestId在同一实例内仅能用一次,请勿重复设置”,我一开始的理解就是你不能去初始化两个引擎……最后理解下来,就是每一次speek的时候,这个id不能相同,索性我就改成了时间戳了,代码如下:

    let speakParams: textToSpeech.SpeakParams = {
      requestId: new Date().getTime().toString(),
      extraParams: extraParam
    };

点赞
收藏
评论区
推荐文章
徐小夕 徐小夕
3年前
前端: 如何更高效的学习Css? 有哪些库值得推荐?
之前有很多朋友问我如何快速学习css以及有哪些好用的css库,最近也抽出时间思考整理了一下,今天就和大家分享一下我的经验.如何高效学习Css之前在工作中也使用css做过很多有意思的事情,比如用css画图标,写轮播图,写动效,做布局等等,但是这些应用的实现都依赖于html和css基础知识.根据我自己的学习经验,我们需要掌
Wesley13 Wesley13
3年前
Java集合,ConcurrentHashMap底层实现和原理(常用于并发编程)
概述ConcurrentHashMap常用于并发编程,这里就从源码上来分析一下ConcurrentHashMap数据结构和底层原理。在开始之前先介绍一个算法,这个算法和Concurrent的实现是分不开的。CAS算法:CAS是英文单词CompareAndSwap的缩写,翻译过来就是比较并替换。CAS机制当中使用
Wesley13 Wesley13
3年前
JS把字符串存入系统剪贴板
   最近项目需要,要实现复制黏贴功能,之前做好了只能实现自己页面的复制黏贴(也不是真正的复制黏贴是通过投机取巧的,就是复制的时候把数据存入数组,黏贴的时候再把数据取出来),没法实现把数据存入本地的剪贴板然后可以自己一个文档中实现粘贴,所以就找了一下资料,找到了主要的有四种方法: zeroclipboard 、document.execComma
陈杨 陈杨
3个月前
【McCharts】基于鸿蒙ArkTS语法开发的图表组件--折线图
简介大家好,我是陈杨。今天主要是分享一下McCharts组件库中的折线图实现过程,记录并分享自己的一些开发经验,感兴趣的可以互相学习。McCharts组件库是基于鸿蒙ArkTS语法开发,支持API9以上的版本。图表组件已经开源了,大家可以一起参与进来,不管
陈杨 陈杨
3个月前
使用HarmonyOS NEXT实现签名板的功能
简介大家好,我是一只会打代码的羊。今天来分享一篇之前使用ArkTSAPI9版本实现的签名板功能,目前鸿蒙已经推出API12了,对比API9的时候,现在实现一个功能太简单了。这期主要讲一下之前实现功能有多难受,以及如何实现。,现在这套代码也是可以直接迁移到A
上海张律师 上海张律师
16小时前
API9 到 API12,有哪些不同
​HarmonyOS应用开发虽然API9已经属于过时了,但是现在很多学校里教的还是基于API9的鸿蒙开发,当学生需要在毕业设计中使用API12进行开发时,还是需要先掌握一些两者的区别。API9属于“兼容安卓”时代的产物,和API10开始的纯血鸿蒙还是具有一
上海张律师 上海张律师
10小时前
英语单词学习页面+单词朗读实现 -- 【1】页面实现 ##HarmonyOS SDK AI##
​先看一下页面效果整体页面是一个比较简洁的页面,其中有两个特色功能1.对于例句中,能够实现将当前的单词从句子中进行识别并突出显示2.对于单词和句子,可以进行朗读,这个朗读使用的是CoreSpeechKit(基础语音服务),即端侧AI我们分两篇文章来讲解对于
上海张律师 上海张律师
10小时前
如何实现组件截图 -- componentSnapshot
​HarmonyOS应用开发在我开发手里项目的过程中,遇到这么一个功能需求:即用户在完成一系列的学习并通过考试以后,要生成一张证书,这张证书的结构是:一个背景图,上面还有文字、其他图片等,文字和图片都是根据用户信息动态生成的,整个证书在显示的时候是通过St
绣鸾 绣鸾
1年前
Eudic欧路词典 for Mac增强版
是一个功能强大的英语学习工具,它包含了丰富的英语词汇、短语和例句,并提供了发音、例句朗读、单词笔记等功能。多语种支持:欧路词典支持多种语言,包括英语、中文、日语、法语等等,用户可以方便地进行多语言学习。海量词库:欧路词典拥有海量的词库,包括牛津、朗文、柯林
绣鸾 绣鸾
1年前
Eudic欧路词典 4 for Mac(英语学习工具)
是一个功能强大的英语学习工具,它包含了丰富的英语词汇、短语和例句,并提供了发音、例句朗读、单词笔记等功能。多语种支持:欧路词典支持多种语言,包括英语、中文、日语、法语等等,用户可以方便地进行多语言学习。海量词库:欧路词典拥有海量的词库,包括牛津、朗文、柯林