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接口实现语音输入功能,主要使用startVoiceSearch()方法激活语音识别,并通过on()监听识别结果。该功能无需额外权限,但需要用户在系统设置中启用麦克风权限。语音输入支持中文普通话及多种方言识别,识别结果会自动填充至搜索框并触发搜索请求。

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


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

  1. 权限处理很规范,使用requestPermissionsFromUser申请麦克风权限,符合HarmonyOS的安全机制要求。

  2. 语音识别部分使用了speechRecognizer模块,通过RecognitionListener实现了完整的回调处理:

  • onStart/onComplete处理识别状态
  • onResult处理识别结果
  • 区分了中间结果(isLast=false)和最终结果(isLast=true)
  1. UI交互采用bindSheet半模态弹窗,体验流畅:
  • 支持拖动调节高度(dragBar)
  • 设置适当的高度(detents参数)
  • 有关闭按钮(showClose)
  1. 代码结构清晰,将权限申请、监听设置、UI控制分离,便于维护。

这个实现方案充分利用了HarmonyOS的语音识别能力和ArkUI的交互特性,可以作为语音搜索功能的参考实现。开发者可以基于此扩展更多功能,如添加语音指令识别、多语言支持等。

回到顶部