HarmonyOS 5.0.0 或以上:实现语音识别转文字与实时输入实战


一、功能简介

本篇讲解如何在 HarmonyOS 中使用语音识别(ASR)模块实现“语音转文字”功能,适用于实时录入、语音搜索、语音笔记、听写系统等场景。


二、能力说明与限制

当前支持方式:
  • 方式 A:调用系统语音输入法启动语音识别(最稳妥)

  • 方式 B:接入华为 HiAI/ML Kit SDK(需接入原生端)

  • 方式 C:借助 WebView 使用浏览器级 SpeechRecognition API(仅部分设备支持)

本篇优先介绍「方式 A」,调用系统语音输入框实现语音转文字


三、页面结构

entry/src/main/ets/pages/SpeechToTextDemo.ets

四、代码演示(系统输入法识别调用)

@Entry
@Component
struct SpeechToTextDemo {
  @State result: string = ''
  @State message: string = ''

  async startSystemVoiceInput() {
    try {
      // 使用系统方式唤起语音输入(输入法内长按语音图标可触发)
      prompt.showToast({
        message: '请点击输入框并使用系统语音输入法'
      })
    } catch (err) {
      this.message = '语音启动失败:' + JSON.stringify(err)
    }
  }

  build() {
    Column() {
      Text('语音转文字(语音输入)')
        .fontSize(20)
        .margin({ bottom: 16 })

      TextArea({
        text: this.result,
        onChange: val => this.result = val
      })
        .placeholder('点击输入框 → 使用语音输入法开始识别')
        .height(140)
        .borderRadius(8)
        .padding(10)
        .backgroundColor('#f5f5f5')
        .fontSize(16)
        .margin({ bottom: 12 })

      Button('启动语音输入提示')
        .onClick(() => this.startSystemVoiceInput())

      If(this.message !== '', () => {
        Text(this.message)
          .fontSize(14)
          .fontColor(Color.Red)
          .margin({ top: 12 })
      })
    }
    .width('100%')
    .padding(20)
  }
}

五、运行效果

  1. 点击按钮提示 → 用户手动点击输入框;

  2. 启动系统输入法(如华为、小米、讯飞输入法)长按语音图标;

  3. 自动转化语音为文字填入 TextArea。


六、常见易错点与解决方案

易错点表现原因解决方案
无法自动识别没反应无调用麦克风权限使用系统语音输入法代替直接调用
输入法不支持语音无入口系统输入法功能限制使用支持语音的输入法(如讯飞、百度、华为)
想实现自动识别用户必须点输入法无原生 API 开放如需自动识别,请接入华为 ML Kit 或使用 WebView 接入 SpeechRecognition

七、进阶建议

  • 使用 WebView + JavaScript 调用浏览器 API 实现实时语音识别(后续将演示);

  • 接入 ML Kit 实现多语言识别、语音分段、命令识别;

  • 结合 TextArea 实现“边说边录”“听写回放”等功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值