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
模块。以下是关键代码片段:
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语音搜索实现示例。我来分析下关键点:
-
权限处理部分使用了标准的权限申请流程,通过
requestPermissionsFromUser
获取麦克风权限,这是HarmonyOS应用访问敏感设备的必要步骤。 -
语音识别核心是
speechRecognizer.RecognitionListener
接口实现,它提供了完整的语音识别生命周期回调:
onStart
: 识别开始onEvent
: 识别过程事件onResult
: 最重要的结果回调,包含中间和最终识别文本onComplete
: 识别结束
-
UI交互采用了bindSheet半模态弹窗,这是HarmonyOS推荐的交互方式,能保持页面上下文的同时进行语音输入。
-
代码中处理了识别结果的实时更新(
isLast
判断)和UI状态同步,体验流畅。
这个示例完整展示了从权限获取到语音识别结果处理的完整流程,代码结构清晰,是很好的参考实现。开发者可以直接参考这个模式实现语音搜索功能。