跳到主要内容

语音控制

· 阅读需 5 分钟

基于SSFRPA开发的语音控制

特性介绍

  1. 更便捷的增加命令方式
  2. 支持语音触发自定义快捷键、打开任意应用程序、定位桌面的按钮、操控浏览器 结合rpa可以最大化实现控制电脑的功能
  3. 支持自定义语音命令后打包发布,打包发布后代码不可见,发布后拷贝exe和相关文件即可使用
  4. 使用的语音识别模型也可以自己训练,真正做到从模型到应用全方位可自定义
  5. 基于ssfrpa2.x api稳定可靠,官网后续会增加官方语音控制指令

安装与入门

  1. 从github下载 [https://github.com/SSFRPA/SpeakControl] 语音控制集成环境
  2. 解压缩后在根目录下,点击初始化环境.bat 如图
  3. 运行后如果系统没有安装vscode会自动安装,运行后如图

如图 4. modules底下就是所有的命令
5. 选择main.js 按住ctrl+f5 即可运行语音控制(需要开启麦克风和扬声器)

5分钟快速速了解命令

如何自定义命令

  1. 在modules目录下任意文件夹下(也可以是新建的文件夹),新建一个类似 测试.js的文件,里面输入如下代码
export function run(text) {
console.log("你好,你已经成功触发一个语音控制命令")
}

  1. 双击main.js 按ctrl+f5 后 念 "测试" 此时将在控制台打印出你好,你已经成功触发一个语音控制命令

直接匹配命令

这种命令是需要你完整念指令,比如"打开计算器" "打开记事本"等等,而语音控制是会自动读取module下的所有文件名,匹配符合"打开计算器"指令的文件 比如念 "打开计算器" 将匹配 如图 会自动运行打开计算器.js里面的代码,并自动调用run方法,而run方法里面则是写的打开计算器的代码,通过此种命令可以打开任意应用程序,并给应用程序传递参数

export function run(text) {
ssf.Windows.run("calc.exe", []);
}

前缀命令

这种命令适用于一些前缀的组合词语,比如搜索百度 搜索天气预报,前缀都是搜索,只是后面的词语不一样,可以通过前缀命令大大减少命令的自定义数量

为方便演示,我们以按键回退_.js为例,这个命令是用于触发回退按键,而我们回退有可能要连续删除指定数量的字符,比如 输入的字符串是 abcdefg,我们念按键回退3,会自动删除三个字符,念按键回退5,则会回退5次

export function run(text) {
if (isNumeric(text)) {
//删除指定数量的字符
for (let index = 0; index < parseInt(text); index++) {
ssf.Input.key(ssf.enums.KeyCode.Backspace, ssf.enums.Direction.Click)
}
} else {
console.log("回退的只能是数字,比如回退5")
}
}
//判断是否是数字
function isNumeric(str) {
const num = parseFloat(str);
return !isNaN(num) && Number.isFinite(num);
}

独占命令

独占命令指的类似翻译模式和输入模式这种需要持续输入的命令,这些命令需要使用模式切换去使用 比如念"模式切换翻译模式",此时语音的中文输入结果将自动翻译为英文,独占命令会导致一直处于输入模式, 需要念 "模式切换命令模式"回退命令模式才可以执行其他命令