自研学习鸿蒙开发中播放单词业务

项目场景:

        一款app里面具有播放单词读音的功能


问题描述:

        在播放英语单词业务这个领域中,确实曾经遭遇了一个相当具有挑战性的难题,那就是怎样切实地确保每个英语单词都能够及时且准确地生成一个对应的 mp3 文件。


原因分析:

        最开始所采用的设计思路是,要为每一个英文单词都专门生成一个独立的 mp3 文件,并且将这些文件妥善地保存到应用的缓存之中。但随之而来的问题却让我们颇为困扰,那就是每当有新的单词被添加进来时,就必须得重新去生成相应的 mp3 文件,而这样的情况必然会导致应用需要进行重新发布,很显然,这种处理方式存在着较大的弊端,是不太可取的。


解决方案:

        经过一番深入的思考和探索后,我们最终确定了这样的解决方案:充分运用某道的在线地址,依据传入的单词,它能够迅速且即时地生成相应的 mp3。同时,借助 AVPlayer 来播放这个由在线链接所生成的 mp3,通过这样的方式,就能够非常完美地适配那些新加入的单词了。无论是新单词的出现还是旧单词的播放需求,都能够得到高效且稳定的处理,极大地提升了用户在英语单词播放方面的体验。


问题描述:

        关于如何对单词语音文件进行完整度、流利度以及标准度等方面的评分检测,这着实是一个需要我们进行深入研究和探讨的重要问题。


解决方案:

        经过对多家公司的相关技术进行了全面而细致的验证工作之后,最终慎重地决定采用某某声公司所提供的 AI 口语评测接口,并且将其与 AudioCapturer 进行紧密的结合来开展录音工作。当录音顺利完成后,我们会将录音文件上传至 AI 评测接口,进而由该接口来完成对结果的详细解析与获取。比如说,当用户录制了某个特定单词的发音后,系统就会通过这个接口以及相关的技术手段,对其发音的完整度、流利度以及标准度进行全方位的综合评估,然后给出相应的准确评分和具有针对性的反馈信息。通过这样的方式,能够切实地帮助用户更加清晰地了解自己在英语口语方面的优势与不足,从而更好地提升自己的英语口语水平,实现不断的进步和成长。

技术难点:

        关于首页 6 大组件的拆分以及相互传值模式的设计,这是一个需要精心考量和深入探索的关键环节。我们经过反复的研究和分析,最终决定采用 @Prop 结合 @Watch 以及传函数的方式来达成目标。通过这种方式,不仅能够合理且高效地完成相关业务需求,还极大地简化了代码之间的耦合程度,让整个系统的架构更加清晰、合理,降低了维护成本和开发难度,为后续的功能扩展和优化奠定了坚实的基础。

        我们对使用 AVPlayer 状态机来控制整个单词播放的流程展开了深入的研究。仔细剖析了其在不同状态下的运作机制,包括播放、暂停、停止等状态之间的转换和协调,以确保能够实现对单词播放过程的精确控制和流畅体验,从而满足用户在这方面的各种需求和期望。

        针对使用 AudioCapturer 来控制整个语音录制的相关技术,我们也投入了大量的精力进行研究。对其录制功能的各个方面进行了细致的分析和测试,包括如何准确地捕捉语音、如何保证录制质量、如何处理录制过程中的各种异常情况等,以实现对语音录制过程的全面掌控和优化。

        在对比研究多家公司的 AI 口语评测接口的过程中,我们发现都没有鸿蒙 SDK。面对这种情况,我们经过深思熟虑,最终采用 http 协议来上传语音文件以完成语音评测业务。通过对不同方案的权衡和选择,找到了最适合我们项目需求的解决方案,确保了语音评测业务的顺利开展和有效运行。

        在录制语音时,对于语音采样率、音频采样深度、声道数、音频编码格式等参数的设置至关重要。这些参数需要与 AI 接口要求的录音文件参数严格相匹配。在实践过程中,我们发现使用 AVRecorder 技术方案无法设置采样深度这个关键参数,为了确保能够满足需求,我们不得不放弃该方案,最终改用 AudioCapturer 来完成技术攻关。通过不断地尝试和优化,我们成功地解决了这个难题,实现了参数的准确匹配和录制功能的有效实现,为整个语音业务的高质量运行提供了有力保障。
 


部分参考:

https://docs.openharmony.cn/pages/v4.1/zh-cn/OpenHarmony-Overview_zh.md

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值