腾讯云实时 ASR 语音识别集成
大约 1 分钟
腾讯云实时 ASR 语音识别集成
与阿里云并列,经
AsrStreamProtocol.fromTencent()映射为同一套asr_*事件;H5VoiceInput.vue无需按厂商拆分逻辑。
相关笔记
| 文档 | 内容 |
|---|---|
| ../common/ASR流式协议.md | 统一协议 + 腾讯 vendorEvent 对照表 |
| ../common/语音输入-VoiceInput实现链路.md | hold-send、长按消息改字 |
| ../aliyun/ASR语音识别集成.md | 阿里云 NUI 分支 |
| ../README.md | 总览与目录 |
| backup/README.md | 离线源码 |
一、整体架构
我的页 Switch → asrConfig(默认 tencent)
↓ VoiceInput:getAsrTokenUrl() → GET /bus-module/ai/asr/tencent/credential
↓ cordovaPlugin.startStreamVoiceRecognize({ credential })
↓ FirstPlugin:asr_tencent_start / asr_tencent_stop
↓ TencentVoiceRecognizePlugin(QCloud ASR SDK v3)
↓ AsrStreamProtocol.fromTencent → JSON event/text/vendor=tencent_asr
二、后端 STS 凭证
- 类:
TencentAsrCredentialService(issueCredential()) - 接口:
GET /bus-module/ai/asr/tencent/credential - 配置前缀:
ai.tencent.*(与ai.nls.*同级)
ai:
tencent:
secret-id: xxx
secret-key: xxx
app-id: 1234567890
engine-model-type: 16k_zh # 与原生 ENGINE_MODEL_TYPE 一致
sts-duration-seconds: 7200
# sts-region: ap-guangzhou # 可选
返回字段供 H5 组装 options.credential(appId、secretId、secretKey、token 等),永久密钥不下发。
三、Cordova 入参
cordovaPlugin.startStreamVoiceRecognize 在 getAsrVendor() === 'tencent' 时:
| 参数 | 说明 |
|---|---|
options.credential | STS JSON,经 arg2 传入原生 |
| Action | asr_tencent_start / asr_tencent_stop |
阿里云分支为 appKey + token,见 阿里 ASR 文档。
四、Android 要点
| 类 | 说明 |
|---|---|
TencentVoiceRecognizePlugin | AAIClient 生命周期对齐官方 Demo;cancel 后 start 复用实例 |
AsrStreamProtocol | onSliceSuccess→asr_interim,onSegmentSuccess→asr_sentence_end,onSuccess→asr_session_complete |
热词(易踩坑)
控制台热词表需 同时:
setHotWordId(热词表ID)setReinforceHotword(1)— 仅设 ID 不生效(官方 Demo 常注释此行,勿删)
常量位置:TencentVoiceRecognizePlugin 内 HOTWORD_ID、ENGINE_MODEL_TYPE。
五、排障
adb logcat -s TENCENT_ASR
H5 控制台:[ASR] tencent_asr asr_interim ...
| 现象 | 排查 |
|---|---|
| 凭证失败 | ai.tencent 配置、app-id、STS 地域 |
| 无识别结果 | 麦克风权限、RECORD_AUDIO |
| 热词不生效 | setReinforceHotword(1) 是否保留 |
| 与 TTS 冲突 | 开 ASR 前 StreamInputTtsPlugin 会静默停播(FirstPlugin) |