ContinuousSpeech 连续语音识别扩展:持续语音识别无需重复启动

« 返回首页

ContinuousSpeech 连续语音识别扩展

介绍

此扩展通过”连续工作模式”改进了标准的 SpeechRecognizer 组件。与原生组件不同,它在启动和结束时不会发出烦人的提示音,并能持续运行而无需重复手动启动。

主要特点

  • 无提示音:启动和结束时没有系统提示音干扰
  • 连续识别:自动重启识别器实现持续语音识别
  • 实时反馈:通过 OnPartialResult 事件提供实时中间识别结果
  • 语言支持:支持设置不同的识别语言

下载

.aix拓展文件:

de.ullisroboterseite.ursai2continuousspeech.aix

.aia示例文件:

ContSpeechTest.aia

版本历史

版本 日期 修改内容
1.0 2021-03-13 初始版本发布
1.1 2022-02-16 修复 Android 11 兼容性问题,增加属性与改进
1.2 2022-09-01 添加语言选择功能

工作原理

状态流程图

状态流程图

扩展内部通过持续重启 SpeechRecognizer 来实现连续识别。这可能会产生几毫秒的识别暂停,但在实际使用中影响不大。

当屏幕销毁时,扩展会自动关闭识别并恢复音量设置。

截图

示例应用界面

示例应用界面

参考

属性 Properties

识别可用 IsRecognitionAvailable
返回系统是否支持语音识别功能。在使用语音识别前应先检查此属性。
语言 Language
指定语音识别的语言。使用 ISO 639-1 语言标签,例如 “en”(英语)、”de”(德语)、”es-MX”(墨西哥西班牙语)、”zh”(中文)等。
启用提示音 SoundEnabled
控制系统提示音的开关状态。设置为 false 可禁用识别开始和结束时的提示音。
版本 Version
返回扩展的版本号。

方法 Methods

启动 Start()
启动连续语音识别。识别器将持续运行,直到调用 Stop() 方法或发生错误。
停止 Stop()
停止语音识别,中断内部重启循环。

事件 Events

部分结果 OnPartialResult(文本)
每识别完大约一个单词后触发此事件,提供中间识别结果。可用于实现实时命令检测。
  • Text:当前识别到的部分文本
识别结果 OnResult(文本)
当检测到说话暂停时触发此事件,提供最终识别结果。触发后识别器会自动重新启动以继续识别。
  • Text:完整的识别文本

使用示例

初始化

初始化代码

在屏幕初始化时启动语音识别:

当 Screen1.Initialize 时
  如果 ContinuousSpeech1.IsRecognitionAvailable 那么
    调用 ContinuousSpeech1.Start

处理部分结果

部分结果处理

在 OnPartialResult 事件中检测语音命令:

当 ContinuousSpeech1.OnPartialResult 时
  调用 CheckCommand
    text = 获取 文本

命令检查

命令检查

实现命令检查逻辑,识别特定的语音命令并执行相应操作。

语音输出后恢复识别

语音输出后处理

当应用需要语音输出(如 TextToSpeech)时,建议临时停止识别以避免干扰:

当 TextToSpeech1.AfterSpeaking 时
  调用 ContinuousSpeech1.Start

处理完整结果

完整结果处理

OnResult 事件在检测到说话暂停后触发,可用于处理完整的语音输入。

示例项目说明

示例应用演示了”将语音命令转换为红外遥控码”的功能:

  1. 在 OnPartialResult 事件中进行实时命令验证
  2. 识别到命令后临时关闭识别,避免后续语音输出被误识别
  3. 执行相应的红外发射操作
  4. 语音输出完成后重新启动识别

注意事项

  1. 权限要求:应用需要 RECORD_AUDIO 权限才能使用语音识别功能
  2. 网络依赖:语音识别通常需要网络连接(除非设备支持离线识别)
  3. 电池消耗:连续语音识别会增加电池消耗,请根据实际需求控制识别时长
  4. 兼容性
    • 已修复 Android 11 兼容性问题
    • 与 UrsAI2IrXmitter 和 UrsAI2KeepAlive 组件兼容
  5. 识别暂停:由于内部重启机制,可能存在几毫秒的识别间隙,但实际使用中影响不大
  6. 自动清理:屏幕销毁时会自动关闭识别并恢复音量设置

语言代码示例

常用的 ISO 639-1 语言代码:

语言 代码
英语 en
德语 de
中文 zh
日语 ja
西班牙语 es
法语 fr
韩语 ko
墨西哥西班牙语 es-MX

原文链接

原版文档:Ullis Roboter Seite - AI2 Continuous Speech

作者:Urs (Ullis Roboter Seite)

文档反馈