MCPcopy Create free account
hub / github.com/ActiveState/code / Sapi4

Class Sapi4

recipes/Python/167487_Windows_SAPI4/recipe-167487.py:14–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12gencache.EnsureModule('{EEE78583-FE22-11D0-8BEF-0060081841DE}', 0, 1, 0)
13
14class Sapi4:
15
16 voice_list = []
17
18 def __init__(self):
19 #init
20 self.SpeedPercent=StringVar()
21 self.PitchPercent=StringVar()
22 self.VolumeLeftPercent=StringVar()
23 self.VolumeRightPercent=StringVar()
24
25 try:
26 self.directss = win32com.client.DispatchWithEvents("{EEE78591-FE22-11D0-8BEF-0060081841DE}", Sapi4Events)
27 voice_no = self.directss.Find(0)
28 print 'Woohoo: have found engine'
29 self.voice = self.directss.Select(voice_no)
30 voice_name = self.directss.ModeName(voice_no)
31 self.sapi_compliant = 1
32 if len(self.voice_list) < 1:
33 self.getVoiceList()
34 self.selectVoice(voice_name)
35 except:
36 print 'Bugger: unable to initialise speech!'
37 #self.quit()
38 return None
39
40 def selectVoice(self, voice_name=''):
41 #select voice
42 voice_index = 0
43 voice_no = 0
44 found = 0
45 for voice_compare in self.voice_list:
46 voice_no = voice_no + 1
47 if voice_compare == voice_name:
48 found = 1
49 break
50 if found == 0:
51 voice_no = 1
52 self.directss.AudioReset()
53
54 try:
55 self.directss.Select(voice_no)
56 self.sapi_compliant = 1
57 except:
58 self.sapi_compliant = 0
59 self.directss.Speak(' ') #don't understand why we need this here but voice doesn't change otherwise
60 self.voice_no = voice_no
61 self.voice_index = voice_no - 1
62 self.voice_name = self.directss.ModeName(voice_no)
63 #print 'Selected voice: ' + self.voice_name
64
65 self.MinSpeed = self.directss.MinSpeed
66 self.MaxSpeed = self.directss.MaxSpeed
67 self.Speed = self.directss.Speed
68 #print 'Speed: from ' + str(self.MinSpeed) + ' to ' + str(self.MaxSpeed) + ' - current ' + str(self.Speed)
69
70 self.MinPitch = self.directss.MinPitch
71 self.MaxPitch = self.directss.MaxPitch

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected