HarmonyOS鸿蒙NEXT中实现搜索页面语音输入示例代码

HarmonyOS鸿蒙NEXT中实现搜索页面语音输入示例代码

介绍

本示例通过监听器识别语音并返回文本实现在搜索页面中,语音识别即语音转文字功能。

搜索页面支持语音输入源码链接

效果预览

图片名称

使用说明

进入应用,点击语音输入按钮,即可实现语音转文字功能。

实现思路

  1. 首先询问申请麦克风录音权限。
async getPermission(): Promise<boolean> {
  return new Promise((resolve, reject) => {
    // 获取录音权限
    this.atManager.requestPermissionsFromUser(
      this.context, ['ohos.permission.MICROPHONE']
    )
      .then((data) => {
        data.authResults.forEach(item => {
          if (item === 0) {
            resolve(true)
          } else {
            reject(false)
          }
        })
      })
  })
}
  1. 监听器录音识别返回文本。
setListener() {
  // 创建回调对象
  let setListener: speechRecognizer.RecognitionListener = {
    // 开始识别成功回调
    onStart: (sessionId: string, eventMessage: string) => {
    },
    // 事件回调
    onEvent: (sessionId: string, eventCode: number, eventMessage: string) => {
    },
    // 识别结果回调,包括中间结果和最终结果
    onResult: (sessionId: string, result: speechRecognizer.SpeechRecognitionResult) => {
      if (result.result) {
        this.voiceText = result.result
      }
      if (result.isLast) {
        setTimeout(() => {
          this.show = false
        }, 1000)
      }
    },
    // 识别完成回调
    onComplete: (sessionId: string, eventMessage: string) => {
    },
  }
  try {
    // 设置回调
    this.arsEngine?.setListener(setListener);
  } catch (e) {
  }
}
  1. 使用bindSheet半模态弹窗启动语音识别。
.bindSheet($$this.show, this.myBuilder(), {
  width: '100%',
  backgroundColor: Color.White,
  showClose: true,
  dragBar: true,
  detents: [300, SheetSize.LARGE],
})

更多关于HarmonyOS鸿蒙NEXT中实现搜索页面语音输入示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS NEXT中实现语音搜索页面,需使用@ohos.multimodalInput.voice模块。以下是关键代码片段:

import voice from '@ohos.multimodalInput.voice';

// 初始化语音引擎
let voiceAssistant = voice.getVoiceAssistant();

// 启动语音识别
voiceAssistant.on('start', () => {
  console.log("语音识别开始");
});

// 获取识别结果
voiceAssistant.on('result', (text: string) => {
  console.log("识别结果: " + text);
  // 将text绑定到搜索框
});

// 开始监听
voiceAssistant.startListening();

需在module.json5中声明ohos.permission.MANAGE_VOICE_KEYWORD权限。注意处理语音服务不可用情况。

更多关于HarmonyOS鸿蒙NEXT中实现搜索页面语音输入示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个很好的HarmonyOS Next语音搜索实现示例。我来分析下关键点:

  1. 权限处理部分使用了标准的权限申请流程,通过requestPermissionsFromUser获取麦克风权限,这是HarmonyOS应用访问敏感设备的必要步骤。

  2. 语音识别核心是speechRecognizer.RecognitionListener接口实现,它提供了完整的语音识别生命周期回调:

  • onStart: 识别开始
  • onEvent: 识别过程事件
  • onResult: 最重要的结果回调,包含中间和最终识别文本
  • onComplete: 识别结束
  1. UI交互采用了bindSheet半模态弹窗,这是HarmonyOS推荐的交互方式,能保持页面上下文的同时进行语音输入。

  2. 代码中处理了识别结果的实时更新(isLast判断)和UI状态同步,体验流畅。

这个示例完整展示了从权限获取到语音识别结果处理的完整流程,代码结构清晰,是很好的参考实现。开发者可以直接参考这个模式实现语音搜索功能。

回到顶部