又是复习学习熟悉语法的一天。
import speech_recognition as sr
from os import path
from aip import AipSpeech
import sys, os
from pynput.keyboard import Controller,Key,Listener
from tkinter import *
import multiprocessing as mp
AUDIO_FILE = path.join(path.dirname(path.realpath(__file__)), "test.wav")
audio_order=path.join(path.dirname(path.realpath(__file__)), "order.txt")
list=[]#将命令添加至列表
read_dict={}#本地txt命令转换为字典
""" 你的 APPID AK SK """
APP_ID = '*******'
API_KEY = '*******'
SECRET_KEY = '*******'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
#电脑麦克风录音
def reco():
r = sr.Recognizer()
try:
with sr.Microphone(sample_rate=16000) as source:
print("请朗读语音命令")
audio = r.listen(source,timeout=3)
with open(AUDIO_FILE,'wb') as f:
f.write(audio.get_wav_data())
except:
print('暂无录音内容')
#百度语音识别
def asr(filePath):
try:
with open(filePath, 'rb') as fp:
music=fp.read()
result=client.asr(music, 'wav', 16000, {'dev_pid': 1536,})
list.append(result['result'][0])
return result['result'][0]
except:
print('无法识别口令有误')
list.append(1)
#获取指令
def get_order():
fileRead=open(audio_order,'r',encoding='utf-8')
lines=fileRead.readlines()
for line in lines:
line_list=line.split(',')#每行按逗号分隔成列表
id=line_list[0]#取到id
path=line_list[1]#取到name
read_dict[id]=path#此处关键产生键值对,其中key是id
#检测按键
def on_press(key):
try:
if key.char=='c':
reco()
if asr(AUDIO_FILE) in read_dict:
print('正在打开')
os.system(read_dict.get(list[0]))
del list[0]
os.remove(AUDIO_FILE)
print('打开完毕')
else:
print('错误指令重新聆听')
del list[0]
except AttributeError:
print("正在按压:",format(key))
# 开始监听
def start_listen():
with Listener(on_press=on_press) as listener:
get_order()
print('等待指令')
listener.join()
#进程处理
def process():
global p
p = mp.Process(target=start_listen)
p.start()
if __name__ == "__main__":
app=Tk()
app.title('语音小助手')
app.geometry('250x150')
label=Label(app,text='C键唤醒,自动聆听').pack()
button_run=Button(app,text='开启聆听',command=process,width=10,height=10).pack()
app.mainloop()
print('退出')
p.terminate()#进程终止
order.txt(example)
打开QQ,D:\TIMqq\Bin\QQScLauncher.exe
打开音乐,F:\QQ音乐\QQMusic\QQMusic.exe
打开腾讯视频,D:\QQLive\QQLive.exe
打开QQ音乐,F:\QQ音乐\QQMusic\QQMusic.exe
实现功能:c键唤起,聆听3秒,可以实现在任何界面下的唤醒,无弹窗,指令可以写在当前文件夹的order.txt里面,英文逗号隔开,当然也可以实现一些其他功能而非打开应用。