语音合成

win32com.client:系统客户端模块

import win32com.client
dehua = win32com.client.Dispatch(SAPI.SPVOICE)
dehua.Speak("Sunck is a handsome man!")

语言模块

from win32com.client import constants
import os
import win32com.client
import pythoncom

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 + contants.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(win32con.client.getevents("SAPI.SpSharedRecoContext")):
    def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
        newResult = win32com.client.Dispatch(Result)
        print("说:", newResult.PhraseInfo.GetText())
        s = newResult.PhraseInfo.GetText()
        if s == "记事本":
            os.system("notepad")

if _name_ == '_main_':
    wordsToAdd = ["关机", "取消关机", "记事本", "画图板", "写字板", "设置", "关闭记事本"]
    speechReco = SpeechRecognition(wordsToAdd)
    while True:
        pythoncom.PumpWaitingMessages()  
    

 

展开阅读全文

没有更多推荐了,返回首页