语音输入
点语音按钮说话,识别出的文字填进输入框。在 features.voice 里给了 recognize 才显示。
用法
recognize 开始收音,把本次识别的累计文本交给回调,返回停止函数(也可以返回解析为停止函数的 Promise)。以下假定语音服务每次返回本次识别的完整文本:
配置项
配置项类型默认说明
features.voice.slot
false | ChatkitToolbarSlotName'composer.toolbarEnd'语音按钮的位置;`false` 表示不自动放,由接入方自己摆。在聊天区外使用与主题继承
VoiceInput 可以放在 Chatkit 插槽中;在页面其他位置使用并将文字写入聊天输入框时,需要放在同一 ChatkitProvider 下,并保留已挂载的 Chatkit 输入框。组件即使能独立显示或启动识别,也不意味着已连接到可写入的输入框。
外置时 VoiceInput 自建主题 wrapper,读取 Provider 的 theme.appearance;使用 inherit 或没有显式模式时读取最近 DOM 主题祖先。Provider 的 root 不会复制到这个 wrapper,自定义颜色需命中它自己的作用域,见调整内置功能。
其普通焦点阴影来自基础 Button 的 --chatkit-shadow-focus。系统强制颜色模式下阴影会被移除,该按钮没有专用的系统色 outline;需要高对比度支持时,宿主应补充可见焦点轮廓,见键盘焦点与强制颜色模式。语音服务和麦克风权限由接入实现负责,需结合目标设备检查,不能通过主题配置开启。
recognize 收到的参数
说明
- 识别服务由业务方选择,chatkit 不连任何语音服务。
- 语音按钮默认在工具栏右侧;换位置见调整内置功能。
- 识别出的文字只填进输入框,不会自动发送。
- 每次
onText都以“开始识别前的纯文本 + 本次累计识别文本”更新输入框;分句或增量服务需先自行累积。该过程会把已有引用标签转成纯文本,识别期间手动编辑的内容也可能被下一次结果覆盖。 - 再次点击按钮会调用停止函数;自然结束应调用
onEnd,失败应调用onError。停止后晚到的识别回调会被忽略。 - 手动摆放导出的
<VoiceInput />时,可以通过它的recognize属性提供实现;没有属性或功能配置时会尝试浏览器自带识别。这个回退不会自动开启工具栏的语音功能。