Python 语音识别框架

来源:互联网 发布:上门提亲怎么说 知乎 编辑:程序博客网 时间:2024/05/27 01:38
from win32com.client import constantsimport osimport win32com.clientimport pythoncomspeaker = win32com.client.Dispatch("SAPI.SPVOICE")class SpeechRecognition:    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=="张三":            speaker.Speak("zhaodahai  love  fengjie")        elif  speechstr=="你好":            speaker.Speak("hello world")        elif  speechstr=="国庆快乐":            speaker.Speak("Happy   nationalday")        elif  speechstr=="新年快乐":            speaker.Speak("happy  New Year")        elif  speechstr=="李四":            speaker.Speak("a  beauty baby")        elif  speechstr=="王五":            speaker.Speak("a  little boy")        elif  speechstr=="赵六":            speaker.Speak("a  boy  can  coding")        else:            passif __name__ == '__main__':    speaker.Speak("语音识别开启")    wordsToAdd = ["张三",                  "你好",                  "国庆快乐",                  "新年快乐",                  "李四",                  "王五",                  "赵六",]    speechReco = SpeechRecognition(wordsToAdd)    while True:        pythoncom.PumpWaitingMessages()