稍微改进了一下,将 appkey 等参数移动到 token.ini 文件中填写

This commit is contained in:
Haujet Zhao 2020-07-10 23:54:30 +08:00
parent 729ea051b2
commit 02e1098ba2
3 changed files with 50 additions and 22 deletions

View File

@ -29,18 +29,24 @@
(有兴趣的可以改成百度、腾讯、讯飞的 api 试试)。
使用方法很简单:用 python 运行 `run.py` 后,按下 `Caps Lock`(也就是大写锁定键)超过 0.3 秒后,就会开始用阿里云的 api 进行语音识别,松开按键后,会将识别结果自动输入。
使用方法很简单:运行程序后,按下 `Caps Lock`(也就是大写锁定键)超过 0.3 秒后,就会开始用阿里云的 api 进行语音识别,松开按键后,会将识别结果自动输入。
因为使用了阿里云的 api所以需要用户自己到阿里云申请再填到 `token.ini` 中才能正常使用。
对于聊天时候进行快捷输入、写代码时快速加入中文注释非常的方便。
### 视频演示
请到 HacPai 帖子中进行查看:[Caps Wirter 发布:按住大写锁定键,进行语音识别输入](https://hacpai.com/article/1594371212477)
请到 HacPai 帖子中进行查看:[Caps Wirter 发布:按住大写锁定键,进行语音识别输入](https://hacpai.com/article/1594371212477)
### 安装使
### 开箱即
本工具是一个python脚本依赖于以下模块
小白用户,只需要在 Release 界面下载打包好的 exe 文件,运行,会在同级目录生成一个 `token.ini` 文件,在 `token.ini` 中填入你阿里云拥有 **管理智能语音交互NLS** 权限的 **RAM访问控制** 用户的 **Accesskey Id**、**Accesskey Secret** 和智能语音交互语音识别项目的 **appkey** ,就可以正常使用了。详细步骤之后我录一个视频
### 开发使用
本工具是一个python脚本上面小白下载的 Release 其实是用 pyinstaller 导出的 exe 文件,如果你想在源码基础上使用,就需要安装以下模块:
- keyboard
- pyaudio
@ -53,12 +59,12 @@
- pyaudio 在 windows 上不是太好安装,可以先到 [这个链接](https://www.lfd.uci.edu/~gohlke/pythonlibs) 下载 pyaudio 对应版本的 whl 文件,再用 pip 安装
- alibabacloud-nls-python-sdk 不是通过 python 安装,而是通过 [阿里云官方文档的方法](https://help.aliyun.com/document_detail/120693.html) 进行安装。
另外,需要在 `run.py` 中填入阿里云拥有 **管理智能语音交互NLS** 权限的 **RAM访问控制** 用户的 **accessID**、**accessKey** 和智能语音交互语音识别项目的 **appkey**
做完以上步骤后,只要运行 `run.py` 就可以用了!
另外,需要在 `token.ini` 中填入阿里云拥有 **管理智能语音交互NLS** 权限的 **RAM访问控制** 用户的 **accessID**、**accessKey** 和智能语音交互语音识别项目的 **appkey**
本文件夹内有一个 `安装指南` 文件夹,在里面可以找到详细的安装指南,还包括了提前下载的 alibabacloud-nls-python-sdk 和 pyaudio 的 whl 文件。
用 python 运行 `run.py` 后,按下 `Caps Lock`(也就是大写锁定键)超过 0.3 秒后,就会开始用阿里云的 api 进行语音识别,松开按键后,会将识别结果自动输入。
### 后话
因为作者就是本着凑合能用就可以了的心态做这个工具的,所以图形界面什么的也没做,整个工具单纯就一个脚本,功能也就一个,按住大写锁定键开始语音识别,松开后输入结果。目前作者本人已经很满意。

45
run.py
View File

@ -14,10 +14,6 @@ from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
import configparser
""" 在这里填写你的 API 设置 """
accessID = "xxxxxxxxxxxxxxxxxxxxxxxx"
accessKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
appkey = 'xxxxxxxxxxxxxxxx'
"""pyaudio参数"""
@ -48,8 +44,11 @@ class MyCallback(SpeechRecognizerCallback):
print('结果: %s' % (
message['payload']['result']))
result = message['payload']['result']
if result[-1] == '': # 如果最后一个符号是句号,就去掉。
result = result[0:-1]
try:
if result[-1] == '': # 如果最后一个符号是句号,就去掉。
result = result[0:-1]
except Exception as e:
pass
keyboard.write(result) # 输入识别结果
keyboard.press_and_release('caps lock') # 再按下大写锁定键,还原大写锁定
def on_task_failed(self, message):
@ -59,22 +58,16 @@ class MyCallback(SpeechRecognizerCallback):
pass
def get_token():
if not os.path.exists('token.ini'):
init_id = """[Token]
id = 0000000000000000000
expiretime = 0000000000"""
fp = open("token.ini",'w')
fp.write(init_id)
fp.close()
config = configparser.ConfigParser()
config.read_file(open('token.ini'))
token = config.get("Token","Id")
expireTime = config.get("Token","ExpireTime")
accessID = config.get("Token","accessKeyId")
accessKey = config.get("Token","accessKeySecret")
# 要是 token 还有 5 秒过期,那就重新获得一个。
if (int(expireTime) - time.time()) < 5 :
# 创建AcsClient实例
global accessID, accessKey
client = AcsClient(
accessID, # 填写 AccessID
accessKey, # 填写 AccessKey
@ -173,7 +166,27 @@ def recoder(recognizer, p):
if __name__ == '__main__':
print('开始程序')
print('\r\n开始程序\r\n')
if not os.path.exists('token.ini'):
init_id = """[Token]
id = 0000000000000000000
expiretime = 0000000000
accessKeyId = 000000
accessKeySecret = 000000
appkey = 00000"""
fp = open("token.ini",'w')
fp.write(init_id)
fp.close()
input("""\r\n 检测到没有配置文件,所以刚刚已在同级目录生成了 token.ini 配置文件,\r\n
请打开 token.ini 配置文件\r\n
然后填入阿里云的 accesskeyid accesskeysecret, 以及你的语音识别项目的 appkey\r\n
再回到本界面按任意键后回车继续\r\n
如果下面出错了那么就很有可能是 accesskeyid accesskeysecret appkey 填错了\r\n""")
config = configparser.ConfigParser()
config.read_file(open('token.ini'))
appkey = config.get("Token","appkey")
client = ali_speech.NlsClient()
client.set_log_level('WARNING') # 设置 client 输出日志信息的级别DEBUG、INFO、WARNING、ERROR
@ -181,6 +194,8 @@ if __name__ == '__main__':
recognizer = get_recognizer(client, appkey)
p = pyaudio.PyAudio()
print("""\r\n初始化完成,现在可以将本工具最小化,在需要输入的界面,按住 CapsLock 键 0.3 秒后开始说话,松开 CapsLock 键后识别结果会自动输入\r\n""")
keyboard.hook_key('caps lock', on_hotkey)
print('{}//:按住 CapsLock 键 0.3 秒后开始说话...'.format(count), end=' ')
keyboard.wait()

7
token.ini Normal file
View File

@ -0,0 +1,7 @@
[Token]
id = 00000000000000000000
expiretime = 0000000000
accesskeyid = 00000000000000
accesskeysecret = 000000000000000000000000000
appkey = 000000000000000000000