"""
語音控制拳皇97無限能量版,可通關
測試英雄:火神,大招 sasdj或sdsaj
"""import time
import win32api
import win32gui
from win32com.client import constants
import os
import win32com.client
import pythoncom
import win32con
speaker = win32com.client.dispatch("sapi.spvoice")
class speechrecognition(object):
def __init__(self, wordstoadd):
self.speaker = win32com.client.dispatch("sapi.spvoice")
self.listener = win32com.client.dispatch("sapi.spsharedrecognizer")
self.context = self.listener.createrecocontext()
self.grammar = self.context.creategrammar()
self.grammar.dictationsetstate(0)
self.wordsrule = self.grammar.rules.add("wordsrule", constants.sratoplevel + constants.sradynamic, 0)
self.wordsrule.clear()
[self.wordsrule.initialstate.addwordtransition(none, word) for word in wordstoadd]
self.grammar.rules.commit()
self.grammar.cmdsetrulestate("wordsrule", 1)
self.grammar.rules.commit()
self.eventhandler = contextevents(self.context)
self.say("started successfully")
def say(self, phrase):
self.speaker.speak(phrase)
class contextevents(win32com.client.getevents("sapi.spsharedrecocontext")):
def onrecognition(self, streamnumber, streamposition, recognitiontype, result):
newresult = win32com.client.dispatch(result)
print("小夥子你在說 ", newresult.phraseinfo.gettext())
speechstr = newresult.phraseinfo.gettext()
# 下面即為語音識別資訊對應
if speechstr == '大招': # sasdj
for i in range(3000):
win32api.keybd_event(83, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(83, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(65, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(65, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(83, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(83, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(68, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(68, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(74, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(74, 0, win32con.keyeventf_keyup, 0)
time.sleep(0.01) # 持續釋放
elif speechstr == '大蛇': # saj
for i in range(300):
win32api.keybd_event(83, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(83, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(65, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(65, 0, win32con.keyeventf_keyup, 0)
win32api.keybd_event(74, 0, 0, 0)
time.sleep(0.04)
win32api.keybd_event(74, 0, win32con.keyeventf_keyup, 0)
time.sleep(0.01) # 持續釋放
else:
os.system('echo 無此服務')
if __name__ == '__main__':
os.system('taskkill /f /im 語音識別.exe') # 每次啟動之前必須徹底殺死程序
speaker.speak("語音識別開啟")
wordstoadd = [
'大招',
'大蛇',
]speechreco = speechrecognition(wordstoadd)
while true:
pythoncom.pumpwaitingmessages()
語音識別控制遊戲
跟語音識別差不多,只是把所作的命令轉化為api對鍵盤的操作 from win32com.client import constants import os import win32api import win32con import time import win32com.client impor...
Sphinx4語音識別的框架
sphinx4主要由三個基本模組構成 frontend,decoder,linguist。frontend接受訊號的輸入並且轉化為特徵序列。linguist把任何型別的標準語言模型,字典的發音資訊以及一些聲學模型的結構資訊轉換為乙個searchgraph。在decoder 中的searchmanag...
離線語音控制並不等於本地語音識別
木瓜電子可以為國內各大家電產商提供離線語音控制的模組和晶元產品,但是沒有本地語音識別的方案。這兩者區別的地方是什麼呢?針對家電產品控制進行解釋一些這兩者之前的區別。離線語音控制,木瓜電子提供的離線語音控制模組和晶元,很明確這些語音產品的是適合應用在控制家電等裝置的,不需要連線網路進行語音識別,說出命...