HarmonyOS鸿蒙Next中搜索页面支持语音输入
HarmonyOS鸿蒙Next中搜索页面支持语音输入
介绍
本示例通过监听器识别语音并返回文本实现在搜索页面中,语音识别即语音转文字功能。
效果预览
使用说明
进入应用,点击语音输入按钮,即可实现语音转文字功能。
实现思路
- 首先询问申请麦克风录音权限。
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)
}
})
})
})
}
- 监听器录音识别返回文本。
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) {
}
}
- 使用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
在HarmonyOS Next中,搜索页面支持通过语音输入进行搜索交互。系统内置的语音识别引擎可直接处理用户语音输入,转换为文本后提交至搜索接口。开发者需调用ohos.multimodalInput.voice
接口实现语音输入功能,主要使用startVoiceSearch()
方法激活语音识别,并通过on()
监听识别结果。该功能无需额外权限,但需要用户在系统设置中启用麦克风权限。语音输入支持中文普通话及多种方言识别,识别结果会自动填充至搜索框并触发搜索请求。
更多关于HarmonyOS鸿蒙Next中搜索页面支持语音输入的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个很好的HarmonyOS Next语音搜索实现示例。我来分析下关键点:
-
权限处理很规范,使用requestPermissionsFromUser申请麦克风权限,符合HarmonyOS的安全机制要求。
-
语音识别部分使用了speechRecognizer模块,通过RecognitionListener实现了完整的回调处理:
- onStart/onComplete处理识别状态
- onResult处理识别结果
- 区分了中间结果(isLast=false)和最终结果(isLast=true)
- UI交互采用bindSheet半模态弹窗,体验流畅:
- 支持拖动调节高度(dragBar)
- 设置适当的高度(detents参数)
- 有关闭按钮(showClose)
- 代码结构清晰,将权限申请、监听设置、UI控制分离,便于维护。
这个实现方案充分利用了HarmonyOS的语音识别能力和ArkUI的交互特性,可以作为语音搜索功能的参考实现。开发者可以基于此扩展更多功能,如添加语音指令识别、多语言支持等。